在 Knockd 中,如何从具有多个 IP 地址的接口监听特定的 IP 地址?
Knockd 仅具有通过接口监听的选项,而没有通过 IP 地址监听的选项。
例子
接口 eth0 有 3 个 IP
123.123.123.123
124.124.124.124
125.125.125.125
我的目标监听IP是,124.124.124.124
但是如果我使用eth0接口启动knockd,它将监听第一个ip 123.123.123.123
。
答案1
Knockd 监听 OSI 模型中的链路层,即第 2 层。第 3 层是 IP 地址所在的层。因此,您无法只监听单个 IP 地址。
解决方法是创建一个 MACVTAP,从而创建一个新的 layer2 设备。将 IP 地址 124.124.124.124 移动到该接口,并在新接口(例如 macvtap0)上运行 Knockd。
ip link add link eth0 macvtap0 type macvtap
ip address del 124.124.124.124/<insert the subnet> dev eth0
ip address add 124.124.124.124/<insert the subnet> dev macvtap0
注意:创建 macvtap 会创建一个具有新 mac 地址的接口,具体取决于您的 ISP/上游提供商,这可能会产生问题。如果发生这种情况,请添加一条来自 124.124.124.124 的出站流量路由,以通过您的其他外部 IP 地址之一进行路由。这样您的上游提供商将看到物理设备的 mac 地址。(这是最简单的方法,我知道还有其他方法可以让出站流量使用主 mac 地址)