EoIP(Ethernet over IP)协议是一种以太网隧道协议,经常用于在不同的网络之间建立虚拟连接。该协议可以将本地网络与远程网络之间的虚拟链路封装在一个IP数据包中,达到透明传输的效果。使用EoIP协议可以使不同局域网之间通过Internet建立隧道连接,从而组成了更大的虚拟局域网或互联网。EoIP协议的实现依赖于IP层协议,因此它可以在IPv4和IPv6网络上运行。它还提供了端口多路复用和流控制等功能,可以实现更加灵活和高效的网络通信。

Ubuntu编译安装EoIP

因为EoIP协议的私有性,我们在常规的Linux发行版中都找不到对应的实现程序,需要使用开源的代码自行编译,这里我使用的是Nat-Lab eoip的实现,参考介绍,可以快速的编译EoIP模块。

1
2
3
4
5
apt install build-essential
git clone https://github.com/Nat-Lab/eoip.git
cd eoip
make
make install

RouterOS上创建普通隧道

最简配置,仅需要设置对端IP和隧道ID

1
/interface eoip add name=eoip-1 remote-address=xxx.xxx.xxx.xxx tunnel-id=99

Ubuntu配置EoIP

配置EoIP的对端信息和隧道ID,并给虚拟接口设置IP和启用接口

1
2
3
eoip -4 eoip0 local 0.0.0.0 remote xxx.xxx.xxx.xxx id 99 &
ip addr add 10.10.10.99/24 dev eoip0
ip link set eoip0 up

还需要开启转发和NAT转换

1
2
sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE