我有两个以太网接口,分别名为 enp1s0f0 和 enp1s0f1。它们的 IP 地址来自同一子网(但我认为这并不重要)。以下是场景:
我的发行版是 Centos8
我已经完成了“echo 1 > /proc/sys/net/ipv4/ip_forward”
enp1s0f0 有 xyz236 enp1s0f1 有 xyz237
我已经写了 IP 规则
[root@localhost ~]# ip rule list
0: from all lookup local
32762: from all to x.y.z.237 lookup 237
以及我的附加路由表 237
[root@localhost ~]# ip route list table 237
default via x.y.z.254 dev enp1s0f1
x.y.z.0/24 dev enp1s0f1 scope link src x.y.z.237
这是我的问题:第一个接口运行良好,对于第二个接口,我可以通过 tcpdump 看到传入的数据包,但 nftables 计数器没有计数。例如,ssh 连接就超时了。我尝试过“meta nftrace set 1”进行输入和转发挂钩,但这里也没有通过任何操作。
这是我的 tcpdump 输出:
[root@localhost ~]# tcpdump -i enp1s0f1 port 22 -n
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on enp1s0f1, link-type EN10MB (Ethernet), capture size 262144 bytes
17:13:01.305452 IP x.y.z.3.52229 > x.y.z.237.ssh: Flags [S], seq 2642985606, win 8192, options [mss 1428,nop,wscale 8,nop,nop,sackOK], length 0
17:13:04.305689 IP x.y.z.3.52229 > x.y.z.237.ssh: Flags [S], seq 2642985606, win 8192, options [mss 1428,nop,wscale 8,nop,nop,sackOK], length 0
17:13:10.306349 IP x.y.z.3.52229 > x.y.z.237.ssh: Flags [S], seq 2642985606, win 8192, options [mss 1428,nop,nop,sackOK], length 0
这是我的 nftables 规则:
table ip filter {
chain INPUT {
type filter hook input priority filter; policy accept;
ip daddr x.y.z.237 tcp dport 22 meta nftrace set 1 counter packets 0 bytes 0
chain FORWARD {
type filter hook forward priority filter; policy accept;
counter packets 0 bytes 0 accept
chain OUTPUT {
type filter hook output priority filter; policy accept;
ip saddr x.y.z.236 tcp sport 22 counter packets 383 bytes 102888 accept
ip saddr x.y.z.237 tcp sport 22 counter packets 0 bytes 0 accept
我遗漏了什么?我的包裹去哪儿了?
答案1
我搞明白了。当我添加 ip 规则 add from xyz237/32 table 237 时,它起作用了。虽然不明白为什么 :D 但它确实起作用了,所以没问题。