Linux虚拟网络基础 — Router

  • Post author:
  • Post category:linux


router在虚拟网络中就是路由器,实现三层通信作用。

Linux 本身开启转发功能后就是一个路由器。

不过linux默认没有打开路由转发功能。

通过

cat /proc/sys/net/ipv4/ip_forward

命令可以查看路由转发功能是否开启。

如果是1:表示打开了Linux的路由转发功能。

如果是0:表示没有打开路由转发功能。

临时开启方法,重启会失效:

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

永久开启的方法是修改配置文件:“/etc/sysctl.conf”,将net.ipv4.ip_forward=0修改为1,保存后退出即可。



实战

在这里插入图片描述

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

当我们添加了tap并绑定了IP地址时,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 此时是ping不通的
$ip netns exec ns1 ping 192.168.200.2
connect: Network is unreachable

# 查看路由表
$ip netns exec ns1 route -nee
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface    MSS   Window irtt
192.168.100.0   0.0.0.0         255.255.255.0   U     0      0        0 tap1     0     0      0

# 添加路由
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

# 查看路由表
$ip netns exec ns1 route -nee
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface    MSS   Window irtt
192.168.100.0   0.0.0.0         255.255.255.0   U     0      0        0 tap1     0     0      0
192.168.200.0   192.168.100.1   255.255.255.0   UG    0      0        0 tap1     0     0      0
----
$ip netns exec ns2 route -nee
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface    MSS   Window irtt
192.168.100.0   192.168.200.1   255.255.255.0   UG    0      0        0 tap2     0     0      0
192.168.200.0   0.0.0.0         255.255.255.0   U     0      0        0 tap2     0     0      0

# 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.047 ms
64 bytes from 192.168.200.2: icmp_seq=2 ttl=63 time=0.051 ms
64 bytes from 192.168.200.2: icmp_seq=3 ttl=63 time=0.042 ms
64 bytes from 192.168.200.2: icmp_seq=4 ttl=63 time=0.043 ms
64 bytes from 192.168.200.2: icmp_seq=5 ttl=63 time=0.042 ms
64 bytes from 192.168.200.2: icmp_seq=6 ttl=63 time=0.040 ms
64 bytes from 192.168.200.2: icmp_seq=7 ttl=63 time=0.041 ms
64 bytes from 192.168.200.2: icmp_seq=8 ttl=63 time=0.041 ms



版权声明:本文为weixin_45804031原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。