《深入理解OpenStack Neutron》—2.5 Router

举报
华章计算机 发表于 2019/05/30 11:11:39 2019/05/30
【摘要】 本书摘自《深入理解OpenStack Neutron》一书中的第2章,第2.5节,作者是李宗标。

2.5 Router

Linux创建Router并没有像创建虚拟Bridge那样,有一个直接的命令brctl,而且它间接的命令也没有,不能创建虚拟路由器……因为它就是路由器(Router)!

不过Linux默认没有打开路由转发功能。可以用这个命令验证一下:

less /proc/sys/net/ipv4/ip_forward

这个命令就是查看一下这个文件(/proc/sys/net/ipv4/ip_forward)的内容。该内容是一个数字。如果是“0”,则表示没有打开路由功能。把“0”修改为“1”,就是打开了Linux的路由转发功能:

echo "1" > /proc/sys/net/ipv4/ip_forward

这种打开方法,在机器重启以后就会失效了。一劳永逸的方法是修改配置文件“/etc/sysctl.conf”,将net.ipv4.ip_forward = 0修改为1,保存后退出即可。

下面我们仍然通过一个测试用例来直观感受一下Router的功能。测试用例组网图如

图2-5所示。

image.png

图2-5 跨网段的namespace/tap互通测试组网图

在这个图2-5中,NS1/tap1与NS2/tap2不在同一个网段中,中间需要经一个路由器进行转发才能互通。图中的Router是一个示意,其实就是Linux开通了路由转发功能。

当我们添加了tap并给其绑定IP地址时,Linux会自动生成直连路由,如图2-6所示。

image.png

图2-6 Linux自动生成的路由表

下面我们根据测试用例组网图,创建设备。命令如下:

# 创建 veth pair

ip link add tap1 type veth peer name tap1_peer

ip link add tap2 type veth peer name tap2_peer

# 创建 namespace

ip netns add ns1

ip netns add ns2

# 将 tap 迁移到 namespace

ip link set tap1 netns ns1

ip link set tap2 netns ns2

# 配置 tap IP 地址

ip addr add local 192.168.100.1/24 dev tap1_peer

ip addr add local 192.168.200.1/24 dev tap2_peer

ip netns exec ns1 ip addr add local 192.168.100.2/24 dev tap1

ip netns exec ns2 ip addr add local 192.168.200.2/24 dev tap2

# 将 tap 设置为 up

ip link set tap1_peer up

ip link set tap2_peer up

ip netns exec ns1 ip link set tap1 up

ip netns exec ns2 ip link set tap2 up

现在我们来做个测试,ping一下:

ip netns exec ns1 ping 192.168.200.2

connect: Network is unreachable

ping不通,网络不可达。我们查看一下ns1的路由表:

ip netns exec ns1 route -nee

图2-7是nsl的路由表截图,从图中可以看到,ns1并没有到达192.168.200.0/24的路由表项,我们需要手工添加。命令行如下:

image.png

图2-7 ns1的路由表

# ns1、ns2 都添加静态路由,分别到达对方的网段

ip netns exec ns1 route add -net 192.168.200.0 netmask 255.255.255.0 gw 192.

    168.100.1

ip netns exec ns2 route add -net 192.168.100.0 netmask 255.255.255.0 gw 192.

    168.200.1

这个时候,我们再来查看ns1的路由信息,ns1已经具有到达192.168.200.0/24的路由表项,如图2-8所示。

ip netns exec ns1 route -nee

image.png

图2-8 增加静态路由后的ns1的路由表

再重新ping一下,通了:

ip netns exec ns1 ping 192.168.200.2

PING 192.168.200.2 (192.168.200.2) 56(84) bytes of data.

64 bytes from 192.168.200.2: icmp_seq=1 ttl=63 time=0.040 ms

......

ip netns exec ns2 ping 192.168.100.2

PING 192.168.100.2 (192.168.100.2) 56(84) bytes of data.

64 bytes from 192.168.100.2: icmp_seq=1 ttl=63 time=0.030 ms

......


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。