内网服务器通过单台外网服务器实现外网访问,iptables NAT
环境:
servera: 外网服务器
serverb: 内网服务器
servera内网网关(GATEWAY)要设置为外网IP,其IP地址作为其它内网服务器的网关
servera 内网网卡配置 [root@localhost network-scripts]# cat ifcfg-team0 TEAM_CONFIG="{ \"runner\": { \"name\": \"activebackup\" } }" PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=none DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=stable-privacy NAME=team0 UUID=6d3ea3f4-4302-458b-9284-b2ea83f6285b DEVICE=team0 ONBOOT=yes DEVICETYPE=Team IPADDR=192.168.109.110 # 内网网卡IP,作为其它内网服务器网关 PREFIX=24 GATEWAY=10.10.133.147 # 外网网卡IP,如果还需要配置其它内网网卡,网关都要设置为此IP DNS1=114.114.114.114 servera 外网网卡配置 TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=none DEFROUTE=yes IPV4_FAILURE_FATAL=no NAME=ens160 UUID=b58dbc36-1daa-43e9-9425-6b4d702cc41d DEVICE=ens160 ONBOOT=yes IPADDR=10.10.133.147 # 外网网卡IP PREFIX=24 GATEWAY=10.10.133.1 # 外网网关 DNS1=114.114.114.114
serverb 网关(GATEWAY)为servera内网IP地址,配置网卡后需重启网卡生效
serverb 内网网卡配置 [root@192-168-109-115 network-scripts]# cat ifcfg-team0 TEAM_CONFIG="{ \"runner\": { \"name\": \"activebackup\" } }" PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=none DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=stable-privacy NAME=team0 UUID=3af1f9c7-ad26-4680-8245-29dee0ddcda0 DEVICE=team0 ONBOOT=yes DEVICETYPE=Team IPADDR=192.168.109.115 PREFIX=24 GATEWAY=192.168.109.110 # 服务器servera内网IP地址 DNS1=114.114.114.114
配置ipv4转发
修改servera配置文件/etc/sysctl.conf ,修改参数为1
net.ipv4.ip_forward = 1
配置生效: sysctl -p
配置servera使得serverb及其他内网服务器能访问外网
配置servera的iptables规则 [root@localhost network-scripts]# iptables -t nat -A POSTROUTING -s 192.168.109.0/255.255.255.0 -j SNAT --to-source 10.10.133.147 192.168.109.0/255.255.255.0 : 指整个网段都生效,也可单独指定serverb 以上配置后,通过IP能访问外网,使用域名则不行,即使配置了DNS解析服务器,还需要在servera执行 [root@localhost network-scripts]# iptables -I FORWARD 1 -s 192.168.109.0/24 -j ACCEPT # 允许所有源地址在192.168.109.0/24的IP经过本机 保存规则,使得下次开机启动也生效 [root@localhost network-scripts]# service iptables save iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ] # 如果有提示:Unit iptables.service could not be found. 则需安装iptables-services