如何使用 nftables 将对远程机器的请求重定向到本地主机?

如何使用 nftables 将对远程机器的请求重定向到本地主机?

我有以下 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 我希望它适用于所有端口。

相关内容