路由器 是一种网络设备,用于在不同子网间转发数据包,是互联网的重要设备。Linux 系统因其出色的 TCP/IP 协议支持优势,可以很容易的让 Linux 主机扮演网络路由器的角色。如果一台 Linux 主机包含两块网卡,每块网卡又分别连接不同的子网,那么这台主机通过简单的配置就可以成为连接两个子网的路由器。
本文将演示如何将一台 Linux 主机配置成为简单的路由器。
1] 演示环境
- 操作系统:CentOS 7
- 主机名:iprouter.local
- 网卡1 IP 地址:172.16.200.1
- 网卡2 IP 地址:10.10.10.1
2] 配置网络接口
首先查看一下网络接口状态:
# nmcli device status
图.1 查看 Linux 主机网络接口状态
从图.1 可以看出,主机包含两个网络接口设备,分别为”ens33″和”ens37″,两个设备均已经连接成功,其中”ens33″连接 172.16.200.0/24 网段,为主机公共 IP,”ens37″连接 10.10.10.0/8 网段,为主机私网 IP。
如果主机网络设备没有配置,则可以使用如下命令对其进行设置:
// 连接公共网络 # nmcli connection add con-name ens33 ifname ens33 type ethernet autoconnect yes ip4 172.16.200.1/24 gw4 172.16.200.254nmcli connection modify ens33 ipv4.method manual ipv4.dns 114.114.114.114 ipv6.method ignore # nmcli connection modify ens33 connection.zone external # nmcli connection down ens33 ; nmcli connection up ens33 // 连接私有网络 # nmcli connection add con-name ens37 ifname ens37 type ethernet autoconnect yes ip4 10.10.10.1/8 gw4 10.10.10.1 # nmcli connection modify ens37 ipv4.method manual ipv4.dns 10.10.10.1 ipv6.method ignore # nmcli connection modify ens37 ipv4.never-default yes # nmcli connection modify ens37 connection.zone internal # nmcli connection down ens37 ; nmcli connection up ens373] 配置防火墙
现在,将内部网络设置为默认区域:
# firewall-cmd --set-default-zone=internal # firewall-cmd --list-all # firewall-cmd --list-all --zone=external图.2 查看系统防火墙状态
可以看到,每个网络接口均处于自己的特定区域。
4] 启用 IP 转发
最后,确认系统内核已经启用了 IP 转发功能,就完成了一个简单路由的设置:
# sysctl -a | grep ip_forward如果结果输出中包含”net.ipv4.ip_forward = 1″,则表示系统已经启用了 IP 转发功能。否则需要修改内核参数启用 IP 转发功能。
在”/etc/sysctl.conf”配置文件中有一项名为 net.ipv4.ip_forward 的配置项,是用于配置 Linux 内核 IP 转发的参数。如果其值为0,说明禁用了 IP 转发;将其值设置为1,则启用内核 IP 转发。
需要注意的是,修改”sysctl.conf”文件后需要执行指令”sysctl -p”后新的配置才会生效。
5] 验证路由功能
在私有网络(10.10.10.0/8)网段添加一台主机,IP 地址设置为 10.10.10.150,网关设置为启用了 IP 转发的 Linux 主机;在公共网络(172.16.200.0/24)网段,有一台 Windows 终端,需要通过 Linux 主机访问私有网络的主机,则需要使用如下命令添加一条路由:
C:\> route add 10.10.10.0/8 172.16.200.1 C:\> tracert 10.10.10.150图.3 验证 Linux 主机路由功能
可以看到,此时 CentOS 7 主机已经成功完成 IP 转发功能,实现了简单的路由功能。
No comments:
Post a Comment