将Linux做成路由器

将Linux做成一个路由器

主机名 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

这样我们的实验就搞定了

posted @ 2024-07-07 15:38  FuShudi  阅读(29)  评论(0编辑  收藏  举报