内网服务器通过单台外网服务器实现外网访问,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