与其他操作系统不同,Linux系统作为常见的服务器操作系统,其可能会遇到更多样的网络环境。除了常见服务器使用的Internet网络连接外,通常还会有公司内部网络、远程访问相关的网络等,此时就需要正确设置路由,否则无法正确访问。本节将简要介绍如何在Linux系统中设置静态路由。
设置静态路由的前提是网络接口上配置有IP地址等信息,否则路由条目无法生效。在网络接口上配置单个IP地址的相关知识已在第3章中介绍过,此处介绍如何在同一接口上配置多个IP地址的方法。
使用子接口在网络接口上配置多个IP地址是一个比较常见的做法,子接口名字形如eno16777736:1,其中eno16777736是网络接口的名称,“:1”表示这是一个子接口。配置过程如【示例4-2】所示。
【示例4-2】
使用以上命令配置的子接口将在重启后消失,若要重启后继续生效则需要将上述命令写入文件/etc/ec.local中。
CentOS 7.5允许在一个网络接口上配置多个不同IP地址、子网掩码、网关和DNS服务器地址等,但同时只能激活一个配置。多配置在图形界面中可以单击“Applications”,然后在弹出的菜中依次单击“System tools”→“Settings”,打开设置界面,如图4.2所示。
图4.2 设置界面
在设置界面中可以找到CentOS 7.5中几乎所有的常规设置,此时单击“Network”弹出网络设置界面,如图4.3所示。
图4.3 网络设置界面
在网络设置界面中可以看到网络接口相关设置,此时可以单击“Add Profile”按钮为已连接网络连接添加配置文件。添加配置文件的界面如图4.4所示。
图4.4 添加配置文件
在新配置中可以添加诸如802.1x、IPv4等类型网络,以常见的IPv4网络为例,可以在左侧选择IPv4,然后在右侧的“Addresses”中选择“Manual”。之后就可以在下面填入IP地址、子网掩码、网关、DNS、静态路由等信息了。
多次添加即可在同一个网络连接上添加多个配置文件,这些配置文件可以在网络设置界面的右侧看到,如图4.5所示。
图4.5 网络连接的多配置文件
添加了多配置文件后,接下来的任务就是切换配置文件让不同的配置文件在不同的网络环境中生效。切换配置文件需要单击桌面右上角的联网图标菜单,将弹出所有的配置文件列表,如图4.6所示。
图4.6 网络配置文件列表
此时只需要单击对应的配置文件名称,就可以让相应的配置文件生效,如果系统重启就采用上一次生效的配置文件。
无论使用哪种方式为网络接口配置IP地址等信息,只要网络接口接入某个子网,路由表就会立即为子网添加相应的直联路由。可以使用route命令查看路由表验证,如【示例4-3】所示。
【示例4-3】
在【示例4-3】的命令输出中,第二条就是与172.16.45.0子网的直联路由,这是由接口eno16777736的IP配置决定的。如果此接口的IP地址发生变化或有新的接口拥有了IP地址,路由表中的直联路由也会发生变化,如【示例4-4】所示。
【示例4-4】
由以上示例可以看到当接口的IP地址发生改变后,路由表中的直联路由也发生了改变。
在Linux系统中,查看、添加、删除路由的是route命令。其添加删除路由时的基本格式如【示例4-5】所示。
【示例4-5】
route add|dell [-net|-host] ipaddress1 netmask netmask gw ipaddress2|dev
各项参数含义如下:
除以上列举的参数之外,还有一个用于显示路由表时使用的选项n,此选项表示使用IP地址显示而不尝试使用域名。IP地址转换为域名需要解析,因此使用选项n可以快速显示路由表,如【示例4-6】所示。
【示例4-6】
【示例4-6】所示的命令输出了系统内核的路由表,路由表中的几个字段含义如下:
在上面的字段中,Flags路由标记用于指示路由条目的状态,常见的状态标记及含义如下:
route命令还可以用于添加默认路由(通常称为默认网关),但更多的是用于添加静态路由,使用方法如【示例4-7】所示。
【示例4-7】
学习完之前的基础知识之后,可以利用Linux来制作一个路由器。本小节将简单介绍路由器包括的功能及如何将Linux配置成一个实用的路由器。
一个实用的路由器最起码应该包括DHCP、数据包转发、NAT等,DHCP用来为子网中的计算机分配IP地址、网关、DNS等信息;数据包转发是路由器的核心功能,用来将数据包准确地转发到相应的子网;NAT功能用来做地址转换,即将子网发往外部网络的数据包地址做转换。在Linux系统上配置路由器可以采取两个方案,其一是使用Linux自身的内核转发功能、配置DHCP服务并使用防火墙的地址伪装做NAT功能;其二是使用其他路由软件,例如著名的Zebra等。本小节将采用Linux内核的数据包转发功能作为示例讲解。
在本节的路由器配置中,采用的拓扑图如图4.7所示,路由器的一端连接子网192.168.0.0/24。
图4.7 路由拓扑
在开始配置路由器之前,需要先为路由器和子网计算机上的网络连接正确配置IP地址,确保路由器能正常访问外部网络。配置子网计算机时,默认网关应该为192.168.0.1。配置完IP地址后,接下来需要配置内核转发,让内核具有转发数据包的功能,如【示例4-8】所示。
【示例4-8】
#添加内核转发参数 [root@localhost ~]# cat /etc/sysctl.conf …… net.ipv4.ip_forward = 1 #让内核参数生效 [root@localhost ~]# sysctl -p net.ipv4.ip_forward = 1
这样Linux就具备了数据包转发功能,接下来需要让Linux防火墙具备NAT功能,这个功能通常由防火墙iptables来完成,如【示例4-9】所示。
【示例4-9】
#禁用并停止firewalld [root@localhost ~]# systemctl disable firewalld [root@localhost ~]# systemctl stop firewalld #安装iptables防火墙 [root@localhost ~]# yum install -y iptables-services #启用并开启iptables [root@localhost ~]# systemctl start iptables [root@localhost ~]# systemctl enable iptables #在eno16777736接口上开启地址伪装 [root@localhost ~]# iptables -t nat -I POSTROUTING -o eno16777736 -j MASQUERADE
接下来就可以在子网计算机上访问外部网络了,可以通过ping命令、curl访问网址等方式验证。
提示
由于本书的第3章已介绍过DNS、DHCP等知识,因此此处不再赘述,读者可自行参考相关资料配置。