主机名 | IP |
---|---|
oe01 | 192.168.200.170(外网) 192.168.100.164(内网) |
oe02 | 192.168.100.162(内网) |
通过这个规划表,oe02这个主机是只有一个内网网卡的,无法上网,我们需要将oe01这个Linux做成一个路由器,也就是从内网网卡收到的流量转发到外网网卡,然后出去路由 | |
方法有2种,一种是通过iptables,另一种是通过firewalld |
1. oe02测试网络连通性
[root@oe02 ~]# ping www.baidu.com
ping: qq.com: Name or service not known
现在是不通外网的,我们来配只oe01
2. 配置oe01使用firewalld
需要开启内核参数net.ipv4.ip_forward
[root@oe01 ~]# echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
[root@oe01 ~]# sysctl -p
net.ipv4.ip_forward = 1
ipv4的转发就开启了,然后我们还需要开启一个地址伪装
[root@oe01 ~]# firewall-cmd --add-masquerade --permanent
success
[root@oe01 ~]# firewall-cmd --reload
success
这些命令执行报错检查你的防火墙是否开启,如果没有开启是需要开启的
3. oe02配置网络
因为我们现在已经将oe01做成了一个路由器,所以我们的oe01就是oe02的网关
# 删除原先配置
[root@oe02 ~]# nmcli connection delete ens33
Connection 'ens33' (ff2e31ed-ae33-4f04-9a19-7af06f9fe623) successfully deleted.
# 配置新的网卡
[root@oe02 ~]# nmcli connection add ens33 ipv4.addresses 192.168.100.162/24 ipv4.dns 119.29.29.29 ipv4.gateway 192.168.100.164 autoconnect yes type ethernet
[root@oe02 ~]# nmcli connection up ens33
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/5)
现在我们的oe02的网关就指向了oe01的192.168.100.164这个内网网卡,然后我们测试现在oe02的网络
[root@oe02 ~]# ping qq.com
PING qq.com (123.150.76.218) 56(84) bytes of data.
64 bytes from 123.150.76.218 (123.150.76.218): icmp_seq=1 ttl=127 time=16.9 ms
oe02的网络现在就通了
这种方式是通过防火墙来做的,但是一般情况下防火墙都是会被关闭的,所以接下来我们通过iptables来做
3. iptables配置
# 在oe01上操作
[root@oe01 ~]# nmcli connection show
NAME UUID TYPE DEVICE
ens33 ff2e31ed-ae33-4f04-9a19-7af06f9fe623 ethernet ens33
ens34 e2f6a41b-47e7-4706-adab-2b1b46a84149 ethernet ens34
我们的ens33是一个外网网卡,ens34是一个网卡网卡,我们希望的是把ens34上的流量转发到ens33上
# 先关闭防火墙,防火墙关掉之后你的oe02就上不了网了,可以自己试试
[root@oe01 ~]# systemctl stop firewalld
# 允许从 ens34 接口进入并从 ens33 接口出去的流量
iptables -A FORWARD -i ens34 -o ens33 -j ACCEPT
# 设置 NAT 规则,让流量从 ens33 出去时进行地址转换
iptables -t nat -A POSTROUTING -o ens33 -j MASQUERADE
这样我们的iptables也配置完了,测试一下
[root@oe02 ~]# ping qq.com
PING qq.com (112.60.14.252) 56(84) bytes of data.
64 bytes from 112.60.14.252 (112.60.14.252): icmp_seq=1 ttl=127 time=13.2 ms
64 bytes from 112.60.14.252 (112.60.14.252): icmp_seq=2 ttl=127 time=14.0 ms
这样我们的实验就搞定了