Knockd 监听特定的 IP 地址

Knockd 监听特定的 IP 地址

在 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 地址)

相关内容