RHCE 系列:如何设置和测试静态网络路由 - 第 1 部分
RHCE(红帽认证工程师)是红帽公司推出的一项认证,该公司为企业社区提供开源操作系统和软件,并为企业提供培训、支持和咨询服务。
此RHCE(红帽认证工程师)是一项基于绩效的考试(代号EX300),考生需具备负责红帽企业 Linux(RHEL)系统的高级系统管理员所需的额外技能、知识和能力。
重要提示:要获得RHCE认证,必须获得Red Hat 认证系统管理员(RHCSA) 认证。
以下是基于Red Hat Enterprise Linux 7版本考试的考试目标,将在本 RHCE 系列中涵盖:
要查看费用并在您所在国家/地区注册考试,请查看RHCE 认证页面。
在RHCE系列的第 1 部分和下一部分中,我们将介绍静态路由、数据包过滤和网络地址转换原理发挥作用的基本但典型的案例。
请注意,我们不会深入介绍这些内容,而是以有助于迈出第一步并从那里开始构建的方式组织这些内容。
Red Hat Enterprise Linux 7 中的静态路由
现代网络的奇迹之一就是有大量的设备可以连接多台计算机,无论这些计算机的数量相对较少且局限于一个房间,还是位于同一栋建筑物、城市、国家或跨大洲的多台机器。
然而,为了在任何情况下有效地实现这一点,网络数据包需要被路由,或者换句话说,必须以某种方式控制它们从源到目的地所遵循的路径。
静态路由是为网络数据包指定除默认路由之外的路由的过程,默认路由由称为默认网关的网络设备提供。除非通过静态路由另行指定,否则网络数据包将定向到默认网关;使用静态路由时,其他路径将根据预定义标准(例如数据包目的地)定义。
让我们为本教程定义以下场景。我们有一个 Red Hat Enterprise Linux 7 盒子,连接到路由器#1 [192.168.0.1]以访问互联网和192.168.0.0/24中的机器。
第二台路由器(路由器#2)有两个网络接口卡:enp0s3也连接到路由器#1以访问互联网并与 RHEL 7 盒和同一网络中的其他机器进行通信,而另一个(enp0s8)用于授予对10.0.0.0/24网络的访问权限,内部服务(例如 Web 和/或数据库服务器)驻留在该网络。
下图说明了这一场景:
在本文中,我们将专注于在我们的RHEL 7盒上设置路由表,以确保它既可以通过路由器 #1访问互联网,又可以通过路由器 #2访问内部网络。
在RHEL 7中,您将使用ip 命令通过命令行配置和显示设备和路由。这些更改可以在正在运行的系统上立即生效,但由于它们在重新启动后不会持久,我们将使用/etc/sysconfig/network-scripts中的ifcfg-enp0sX和route-enp0sX文件永久保存我们的配置。
首先,让我们打印当前的路由表:
# ip route show
从上面的输出中,我们可以看到以下事实:
- 默认网关的IP地址是192.168.0.1 ,可以通过enp0s3网卡访问。
- 系统启动时,它会启用 zeroconf 路由到169.254.0.0/16(以防万一)。简而言之,如果某台机器设置为通过 DHCP 获取 IP 地址,但由于某种原因未能获取,则会自动为其分配此网络中的地址。最重要的是,此路由将允许我们通过enp0s3与未能从 DHCP 服务器获取 IP 地址的其他机器进行通信。
- 最后,但并非最不重要的一点是,我们可以通过enp0s3与192.168.0.0/24网络内的其他盒子进行通信,其 IP 地址是192.168.0.18。
这些是您在这种设置下必须执行的典型任务。除非另有说明,否则应在路由器 #2中执行以下任务:
确保所有 NIC 均已正确安装:
# ip link show
如果其中一个出现故障,请将其启动:
# ip link set dev enp0s8 up
并为其分配10.0.0.0/24网络内的 IP 地址:
# ip addr add 10.0.0.17 dev enp0s8
糟糕!我们的 IP 地址有误。我们必须删除之前分配的 IP 地址,然后添加正确的 IP 地址 ( 10.0.0.18 ):
# ip addr del 10.0.0.17 dev enp0s8 # ip addr add 10.0.0.18 dev enp0s8
现在,请注意,您只能通过本身已经可达的网关向目标网络添加路由。因此,我们需要为enp0s3分配192.168.0.0/24范围内的 IP 地址,以便我们的 RHEL 7 盒可以与其通信:
# ip addr add 192.168.0.19 dev enp0s3
最后,我们需要启用数据包转发:
# echo "1" > /proc/sys/net/ipv4/ip_forward
并停止/禁用(暂时 – 直到我们在下一篇文章中介绍数据包过滤)防火墙:
# systemctl stop firewalld # systemctl disable firewalld
回到我们的RHEL 7盒(192.168.0.18 ),让我们通过192.168.0.19(路由器 #2中的enp0s3 )配置到10.0.0.0/24的路由:
# ip route add 10.0.0.0/24 via 192.168.0.19
此后,路由表如下所示:
# ip route show
同样,在您尝试访问的10.0.0.0/24中的机器中添加相应的路由:
# ip route add 192.168.0.0/24 via 10.0.0.18
您可以使用ping测试基本连通性:
在RHEL 7框中,运行
# ping -c 4 10.0.0.20
其中10.0.0.20是10.0.0.0/24网络中 Web 服务器的 IP 地址。
在 Web 服务器(10.0.0.20)中,运行
# ping -c 192.168.0.18
其中192.168.0.18是我们的 RHEL 7 机器的 IP 地址。
或者,我们可以使用tcpdump(您可能需要使用yum install tcpdump进行安装)来检查我们的 RHEL 7 盒和10.0.0.20的 Web 服务器之间通过 TCP 的双向通信。
为此,让我们在第一台机器上开始记录:
# tcpdump -qnnvvv -i enp0s3 host 10.0.0.20
并从同一系统的另一个终端telnet到Web 服务器的80端口(假设Apache正在监听该端口;否则,请在以下命令中指明正确的端口):
# telnet 10.0.0.20 80
tcpdump日志应如下所示:
通过查看RHEL 7盒(192.168.0.18)和 Web 服务器(10.0.0.20)之间的双向通信,我们可以知道连接已正确初始化。
请记住,这些更改将在你重新启动系统时消失。如果你想使它们持久,你需要在执行上述命令的同一系统中编辑(或创建,如果它们尚不存在)以下文件。
虽然对于我们的测试用例来说并非绝对必要,但您应该知道/etc/sysconfig/network包含系统范围的网络参数。典型的/etc/sysconfig/network如下所示:
# Enable networking on this system? NETWORKING=yes # Hostname. Should match the value in /etc/hostname HOSTNAME=yourhostnamehere # Default gateway GATEWAY=XXX.XXX.XXX.XXX # Device used to connect to default gateway. Replace X with the appropriate number. GATEWAYDEV=enp0sX
当需要为每个 NIC 设置特定的变量和值时(就像我们对路由器#2 所做的那样),您必须编辑/etc/sysconfig/network-scripts/ifcfg-enp0s3和/etc/sysconfig/network-scripts/ifcfg-enp0s8。
根据我们的案例,
TYPE=Ethernet BOOTPROTO=static IPADDR=192.168.0.19 NETMASK=255.255.255.0 GATEWAY=192.168.0.1 NAME=enp0s3 ONBOOT=yes
和
TYPE=Ethernet BOOTPROTO=static IPADDR=10.0.0.18 NETMASK=255.255.255.0 GATEWAY=10.0.0.1 NAME=enp0s8 ONBOOT=yes
分别为enp0s3和enp0s8。
至于我们的客户端机器(192.168.0.18 )中的路由,我们需要编辑/etc/sysconfig/network-scripts/route-enp0s3:
10.0.0.0/24 via 192.168.0.19 dev enp0s3
现在重新启动系统,您应该在表中看到该路线。
概括
在本文中,我们介绍了Red Hat Enterprise Linux 7中静态路由的基本知识。尽管场景可能有所不同,但此处介绍的案例说明了执行此任务所需的原则和程序。在结束之前,我建议您查看Linux 文档项目网站中“Linux 安全和优化”部分的第 4 章,以了解有关此处涵盖的主题的更多详细信息。
有关保护和优化 Linux 的免费电子书:黑客解决方案 (v.3.0) – 这本超过 800 篇的电子书包含全面的 Linux 安全提示以及如何安全轻松地使用它们来配置基于 Linux 的应用程序和服务。
下一篇文章我们将讨论数据包过滤和网络地址转换,以总结 RHCE 认证所需的网络基本技能。
与往常一样,我们期待您的来信,请随时使用下面的表格留下您的问题、意见和建议。