用三个命名空间搭路由器
这个实习在VM中进行
名称空间三—主机h1,路由器r1,主持人h2— 以veth两对
是。子网是两个主机通过路由器通信的最小网络。
目标
读取路由表,输入基本路径和静态路径,将一台Linux作为路由器
制作的开关(ip_forward)确认要改变什么。
为什么重要
几乎每次报案说“只有某种频率不行”都是路由问题。但是路由是
双方都要对得住——即使有去路,如果没有回路,也一样。
不行,症状无法区分。而且Linux默认使用别人的软件包
不会转让的。ip_forward一行将主机改成路由器,容器管理
节点、托管主机、VPN服务器全部站在这一行上。
阶段
- 名称空间
h1·r1·h2制作并veth对h1r↔rh1,h2r↔rh2制作h1r银h1,h2r银h2,rh1·rh2是r1请放入。 h1r在10.20.1.10/24,rh1在10.20.1.1/24,rh2在10.20.2.1/24,h2r在10.20.2.10/24粘上并与所有接口和lo请UP。h1从h2用(10.20.2.10) ping失败信息**/root/route/unreach.txt**请保存到。h1科h2请将各自的路由器地址作为默认路径放入。r1的net.ipv4.ip_forward把1打开h1→h2请让ping变得很好。h1从h2罗traceroute -n一个结果**/root/route/trace.txt**请保存到。h2堆叠界面svc0制作10.99.0.10/24粘上,r1在10.99.0.0/24 via 10.20.2.10输入静态路径h1从10.99.0.10让它碰到。/root/route/report.md在hops=一行,h1从ip route get 10.99.0.10结果一行,还有ip_forward如果没有,请写下为什么不行。
参考
- 创建接口网络有很多命令。请使用shell for门。
ip -n h1 route add default via 10.20.1.1. 网关必须是像h1一样的子网。ip netns exec r1 sysctl -w net.ipv4.ip_forward=1.每个名称空间的值都不同。ip route get <주소>不是用眼睛读表格,而是直接问核心:“这个目的地要去哪里?”- 常见的错误:在第4步中遗漏了h2的基本路径。虽然有路可以走,但答案却找不到。
连接三个
名称空间h1·r1·h2制作并veth对h1r↔rh1,h2r↔rh2制作h1r银h1,h2r银h2,rh1·rh2是r1请放入。
ip link add h1r type veth peer name rh1像这样做两个对ip link set <이름> netns <ns>移动到。路由器的核心是接口有两个——一个桥接器连接到一个子网。
附上地址
h1r在10.20.1.10/24,rh1在10.20.1.1/24,rh2在10.20.2.1/24,h2r在10.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— 必须先到达同一个子网的路由器。
没有路的话
h1从h2用(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应该接着。
基本路线
h1科h2请将各自的路由器地址作为默认路径放入。
ip -n h1 route add default via 10.20.1.1,ip -n h2 route add default via 10.20.2.1. 必须都输入——如果只输入一边的话,请求就会发送出去,但没有回复的途径。
变成路由器
r1的net.ipv4.ip_forward把1打开h1→h2请让ping变得很好。
ip netns exec r1 sysctl -w net.ipv4.ip_forward=1. 如果这个值为0,内核会安静地丢弃不是自己地址的数据包。每个命名空间都有不同的值。
沿着路线走走
h1从h2罗traceroute -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粘上,r1在10.99.0.0/24 via 10.20.2.10输入静态路径h1从10.99.0.10让它碰到。
h2方面:ip -n h2 link add svc0 type dummy,addr add 10.99.0.10/24 dev svc0,link set svc0 up. r1 方面:ip -n r1 route add 10.99.0.0/24 via 10.20.2.10. h1 作为基本路径交给 r1,所以没有什么可担心的。
学到了什么
/root/route/report.md 在hops=一行,h1从ip 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这个单词。