将Linux做成一个路由器

💡 原文中文,约2600字,阅读约需6分钟。
📝

内容提要

运维派是国内最早的IT运维技术社区,介绍了将Linux做成路由器的方法,包括使用iptables和firewalld两种方式。通过配置网络和防火墙规则,实现了内网流量转发到外网。文章提供了详细的配置步骤和测试结果。

🔎

延伸解读

两种转发方案的选择依据

文章对比了firewalld和iptables两种实现方式。firewalld通过开启伪装规则并重载即可生效,适合防火墙服务正常运行的场景;而iptables方案需要先关闭firewalld,再手动添加FORWARD和NAT规则,适用于防火墙被禁用或需要精细控制规则的环境。读者可根据实际服务器防火墙状态选择。

内核转发参数是前提

无论使用firewalld还是iptables,都必须先开启内核参数net.ipv4.ip_forward。文章通过修改/etc/sysctl.conf并执行sysctl -p使其生效。若忽略此步骤,即使防火墙规则正确,内网流量也无法被转发到外网,这是配置Linux路由器时最易遗漏的基础环节。

客户端网关指向决定连通性

oe02主机原先无法访问外网,关键在于其网关未指向oe01的内网IP。文章通过nmcli删除旧连接并新建配置,将网关设为192.168.100.164,使oe02的流量经oe01转发。这提示我们,在类似拓扑中,内网主机的网关必须正确指向充当路由器的Linux主机内网地址。

配置后的验证与注意事项

文章在两种方案配置后均使用ping测试外网连通性,并成功收到回复。需要注意的是,关闭firewalld后若未及时添加iptables规则,oe02会暂时断网;此外,firewalld的伪装规则需加--permanent并重载才能持久化。这些细节影响配置的稳定性和可重复性。

❓

Q&A

如何将Linux主机配置为路由器?

可以通过配置iptables或firewalld来将Linux主机设置为路由器,转发内网流量到外网。

使用firewalld配置路由器时需要注意什么?

需要开启内核参数net.ipv4.ip_forward,并添加伪装规则后重载防火墙。

iptables和firewalld的配置有什么区别?

iptables需要关闭防火墙并设置流量转发和NAT规则,而firewalld则通过添加伪装规则来实现。

如何测试oe02主机是否成功连接外网?

可以通过在oe02上执行ping命令,例如ping qq.com,来测试网络连通性。

配置oe01作为路由器时,oe02的网关应该设置为哪个IP?

oe02的网关应设置为oe01的内网IP,即192.168.100.164。

在使用iptables时,如何设置流量转发?

需要使用命令iptables -A FORWARD -i ens34 -o ens33 -j ACCEPT来允许流量转发。

🏷️

标签

➡️

继续阅读