例3:建立多个IP地址
这里的多个IP地址并不同于IP别名,在Linux2.1及更高版本中已经反对使用":#"的IP别名方式。而应该用新的方式来使用多IP地址。
假设eth0输出接口应该具有三个不同的IP地址,其中的两个应该属于同一个子网,但是应该被独立地设置,示例同样说明了在Linux2.2及以上版本的关闭自动路由添加的方法。在Linux2.2及以上版本内核的系统中,当为一个接口赋予一个IP地址时,内核将自动为该IP地址属于的网络在路由表中添加一条对应的路由。而由于这里将为同一个接口赋予属于同一个子网的两个不同的IP,所以在添加IP地址时不希望添加路由,否则会造成路由冲突,因此就需要添加该地址为一个主机地址。只需要设置该地址时指定完全主机地址掩码,然后手工添加必要的路由。
为接口设置如下地址:
192.168.1.1
192.168.1.128
192.168.3.1
在添加192.168.1.0/24的两个地址时需要关闭自动路由添加,而允许对192.168.3.0/24时允许自动路由添加功能。
ip addr add 192.168.1.1/32 dev eth0
ip addr add 192.168.1.128/32 dev eth0
ip addr add 192.168.3.1/24 dev eth0
这时候如果察看主路由表则会发现内核只为网络192.168.3.0/24添加了路由表,而没有为网络192.168.1.0/24添加路由。
通过ip addr命令可以察看系统的所有IP地址信息:
root@netmonster# ip addr
1: lo: <LOOPBACK,UP> mtu 3924 qdisc noqueue
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 brd 127.255.255.255 scope host lo
2: eth0: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 100
link/ether 00:00:49:61:32:bc brd ff:ff:ff:ff:ff:ff
inet 192.168.1.1/32 scope global eth0
inet 192.168.1.128/32 scope global eth0
inet 192.168.3.1/24 scope global eth0
下面我们将讨论几个更加复杂的例子。
例 4:多路由表和IP地址
Linux内核路由代码最强大的特色就是基于策略的路由和使用多地址、多路由表的结合使用。下面的示例讨论的是一个充当路由器的连接三个不同的网络的系统。
参考文章开头的图片,可以看到核心系统的外部接口连接了三个外部网络。每个网络都有自己的路由器和自己的IP地址空间。但是其中的两个地址空间是重叠的,因此增加了情况的复杂性。这里我们设置如下规则的路由表来实现互联:
从任何内部网络到Inetent的数据流都是允许的。
从内部网B到网络A的数据流是允许的。
从内部网A到网络C的数据流是允许的。
内部网A的地址为33-62的主机允许访问网络A。
内部网B的地址为65-78的主机允许访问网络C。
首先,配置两个外部IP地址-在DMZ以太网接口eth0的两个地址:
ip addr add 10.254.254.2/30 dev eth0
ip addr add 172.17.1.128/24 dev eth0
下一步将讨论创建哪些路由表,解决这个问题的最好办法是想到基于策略的路由能实现根据源地址来决定使用哪个路由表。策略规则具有划分内部网络的能力,因此首先可以在路由表中添加基于目的的路由,在示例中我们将使用前面创建的新的路由表。
当在路由表中添加路由时下面的方法有助于澄清应该采取的步骤。假设你配置的是只有两个接口的路由器,外接口直接连接Interet出口路由器,而内接口直接连接内部网络。配置这样的路由器是非常简单的,为了说明我们这里在表1-goodnet1这个路由表进行操作:
ip route add 10.10.0.0/16 via 10.254.254.2 table goodnet1 proto static
ip route add default via 172.17.1.254 table goodnet1 proto static
http://netadmin.77169.com/HTML/20040615190400.html