在Linux上通过IPIP实现IP隧道

一个通过IPIP实现IP隧道的简单示例
两台主机,A和B,每台主机由两块网卡,其中eth0在同一个网段,能够互相连通。
A的eth1和B的eth1分别在两个不同的网段。
A:
eth0:192.168.9.5
eth1:192.168.8.5
B:
eth0:192.168.9.6
eth1:192.168.10.6
网络拓扑图如下

A:
ip tun add lxT mode ipip remote 192.168.9.6 local 192.168.9.5
ip link set lxT up
ip add add 192.168.200.1 brd 255.255.255.255 peer 192.168.200.2 dev lxT
ip ro add 192.168.200.0/24 via 192.168.200.1
B:
ip tun add lxT mode ipip remote 192.168.9.5 local 192.168.9.6
ip link set lxT up
ip add add 192.168.200.2 brd 255.255.255.255 peer 192.168.200.1 dev lxT
ip ro add 192.168.200.0/24 via 192.168.200.2
命令解释
ip tun add lxT mode ipip remote 58.23.0.2 local 211.154.0.2
ip tun add 建立隧道,隧道名称为lxT(一个设备标示,类似eth0)mode ipip采用的模式为ipip模式,
remote 192.168.9.6远端设备的ip地址local 192.168.9.5本机的ip地址
ip add add 192.168.200.1 brd 255.255.255.255 peer 192.168.200.2 dev lxT
给设备lxT增加一个ip地址,并且设置对端的ip地址为192.168.200.2

在A机器添加路由信息,指定到192.168.10.6通过lxT
ip ro add 192.168.10.6/32 dev lxT
在B机器添加路由信息,指定到192.168.8.5通过lxT
ip ro add 192.168.8.5/32 dev lxT

这样 192.168.8.5 和 192.168.10.6 就可以相互ping通了

如果A是路由器的话,通过A路由的机器理论上应该也能访问192.168.10.6,测试的结果是不能,不知道是否还需要特别的配置。网络拓扑图如下

测试步骤如下:
在A机器上启动路由:
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE
有另外一台机器C"
C的IP是192.168.8.7,网关为192.168.8.5
在C上能ping通 192.168.8.5,192.168.9.5和192.168.9.6
但是不能ping通 192.168.10.6(不明白为什么....)

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页