Loading

14、iptables_nat源地址转换(内网共享上网)

14.1、环境说明:

1、架构图:


2、架构图说明:

局域网中的两台计算机只能有一台能够访问外网,而这两台计算机之间能相互通信,那么可以配置能访问外网的

那台服务器实现路由器的功能,即实现其他机器的NAT转换,从而使所有机器都能访问外网。


3、说明:

Centos 7 默认的防火墙是 firewalld,安装iptables之前需关闭Firewalld。

(1)停止firewalld 防火墙:

systemctl stop firewalld


(2)禁用firewalld防火墙开机自启动:

systemctl disable firewalld


(3)安装iptables:

yum install -y iptables-services


(4)将原有的 iptables 文件保存一份,避免之前设置的策略丢失:

cp -a /etc/sysconfig/iptables /etc/sysconfig/iptables.bak


14.2、外网服务器A(controller-node1)配置:

1、虚拟机网卡:




2、开启路由转发功能:

(1)临时生效,服务器重启后失效的命令:

[root@controller-node1 ~]# echo 1 >/proc/sys/net/ipv4/ip_forward


(2)长久生效的命令如下。

1)编辑/etc/sysctl.conf 将 net.ipv4.ip_forward = 0 修改为 net.ipv4.ip_forward = 1:

[root@controller-node1 ~]# vim /etc/sysctl.conf

net.ipv4.ip_forward = 1

2)执行sysctl -p命令使配置生效:

[root@controller-node1 ~]# sysctl -p


3、防火墙配置:

(1)启动防火墙,并设置为开机自启:

[root@controller-node1 ~]# systemctl start iptables.service

[root@controller-node1 ~]# systemctl enable iptables.service


(2)清空防火墙规则并添加允许ssh远程进站规则:

[root@controller-node1 ~]# iptables -F

[root@controller-node1 ~]# iptables -X

[root@controller-node1 ~]# iptables -Z

[root@controller-node1 ~]# iptables -A INPUT -p tcp -d 172.16.1.90 --dport 22 -j ACCEPT


(3)链表访问设置:

[root@controller-node1 ~]# iptables -P INPUT DROP

[root@controller-node1 ~]# iptables -P OUTPUT ACCEPT

[root@controller-node1 ~]# iptables -P FORWARD DROP


(4)添加进站规则:

[root@controller-node1 ~]# iptables -A INPUT -p icmp -j ACCEPT

#允许ping

[root@controller-node1 ~]# iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# 该规则表示允许进入的数据包只能是刚刚我发出去的数据包的回应


(5)添加 nat 规则(源地址转换):

[root@controller-node1 ~]# iptables -t nat -A POSTROUTING -o eth0 -s 172.16.1.0/24 -j SNAT --to-source 10.0.0.90

# -o eth0:指定在共享上网哪个网卡接口上做NAT地址转换,外网网卡。

# -s 172.16.1.0/24:指定将哪些内网网段进行映射转换。

# -j SNAT:将源地址进行转换变更。

# --to-source 10.0.0.90:将源地址映射为什么IP地址,代表外网ip。

# 如果上网的IP是动态IP,则使用以下规则:

# iptables -t nat -A POSTROUTING -o eth0 -s 172.16.1.0/24 -j MASQUERADE

# 如果是通过ADSL上网,且公网IP是动态IP,则使用以下规则:

# iptables -t nat -A POSTROUTING -o ppp0 -s 172.16.1.0/24 -j MASQUERADE


(6)添加转发规则:

[root@controller-node1 ~]# iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT

[root@controller-node1 ~]# iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT


(7)保存防火墙规则并重启:

[root@controller-node1 ~]# service iptables save

[root@controller-node1 ~]# systemctl restart iptables.service


(8)查看防火墙规则:

1)查看默认表规则:

2)查看nat表规则:


14.3、内网服务器B(slave-node1)配置:

1、虚拟机网卡:




2、防火墙配置:

(1)启动防火墙,并设置为开机自启:

[root@slave-node1 ~]# systemctl start iptables.service

[root@slave-node1 ~]# systemctl enable iptables.service


(2)清空防火墙规则并添加允许ssh远程进站规则:

[root@slave-node1 ~]# iptables -F

[root@slave-node1 ~]# iptables -X

[root@slave-node1 ~]# iptables -Z

[root@slave-node1 ~]# iptables -A INPUT -p tcp --dport 22 -j ACCEPT


(3)链表访问设置:

[root@slave-node1 ~]# iptables -P INPUT DROP

[root@slave-node1 ~]# iptables -P OUTPUT ACCEPT

[root@slave-node1 ~]# iptables -P FORWARD DROP


(4)添加进站规则:

[root@slave-node1 ~]# iptables -A INPUT -p icmp -j ACCEPT

# 允许ping

[root@slave-node1 ~]# iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# 该规则表示允许进入的数据包只能是刚刚我发出去的数据包的回应


(5)保存防火墙规则并重启:

[root@slave-node1 ~]# service iptables save

[root@slave-node1 ~]# systemctl restart iptables.service


(6)查看防火墙默认表规则:


3、在需要上外网的服务器B(slave-node1)上,修改内网网卡eth0的默认网关为172.16.1.90:

[root@slave-node1 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0

TYPE=Ethernet

PROXY_METHOD=none

BROWSER_ONLY=no

BOOTPROTO=static

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=eth0

DEVICE=eth0

ONBOOT=yes

IPADDR=172.16.1.91

PREFIX=24

GATEWAY=172.16.1.90

IPV6_PRIVACY=no

DNS1=114.114.114.114


4、重启网卡:

[root@slave-node1 ~]# systemctl restart network.service


5、查看路由:


14.4、测试:

1、B(slave-node1)服务器ping 百度,能ping 同,说明测试成功:


2、B(slave-node1)服务器安装httpd服务成功,说明测试成功:

[root@slave-node1 ~]# systemctl start httpd

#启动httpd

[root@slave-node1 ~]# netstat -tunlp|grep 80

tcp6 0 0 :::80 :::* LISTEN 1574/httpd
















posted @ 2020-02-21 19:00  云起时。  阅读(1347)  评论(0编辑  收藏  举报