LabHub
学习 学习路径 课程

网络基础 — 在 Linux 虚拟机里动手

用三个命名空间搭路由器

在 LabHub 中继续学习

这个实习在VM中进行

名称空间三—主机h1,路由器r1,主持人h2— 以veth两对 是。子网是两个主机通过路由器通信的最小网络。

目标

读取路由表,输入基本路径和静态路径,将一台Linux作为路由器 制作的开关(ip_forward)确认要改变什么。

为什么重要

几乎每次报案说“只有某种频率不行”都是路由问题。但是路由是 双方都要对得住——即使有去路,如果没有回路,也一样。 不行,症状无法区分。而且Linux默认使用别人的软件包 不会转让的。ip_forward一行将主机改成路由器,容器管理 节点、托管主机、VPN服务器全部站在这一行上。

阶段

  1. 名称空间h1·r1·h2制作并veth对h1rrh1h2rrh2制作h1rh1h2rh2rh1·rh2r1请放入。
  2. h1r10.20.1.10/24rh110.20.1.1/24rh210.20.2.1/24h2r10.20.2.10/24粘上并与所有接口和lo请UP。
  3. h1h2用(10.20.2.10) ping失败信息**/root/route/unreach.txt**请保存到。
  4. h1h2请将各自的路由器地址作为默认路径放入。
  5. r1net.ipv4.ip_forward把1打开h1h2请让ping变得很好。
  6. h1h2traceroute -n一个结果**/root/route/trace.txt**请保存到。
  7. h2堆叠界面svc0制作10.99.0.10/24粘上,r110.99.0.0/24 via 10.20.2.10输入静态路径h110.99.0.10让它碰到。
  8. /root/route/report.mdhops=一行,h1ip route get 10.99.0.10结果一行,还有ip_forward如果没有,请写下为什么不行。

参考

连接三个

名称空间h1·r1·h2制作并veth对h1rrh1h2rrh2制作h1rh1h2rh2rh1·rh2r1请放入。

ip link add h1r type veth peer name rh1像这样做两个对ip link set <이름> netns <ns>移动到。路由器的核心是接口有两个——一个桥接器连接到一个子网。

附上地址

h1r10.20.1.10/24rh110.20.1.1/24rh210.20.2.1/24h2r10.20.2.10/24粘上并与所有接口和lo请UP。

ip -n h1 addr add 10.20.1.10/24 dev h1r这样四个。之后六个接口(veth四个+lo三个)link set … up.确认是ip netns exec h1 ping -c1 10.20.1.1— 必须先到达同一个子网的路由器。

没有路的话

h1h2用(10.20.2.10) ping失败信息**/root/route/unreach.txt**请保存到。

ip netns exec h1 ping -c 1 -W 1 10.20.2.10 > /root/route/unreach.txt 2>&1. 因为错误显示为标准错误2>&1不要忘记。还没有基本路径。Network is unreachable应该接着。

基本路线

h1h2请将各自的路由器地址作为默认路径放入。

ip -n h1 route add default via 10.20.1.1ip -n h2 route add default via 10.20.2.1. 必须都输入——如果只输入一边的话,请求就会发送出去,但没有回复的途径。

变成路由器

r1net.ipv4.ip_forward把1打开h1h2请让ping变得很好。

ip netns exec r1 sysctl -w net.ipv4.ip_forward=1. 如果这个值为0,内核会安静地丢弃不是自己地址的数据包。每个命名空间都有不同的值。

沿着路线走走

h1h2traceroute -n一个结果**/root/route/trace.txt**请保存到。

ip netns exec h1 traceroute -n -w 1 10.20.2.10 > /root/route/trace.txt. 1跳是路由器(10.20.1.1),2跳是h2。-n是关闭名字解释的选项。

静态路径

h2堆叠界面svc0制作10.99.0.10/24粘上,r110.99.0.0/24 via 10.20.2.10输入静态路径h110.99.0.10让它碰到。

h2方面:ip -n h2 link add svc0 type dummyaddr add 10.99.0.10/24 dev svc0link set svc0 up. r1 方面:ip -n r1 route add 10.99.0.0/24 via 10.20.2.10. h1 作为基本路径交给 r1,所以没有什么可担心的。

学到了什么

/root/route/report.mdhops=一行,h1ip route get 10.99.0.10结果一行,还有ip_forward如果没有,请写下为什么不行。

hops是6级traceroute的跳跃次数。ip netns exec h1 ip route get 10.99.0.10请把第一行照样粘贴过来(via 10.20.1.1显示此)。说明中必须包含ip_forward这个单词。