nat转发出网

By | 2014-07-08

通过 iptables/ip6tables 的 nat 转发可以实现内网主机访问公网目的, 转发的主机需要和内网主机互通,需要可以访问公网网络.

IPv4 设置

1.转发机上加一条nat转发

iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth1 -j SNAT --to-source public_ip

eth1 为转发机公网的网卡, public_ip 为公网 ip 地址;

2.开启转发

sysctl -w net.ipv4.ip_forward=1

3. 确保转发机 iptables 存在 FORWARD 规则:

iptables -I FORWARD -d 192.168.1.0/24 -j ACCEPT
iptables -I FORWARD -s 192.168.1.0/24 -j ACCEPT

内网机操作:
在内网主机增加指向到转发机的路由:

ip route add default via 192.168.1.100 dev eth0

192.168.1.100 为转发机内网地址, eth0 为内网机内网网卡;

也可以将路由信息 default via 192.168.1.100 dev eth0 加到 /etc/sysconfig/network-scripts/route-eth0 中永久生效.

IPv6 设置

1.转发机上加一条nat转发, 来源的 ipv6 地址需要路由的地址, 最好是 ULA 地址:

ip6tables -t nat -A POSTROUTING -s fd00:6fef:1001:2100::/64 -o eth1 -j SNAT --to-source 2001:db8::1

eth1 为转发机公网的网卡, public_ip 为公网 ip 地址;

2.开启转发

sysctl -w net.ipv6.conf.all.forwarding = 1

3. 确保转发机 iptables 存在 FORWARD 规则:

iptables -I FORWARD -d fd00:6fef:1001:2100::/64 -j ACCEPT
iptables -I FORWARD -s fd00:6fef:1001:2100::/64 -j ACCEPT

在内网主机增加指向到转发机的路由:

ip route add default via fd00:6fef:1001:2100::1 dev eth0

fd00:6fef:1001:2100::1 为转发机内网地址, eth0 为内网机内网网卡;

总结

另外有些环境下是没有公网地址的, 比如很多的云厂商, 云主机只分配了内网地址, 公网地址则是通过映射的方式实现, 这种情况下就不能使用 nat 转发出网, 这时候就可以借助 brook 或者 proxychans-ng 等工具通过 socks4/socks5 代理转发上网. 比如将 socks5 程序运行在可以上网的机器中, 我们在不能上网的机器中运行 brook 或 proxychans-ng 即可正常上网.

Leave a Reply

Your email address will not be published. Required fields are marked *