将数据包转发到一个地址到监听不同地址的本地应用程序

将数据包转发到一个地址到监听不同地址的本地应用程序

我有一台计算机,有两个接口,eth1 的接口为 10.223.75.53,eth2 的接口为 192.168.1.1。eth2 没有连接网线,但有一个应用程序在 192.168.1.1 的端口 5000 上监听,假设这个应用程序是 netcat。eth1 已连接到网络。网络上的某些应用程序将与 10.223.75.53:5000 建立 tcp 连接,因此我想将 10.223.75.53:5000 上的所有流量重定向到 192.168.1.1:5000。

我尝试了以下规则:

iptables -t nat -A PREROUTING -p tcp -i eth1 --dport 5000 -j DNAT --to-destination 192.168.1.1

已启动服务器:

netcat -l -p 5000 192.168.1.1 # local server

并尝试沟通:

netcat 10.223.75.53 5000

服务器崩溃,信息如下:

netcat -l -p 5000 192.168.1.1
invalid connection to [10.223.75.53] from (UNKNOWN) [10.223.75.53] 49116

客户端刚刚退出。

我的路由表是:

$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.223.75.1     0.0.0.0         UG    100    0        0 eth1
10.223.75.0     0.0.0.0         255.255.255.0   U     100    0        0 eth1
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth2

$ ip rule ls
0:  from all lookup local 
32766:  from all lookup main 
32767:  from all lookup default

我不明白我的规则有什么问题。

相关内容