本文主要是介绍内网服务器通过另一台能访问公网的服务器实现访问公网, iptables NAT,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一、服务器A,能访问公网
-
网卡eth0, 配置内网IP
vim /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=none DEFROUTE=yes IPV4_FAILURE_FATAL=no NAME="eth0" DEVICE="eth0" ONBOOT="yes" IPADDR=172.16.10.52 # 作为其它内网服务器的网关 NETMASK=255.255.255.0 GATEWAY=10.22.2.123 # 此处设置为能访问公网的IP, 如果还需要配置其他内网网卡,其网关都应该设置为此IP DNS1=114.114.114.114 ZONE=public
网关(GATEWAY)要设置为能访问公网的IP, 其IP地址作为其他内网服务器的网关。
-
网卡eth1配置能连公网的IP
TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=none DEFROUTE=yes IPV4_FAILURE_FATAL=no NAME="eth1" DEVICE="eth1" ONBOOT="yes" IPADDR=10.22.2.123 # 能访问公网的IP NETMASK=255.255.255.0 GATEWAY=10.22.2.254 # 公网网关 DNS1=114.114.114.114 ZONE=public
二、服务器B,只有内网IP,通过服务器A访问公网
- eth0
网关(GATEWAY)为服务器A的内网IP地址。TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=none DEFROUTE=yes IPV4_FAILURE_FATAL=no NAME="eth0" DEVICE="eth0" ONBOOT="yes" IPADDR=172.16.10.162 NETMASK=255.255.255.0 GATEWAY=172.16.10.52 # 服务器A的内网IP地址 DNS1=114.114.114.114 DNS2=8.8.8.8
配置网卡之后需执行service network restart
生效。
三、配置ipv4转发
- 修改服务器A配置文件 /etc/sysctl.conf,修改参数为1
net.ipv4.ip_forward = 1
- 生效
sysctl -p
四、配置服务器A使服务器B及其他内网服务器能访问公网
-
使用firewalld
打开IP地址伪装,firewall-cmd --permanent --zone=public --add-masquerade或者配置服务器A的iptables规则
- 命令
iptables -t nat -A POSTROUTING -s 172.16.10.0/255.255.255.0 -j SNAT --to-source 10.22.2.123
172.16.10.0/255.255.255.0指整个172.16.10.0网段的IP都生效,也可单独指定某台服务器的IP,如:172.16.10.162 - 保存规则
上面的命令即时生效,若需要下次启动也可用,需保存规则:
service iptables save
如果有提示:Unit iptables.service could not be found.
则需安装iptables-services
- 命令
五、DNS解析失败的问题
以上配置之后,通过IP能访问公网,但是使用域名则不行,即使已经配置了dns解析服务器。
还需要在服务器A执行:
iptables -I FORWARD 1 -s 172.16.10.0/24 -j ACCEPT #允许所有源地在172.16.10.0/24的ip经过本机
这篇关于内网服务器通过另一台能访问公网的服务器实现访问公网, iptables NAT的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!