Openwrt 和 MikroTik RouterOS 路由器通过 IPIP/EOIP 进行二层组网

一直以来,本地路由器远程连接实验室的网络连接都是通过办公室ikuai软路由的L2TP连接实现的,但L2TP作为一个有状态协议,在遇到连接中断后恢复起来会比较麻烦,以及ikuai的L2TP server并不是很稳定,且没有办法分配IPv6。因此在近期,笔者将路由器连接实验室网络的组网方式改为了IPIP及EoIP的组合组网配置,并在很大程度上解决了上述问题。

笔者同时提供了基于GRETAP的二层组网方案,此方案无需RouterOS设备,且性能开销更小,但配置相对略麻烦一些。


为什么选择IPIP/IPOE?

  • IPIP/EoIP均是无状态协议,不会像L2TP一样,在网络波动后还需要重连。
  • 理论上组网只需要EoIP即可,但学校的校园网阻断了GRE协议(EoIP基于GRE),需要在EoIP下再套一层协议以方便在学校的三层内网上传输,且这层套壳的协议最好能开销尽量小。因此笔者选择了IPIP协议。

网络结构图

网络结构图如下所示,其中红线的意思是Openwrt路由器下设备的数据的实际流向。

network-structure

配置IPIP隧道

RouterOS 侧

添加隧道:

1
2
3
4
5
interface > ip tunnel > add new

name: ipip-openwrt
local address: 10.20.1.1
remote address: 10.20.1.2

分配IP:

1
2
3
4
5
IP > address > add new

address: 9.0.0.1/24
network: 9.0.0.0
interface: ipip-openwrt

Openwrt 侧

先安装IPIP相关的包:

1
2
opkg update
opkg install luci-proto-ipip

重启路由器,随后添加IPIP interface:

1
2
3
4
5
6
7
8
Network > Interface > Add new interface...
name: ipip1
protocal: IPv4-in-IPv4 (RFC2003)
Remote IPv4 address or FQDN: 10.20.1.1
Local IPv4 address: 10.20.1.2
Bind interface: wan

同时也需要在Advanced Settings里去掉Use Default Gateway的选项。

给IPIP的interface分配一个静态IP:

1
2
3
4
5
6
7
8
Network > Interface > Add new interface...
name: ipip1static
protocal: Static
Device: ipip-ipip0
IPv4 address: 9.0.0.2/24
IPv4 gateway: 9.0.0.1

同时也需要在Advanced Settings里去掉Use Default Gateway的选项。

RouterOS和Openwrt一侧都配置好IPIP隧道后,可以互相ping一下对方的隧道IP (9.0.0.19.0.0.2)来检查一下隧道是否通了。

配置EoIP隧道及添加网桥

RouterOS 侧

添加隧道:

1
2
3
4
5
6
interface > EoIP tunnel > add new

name: eoip-openwrt
local address: 9.0.0.1
remote address: 9.0.0.2
tunnel ID: 150 (这个可以自己设置,和客户端一样就可以了)

添加网桥:

1
2
3
bridge > add new
name: bridge-eoip-ikuai
注意需要关闭dhcp snooping

给网桥添加端口:

1
2
bridge > port > add new
把 eoip-openwrt 和连接ikuai的wan口都桥接到bridge-eoip-ikuai上

Openwrt 侧

安装EoIP的包:

1
2
opkg update
opkg install luci-app-eoip

重启路由器(可选),配置EoIP interface:

Network > EoIP Tunnel中配置,如下图所示:

eoip-config-openwrt

通过隧道分配IP

IPv4

在Openwrt上新建一个interface,名字叫dhcpipip4,Protocal选择dhcp client,Device选择zeoip0(eoip的虚拟设备)勾选Use default gateway,防火墙划分到WAN区。

openwrt-dhcp-eoip

IPv6

WAN6的接口改为zeoip0即可。


全部配置完成后,dhcpipip4wan6的interface理论上均能取得上级路由器(ikuai)分配的IP。

性能

笔者使用运行Openwrt 22.03.0的红米AX6s路由器,4*E5-2683 v4,内存2G的RouterOS(安装于ESXI虚拟机中)进行实际测试时,使用iperf3测速时峰值速度可达500Mbps左右。但笔者也注意到当客户端使用AX6s的无线连接进行测速时,iperf3的峰值速度则只有300Mbps左右,因此用此种方式组网对设备性能的要求可能较高。

参考资料

  • https://github.com/bogdik/openwrt-linux-eoip
  • https://help.mikrotik.com/docs/display/ROS/IPIP
  • https://help.mikrotik.com/docs/display/ROS/EoIP