为 Linux 增加 dummy 接口并设定 IP 地址

Posted by

on

前言

iEdon-Net 高度依赖 OSPF, BGP 等动态技术。目前,我有 3 台不同地域的设备,分别被分配有 3 个不同的固定 IP 地址。此前,我使用了固定的隧道建立了连接,并使用了近 2 年。然而,随着时间的推移,我发现:当某个其他地域的设备与这 3 个不同地域的设备的隧道中断后,通往这 3 台设备的路由表条目没有发生变动,这意味着访问将直接受阻。

为什么

我为隧道接口设置了固定的 IP 地址,而这些隧道是一直保活的(即便下层网络连接已经发生了中断故障),OSPF 等协议将继续在内网广播这个接口的 IP 地址,内网设备依然认为该走原来的路由表送出数据。

因此,我想改进原有方案:将隧道两端的地址设置成与组网无关的其他私有 IP 地址,并在这 3 个地域的设备上配置一个虚拟的接口(dummy),并设置好 IP 地址。这样,在网络接口可访问性发生变化时,OSPF 将能正确传播路由变化并快速在内网收敛。

操作

在 4.4.0 左右(未考证, 我在自己的 4.19 内核中可以正常使用)及更新版本的内核,可以直接使用一个命令创建 dummy 接口,而不用手动加载 dummy 内核模块,我已经亲自测试成功。

注:我也在内核版本为 3.10.0-1160.11.1.el7.x86_64 的 CentOS 7 中测试通过,一样可用。

At least with the kernel 4.4.0, additional dummy interfaces can be added with ip link add dumdum type dummy. – Feuermurmel

/sbin/ip link del dev <dummy-interface>
/sbin/ip link add dev <dummy-interface> type dummy
/sbin/ip addr add <IPv6>/128 dev <dummy-interface>
/sbin/ip addr add <IPv4>/32 dev <dummy-interface>
/sbin/ip link set <dummy-interface> up

使用上述命令可以正确删除旧接口,设置新 dummy 接口并配置 IP 地址。写入到开机脚本,或者配置 systemd 即可实现开机自动创建 dummy 接口。

参考

1.  How can we create multiple dummy interfaces on Linux?https://unix.stackexchange.com/questions/335284/how-can-we-create-multiple-dummy-interfaces-on-linux

2. Creating dummy interfaces on Linuxhttps://ixnfo.com/en/creating-dummy-interfaces-on-linux.html


Leave a Reply

Your email address will not be published. Required fields are marked *