网络拓扑说明
设备1双网卡机器:
网卡1(公网):网卡名ens33,IP 192.168.200.56
网卡2(内网):网卡名ens36,IP 192.168.120.129
设备2单网卡机器:
网卡1(内网):网卡名ens33,IP 192.168.120.130
设备1的ens36和设备2的ens33可以相互通讯都在一个内网网段内
设备2可以通过设备1上公网原理:设备2把本地网关设置成设备1网卡ens36的IP地址,流量请求发送到设备1的ens36网卡上,ens36把请求转发到ens33网卡上
双网卡机器设置:
开启ipv4转发
vi /etc/sysctl.conf
net.ipv4.ip_forward = 1
[root@template ~]# sysctl -p
配置nat转发(iptables设置)
iptables -t nat -A POSTROUTING -o ens33 -j MASQUERADE
注释:
-t nat: 指定操作的是nat表,用于网络地址转换
-A POSTROUTING: 将规则追加到POSTROUTING链(数据包离开防火墙之前处理)
-o eth1: 匹配出站接口为ens33(公网网卡)的数据包
-j MASQUERADE: 执行MASQUERADE动作(动态源地址转换)
作用:将所有通过ens331出去的数据包的源IP改为ens33的IP地址,实现多台内网机器共享一个公网IP上网
192.168.120.0网段为内网网段,ens33为内网通讯网段
iptables -A FORWARD -i ens36 -o ens33 -j ACCEPT
-A FORWARD: 将规则追加到FORWARD链(处理经过本机转发的数据包)
-i eth0: 匹配入站接口为ens36(内网网卡)的数据包
-o eth1: 匹配出站接口为ens33(公网网卡)的数据包
-j ACCEPT: 允许匹配的数据包通过
作用:允许从内网到公网的转发流量。
iptables -A FORWARD -i ens33 -o ens36 -m state --state RELATED,ESTABLISHED -j ACCEPT
查询规则
[root@template ~]# iptables -t nat -L -n -v
保存规则
service iptables save
systemctl restart iptables
单网卡机器配置
设置默认网关为双网卡机器的内网ip地址
[root@client ~]# ip route add default via 192.168.120.129
查看路由信息
[root@client ~]# ip route
default via 192.168.120.129 dev ens33
192.168.120.0/24 dev ens33 proto kernel scope link src 192.168.120.130 metric 100
配置机器dns
[root@client ~]# echo "nameserver 223.5.5.5" > /etc/resolv.conf
验证配置
在内网机器上测试
[root@client ~]# curl ifconfig.me
220.196.192.83[root@client ~]#