当目标地址(mac 和 ip)更改为自己的主机接口时丢弃数据包

当目标地址(mac 和 ip)更改为自己的主机接口时丢弃数据包

我的主机充当路由器,有两个网络接口enp1s0(1 个主机连接到 ip 192.168.10.20)和enp2s0enp1s0用于接收 UDP 包,并且enp2s0通常连接有监听主机。

当我使用以下命令激活nftables日志记录时:

table ip filter {
        chain logging {
                type filter hook prerouting priority filter; policy accept;
                ip saddr 192.168.10.20 log prefix "ip-filter1-"
        }
}

我看到所有数据包都被192.168.10.20记录下来,而且我还在日志中看到了这些包的实际目标是什么(因为我的主机只是路由器并传递这些包)。

尽管如此,当我尝试在家庭中做一些非常低级别的重定向时netdev,日志不再打印(我认为数据包被丢弃了,不是吗?)

table netdev filter { # handle 3
        chain mod { # handle 15
                type filter hook ingress device "enp1s0" priority -500; policy accept;
                ether daddr set c4:00:ad:99:67:c7 ip daddr set 192.168.10.120 # handle 16
        }
}

这是我的ip a

...
2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether c4:00:ad:99:67:c7 brd ff:ff:ff:ff:ff:ff
    inet 192.168.10.120/24 brd 192.168.10.255 scope global noprefixroute enp1s0
       valid_lft forever preferred_lft forever
    inet6 fe80::c600:adff:fe99:67c7/64 scope link
       valid_lft forever preferred_lft forever
3: enp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether c4:00:ad:99:67:c8 brd ff:ff:ff:ff:ff:ff
    inet 10.20.75.50/24 brd 10.20.75.255 scope global dynamic noprefixroute enp2s0
       valid_lft 682026sec preferred_lft 682026sec
    inet6 fe80::c600:adff:fe99:67c8/64 scope link
       valid_lft forever preferred_lft forever

ip route给我:

default via 10.20.75.254 dev enp2s0 proto dhcp metric 101
10.20.75.0/24 dev enp2s0 proto kernel scope link src 10.20.75.50 metric 101
169.254.0.0/16 dev enp1s0 scope link metric 1000
192.168.10.0/24 dev enp1s0 proto kernel scope link src 192.168.10.120 metric 100

为什么我将 mac 地址和 ip 地址重写为本地 NIC 的值后不再记录数据包?

答案1

我通过使用以下netdev家庭解决了这个问题nftables

这是 NIC 上的软件包重定向到本地接口的方式:

table netdev filter {
        chain redir {
                type filter hook ingress device "enp1s0" priority filter; policy accept;
                ether daddr set c4:00:ad:99:67:c7 ip daddr set 192.168.10.120 udp dport set 4500 meta pkttype set host
        }
}

必须打开混杂模式,以便 NIC 转发不适合它的数据包:

ip link set enp1s0 promisc on

相关内容