正如我们在联邦经济竞争法的前面的教程预料(Linux基金会认证工程师 )系列,在这篇文章中,我们将动态和静态的具体应用的讨论IP流量的路由。
Linux基础认证工程师 - 第10部分
Linux基础认证计划简介
首先,首先,让我们得到一些定义:
- 在简单的话,一个包是用于传输网络内的信息的基本单元。 使用TCP / IP作为网络协议的网络遵循相同的数据传输规则:实际信息被分为由数据和应发送到的地址组成的数据包。
- 路由是从源代码“ 指导 ”中的数据到目标网络内的过程。
- 静态路由 ,需要手动配置的一套在路由表中定义的规则。 这些规则是固定的,并且用于定义分组在从一个机器到另一个机器传播时必须经历的方式。
- 动态路由 ,或智能路由 (如果希望),意味着该系统可以自动改变,根据需要,该路由的分组如下。
高级IP和网络设备配置
该包iproute提供了一套工具来管理,我们将在这篇文章,因为它们代表更换的传统工具,如使用网络和交通管制的ifconfig和路线 。
在iproute套件的核心实用程序简称IP。 其基本语法如下:
# ip object command
凡客体只能是下列之一(仅示出最频繁的对象-你可以参考man IP的完整列表):
- 链接 :网络设备。
- 地址 :协议(IP或IPv6)的设备上解决。
- 路线 :路由表条目。
- 规则 :如果在路由策略数据库的规则。
而命令表示可以对对象执行特定的操作。 您可以运行以下命令来显示可应用于特定对象的命令的完整列表:
# ip object help
例如,
# ip link help
IP命令帮助
以上图像显示,例如,您可以使用以下命令更改网络接口的状态:
# ip link set interface {up | down}
对于“IP”命令,更多的例子,阅读10有用的“IP”命令来配置IP地址
示例1:禁用和启用网络接口
在这个例子中,我们将禁用和启用的eth1:
# ip link show # ip link set eth1 down # ip link show
禁用eth0接口
如果要重新启用eth1,
# ip link set eth1 up
而不是显示所有的网络接口,我们可以指定其中之一:
# ip link show eth1
其中将返回eth1的所有信息。
示例2:显示主路由表
您可以使用以下3个命令之一查看当前主路由表:
# ip route show # route -n # netstat -rn
检查Linux路由表
三个命令的输出中的第一列指示目标网络。 的IP路由展(以下关键字DEV)的产量也提出了作为物理网关到这些网络的网络设备。
虽然优于路线时下ip命令 ,你仍然可以参考男人的IP路由和路由男子在列的其余部分的详细说明。
示例3:使用Linux服务器在两个专用网络之间路由数据包
我们要路由ICMP(平)从DEV2包dev4和周围的其他方法,以及(注意,这两个客户机在不同的网络)。 每个NIC的名称及其对应的IPv4地址都放在方括号中。
我们的测试环境如下:
Client 1: CentOS 7 [enp0s3: 192.168.0.17/24] - dev1 Router: Debian Wheezy 7.7 [eth0: 192.168.0.15/24, eth1: 10.0.0.15/24] - dev2 Client 2: openSUSE 13.2 [enp0s3: 10.0.0.18/24] - dev4
让我们在dev1(CentOS框)中查看路由表:
# ip route show
然后对其进行修改,以便利用其enp0s3 NIC和10.0.0.0/24的网络中的连接到192.168.0.15访问主机:
# ip route add 10.0.0.0/24 via 192.168.0.15 dev enp0s3
其中基本上读为“通过enp0s3网络接口将路由添加到10.0.0.0/24网络,使用192.168.0.15作为网关”。
在Linux中路由网络
同样在dev4(openSUSE框)中ping 192.168.0.0/24网络中的主机:
# ip route add 192.168.0.0/24 via 10.0.0.15 dev enp0s3
Linux中的网络路由
最后,我们需要在我们的Debian路由器中启用转发:
# echo 1 > /proc/sys/net/ipv4/ip_forward
现在让我们ping:
检查网络路由
和,
路由Ping状态
为了使这些设置在引导执着,编辑/etc/sysctl.conf在路由器上,并确保把net.ipv4.ip_forward变量如下设置为true:
net.ipv4.ip_forward = 1
此外,在配置两个客户端的NIC(寻找中在openSUSE和/ etc / sysconfig / network中的脚本 在/ etc / sysconfig / network中在CentOS配置文件-在两种情况下,它被称为的ifcfg-enp0s3)。
以下是openSUSE框中的配置文件:
BOOTPROTO=static BROADCAST=10.0.0.255 IPADDR=10.0.0.18 NETMASK=255.255.255.0 GATEWAY=10.0.0.15 NAME=enp0s3 NETWORK=10.0.0.0 ONBOOT=yes
示例4:使用Linux服务器在私有网络和Internet之间路由包
当您需要与专用LAN共享Internet连接时,Linux机器可用作路由器的另一种情况是。
Router: Debian Wheezy 7.7 [eth0: Public IP, eth1: 10.0.0.15/24] - dev2 Client: openSUSE 13.2 [enp0s3: 10.0.0.18/24] - dev4
除了在客户端设置数据包转发和静态路由表,如在前面的例子,我们需要在路由器中添加一些iptables规则:
# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE # iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT # iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
第一个命令添加一条规则,在NAT(网络地址转换)表中的POSTROUTING链,说明网卡eth0的应该用于传出的包。
MASQUERADE表明,该网卡具有动态IP,并且发送包到互联网的“ 狂野的世界 ”之前,对数据包的私源地址已更改为路由器的公网IP的。
在许多主机的局域网,路由器跟踪建立的连接在/ proc /网/ ip_conntrack里 ,所以它知道在哪里返回从网上的反应。
只有部分输出:
# cat /proc/net/ip_conntrack
将显示在以下屏幕截图中。
在Linux中路由包
突出显示数据包的来源(openSUSE框的专用IP)和目标(Google DNS)的位置。 这是运行的结果:
# curl www.youcl.com
在openSUSE框。
我相信你可以猜到,路由器使用谷歌的8.8.8.8作为域名服务器,这解释了为什么发送数据包的目的地指向该地址。
注 :从互联网进入的数据包只能接受,如果他们是一个已经建立的连接(命令#2)的一部分,而即将离任的包被允许“ 自由退出 ”(命令#3)。
不要忘记让你的iptables规则执着按照列出的步骤8部分-配置iptables防火墙这个系列的。
使用Quagga的动态路由
如今,大多数用于Linux的动态路由的工具是斑驴 。 它允许系统管理员使用相对低成本的Linux服务器实现强大(和昂贵)Cisco路由器提供的相同功能。
工具本身不处理路由,而是修改内核路由表,因为它学习新的最佳路由来处理数据包。
因为它是一个斑马的叉子,一个程序,其发展停止了一段时间,它维持与历史原因相同的命令和结构比斑马。 这就是为什么你会从这一点上看到很多参考斑马。
请注意,在一篇文章中不可能涵盖动态路由和所有相关协议,但我相信这里提供的内容将作为您的基础的起点。
在Linux中安装Quagga
在您选择的发行版上安装quagga:
# aptitude update && aptitude install quagga [On Ubuntu] # yum update && yum install quagga [CentOS/RHEL] # zypper refresh && zypper install quagga [openSUSE]
我们将使用与示例#3相同的环境,唯一的区别是eth0连接到具有IP 192.168.0.1的主网关路由器。
接下来,编辑/ etc /斑驴/与守护进程 ,
zebra=1 ripd=1
现在创建以下配置文件。
# /etc/quagga/zebra.conf # /etc/quagga/ripd.conf
并添加这些行(替换您选择的主机名和密码):
service quagga restart hostname dev2 password quagga
# service quagga restart
启动Quagga服务
注意 :这ripd.conf为路由信息协议,它提供了路由器的信息的配置文件,其中网络可以到达多远(在跳数量计)他们是。
请注意,这只是可以与quagga一起使用的协议之一,由于易于使用,并且因为大多数网络设备支持它,我选择了本教程,尽管它具有以纯文本传递凭据的缺点。 因此,您需要为配置文件分配适当的权限:
# chown quagga:quaggavty /etc/quagga/*.conf # chmod 640 /etc/quagga/*.conf
示例5:设置quagga动态路由IP流量
在这个例子中,我们将使用以下安装了两个路由器(确保创建路由器#2的配置文件如前所述):
配置Quagga
重要提示 :不要忘了重复以下安装了两个路由器。
连接到斑马(监听端口2601),这是路由器和内核之间的逻辑中介:
# telnet localhost 2601
输入是在/etc/quagga/zebra.conf文件中设置的密码,然后启用配置:
enable configure terminal
输入每个网卡的IP地址和网络掩码:
inter eth0 ip addr 192.168.0.15 inter eth1 ip addr 10.0.0.15 exit exit write
配置路由器
现在,我们需要连接到RIP守护终端(端口2602):
# telnet localhost 2602
作为/etc/quagga/ripd.conf文件中配置输入用户名和密码,然后以粗体键入以下命令(添加注释澄清的缘故):
enable turns on privileged mode command. configure terminal changes to configuration mode. This command is the first step to configuration router rip enables RIP. network 10.0.0.0/24 sets the RIP enable interface for the 10.0.0.0/24 network. exit exit write writes current configuration to configuration file.
启用路由器
注意 :在这两种情况下的配置被添加到我们先前添加的线(/etc/quagga/zebra.conf和/etc/quagga/ripd.conf)。
最后,再次同时连接到路由器上的斑马服务,并注意有他们每个人已经“ 学会 ”是落后于其他的网络的路由,而这是下一跳获得到该网络,通过运行命令show IP路由 :
# show ip route
检查IP路由
如果你想尝试不同的协议或设定时,你可能要参考斑驴项目现场进行进一步的文档。
结论
在本文中,我们已经解释了如何使用Linux盒式路由器设置静态和动态路由。 随意添加任意多的路由器,并尽可能多地实验。 如果您有任何意见或问题,请随时使用下面的联系表格回到我们。