曾国藩:一勤天下无难事

Linux:配置iptables使内网虚拟机访问公网

2019.02.25

问题

当公网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