本文主要是讲解IPIP隧道的创建,及验证与问题分析
1、创建两个网络命名空间
ip netns add ns1
ip netns add ns2
2、创建两对 veth pair ,一端各挂在一个命名空间下
ip link add v1 type veth peer name v1_p
ip link add v2 type veth peer name v2_p
ip link set v1 netns ns1
ip link set v2 netns ns2
3、分别配置地址,并启用
ip addr add 10.10.10.1/24 dev v1_p
ip link set v1_p up
ip addr add 10.10.20.1/24 dev v2_p
ip link set v2_p up
ip netns exec ns1 ip addr 10.10.10.2/24 dev v1
ip netns exec ns1 ip link set v1 up
ip netns exec ns2 ip addr 10.10.20.2/24 dev v2
ip netns exec ns1 ip link set v2 up
4、分别配置路由
ip netns exec ns1 route add –net 10.10.20.0/24 gw 10.10.10.1
ip netns exec ns2 route add –net 10.10.10.0/24 gw 10.10.20.1
此时执行 ip netns exec ns1 ping 10.10.20.2 是通的,说明v1、v2 是互通的
5、创建 tun设备,并设置为ipip隧道
ip netns exec ns1 ip tunnel add tun1 mode ipip remot 10.10.20.2 local 10.10.10.2
ip netns exec ns1 ip link set tun1 up
ip netns exec ns1 ip addr 10.10.100.10 peer 10.10.200.10 dev tun1
ip netns exec ns2 ip tunnel add tun2 mode ipip remot 10.10.10.2 local 10.10.20.2
ip netns exec ns2 ip link set tun2 up
ip netns exec ns2 ip addr 10.10.200.10 peer 10.10.100.10 dev tun1
6、测试隧道是否通
ip netns exec ns1 ping 10.10.200.10 发现不通
问题分析
1、查看路由信息
2、Ping 同时抓包
显示 10.10.10.1 > 10.10.10.2 不可达
3、在本机 ping 10.10.10.2 是通的
4、查看 v1与 v1_p 的链接关系
5、通过traceroute 查看路由信息
没有获取到信息
6、查看iptables 规则
iptables -nvL
怀疑是不是被这条规则过滤了
1)iptables –Z 统计清零,再进行测试
ip netns exec ns1 ping -c 4 10.10.200.10 发送4次ping包测试
2)几乎可以确定是被该规则过滤,删除规则进一步确认
iptables -D FORWARD -j REJECT --reject-with icmp-host-prohibited
删除规则后,数据通过