Written by
arstercz
-
nat转发出网
通过 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 即可正常上网. 有些网络环境的设置支持内网 ip 转发, 在可出网的虚拟机中, 直接按照上述的步骤进行设置, 不同的是 public_ip
修改为内网的 ip 地址.