一、协议介绍
EOIP是一个 MikroTik的 Linux使用 TAP的 EoIP/EoIPv6隧道的实现。EoIP(Ethernet over IP)和 EoIPv6(Ethernet over IPv6)是 MikroTik RouterOS的第二层隧道协议。
EoIP协议将以太网帧封装在GRE (IP protocol number 47)报文中,EoIPv6协议将以太网帧封装在EtherIP (IP protocol number 97)报文中。
二、网络环境
该网络是在同一局域网下模拟进行的,若两台路由器不在同一个局域网,则需要先将两台路由器打通后才能进行进行下一步,因为二层隧道建立的前提是两台设备需要能相互通信。
该网络最终实现的目的是 PC1和 PC2能够相互通信,且局域网1和局域网2内的所有设备都能相互通信(这边只显示PC1和PC2)。等同于将两个局域网合并成一个局域网。
三、EOIP二层协议使用
1、下载 EOIP源码
下载地址请点击链接:https://github.com/amphineko/eoip
2、建立二层隧道
R1: R2:
WAN: 192.168.0.1 WAN: 192.168.0.2
LAN : 192.168.1.1 LAN : 192.168.1.2
EOIP命令格式:
eoip [ OPTIONS ] IFNAME { remote RADDR } { local LADDR } { id TID }
[ mtu MTU ] [ uid UID ] [ gid GID ] [ fork ]
OPTIONS := { -4 | -6 }
R1配置:
/home/bin/eoip -4 tap1 local 192.168.0.1 remote 192.168.0.2 id 100 mtu 1500 &
R2配置:
/home/bin/eoip -4 tap1 local 192.168.0.2 remote 192.168.0.1 id 100 mtu 1500 &
此时 “ifconfig -a” 可以查看到有新生成的接口 “tap1”
tap1 Link encap:Ethernet HWaddr 9E:7F:44:5A:0B:C6
BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:37 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:500
RX bytes:6798 (6.6 KiB) TX bytes:0 (0.0 B)
3、打通两个局域网
分别在 R1和 R2上执行以下指令:
brctl addif br-lan tap1 # tap1桥接到lan口
ifconfig tap1 up (或 ip link set tap1 up) # 启用 tap1接口
如此局域网1和局域网2就直接打通了,从某种意义上来说可以等效于同一个局域网。
4、关闭 R2路由器的DHCP
关闭 R2路由器的 DHCP后,由于两个局域网已经打通,因此 PC2可以获取到路由器 R1所分配的 IP地址和网关。在 PC2上跟踪路由可以发现数据包是从 R1路由器出外网的。
若 R2没有关闭DHCP服务,此时网络等效于 R1、R2的 LAN口和 PC1、PC2同时接入交换机,PC1和PC2可以获取到 R1和 R2任意一台路由器分配的IP地址。
若 PC2使用了R1局域网地址和网关,则PC2将无法继续访问R2路由器LAN口和其局域网对应在使用的IP;若要使PC2能够同时继续访问R2 LAN口局域网,则PC2上需要添加一条R2 LAN口网段的地址才能访问。
四、拓展网络方案
1、方案1
R1与R2、R2与R3、R3与R4分别建立 EOIP隧道(隧道tap1、tap2和tap3对应的ID号可以不相同),关闭 R2、R3、R4的DHCP服务,PC1、PC2、PC3、PC4都能获取到R1分配的IP地址段,4台电脑可以相互访问。
五、总结
(1)、同一条EOIP隧道两端的ID值必须相同,接口名称可以不同;
(2)、待打通的两个局域网内不能出现地址冲突情况,即出现相同IP地址(Lan口 IP可以相同,但为了区分最好不要相同);
(3)、当2台或多台路由器组EOIP网络后,只要其中2台路由器之间有隧道串联,则不管中间隔着多少路由器,两台路由器等效隧道直连,其局域网设备可以相互通信。