Linux:配置iptables使内网虚拟机访问公网
问题
当公网ip地址不够用的时候,或者出于安全目的,虚拟机使用纯内网ip,然后通过nat转发出去,是一个典型的虚拟化网络环境。
解决方法
打开宿主机的内核转发:
echo 1 > /proc/sys/net/ipv4/ip_forward
配置nat
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o br0 -j SNAT --to 外网ip
然后虚拟机网关配置宿主机内网ip,就可以上网了。
注意点:
1 宿主机虚拟机之间的流量是走的forward的链,宿主机的forward链必须全部打开。
2 如果希望外面能访问虚拟机上的应用,可以配置端口映射
- 比如将宿主机的10080映射到虚拟机192.168.1.8的80端口,命令如下:
iptables -t nat -A PREROUTING -d 外网ip -p tcp --10080 -j DNAT --to 192.168.1.8:80
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.