我有以下 nftables 配置:
[root@localhost andrew]# nft list ruleset
table ip nat {
chain prerouting {
type nat hook prerouting priority dstnat; policy accept;
ip daddr 10.0.2.99 dnat to 127.0.0.1
}
chain postrouting {
type nat hook postrouting priority srcnat; policy accept;
}
}
和
[root@localhost andrew]# cat /proc/sys/net/ipv4/ip_forward
1
[root@localhost andrew]# cat /proc/sys/net/ipv4/conf/all/route_localnet
1
但是当我尝试建立 TCP 连接(从同一台机器)到 10.0.2.99:4000,而服务器在 0.0.0.0:4000 上监听时,什么也没有发生(我可以包括服务器和客户端,但它们只是为测试这个而编写的基本 Python 脚本;10.0.2.99 没有机器)。
为什么这不起作用?我从 Python 收到的错误是“OSError:[Errno 113] 没有到主机的路由”
如果有帮助的话
[root@localhost andrew]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 08:00:27:39:a4:e5 brd ff:ff:ff:ff:ff:ff
inet 10.0.2.15/24 brd 10.0.2.255 scope global dynamic noprefixroute enp0s3
valid_lft 83297sec preferred_lft 83297sec
inet6 fe80::a00:27ff:fe39:a4e5/64 scope link noprefixroute
valid_lft forever preferred_lft forever
我在 Rocky 9.3(VirtualBox 内的虚拟机)上运行。nf_tables 模块存在。
PS 我希望它适用于所有端口。