我需要捕获所有发往外部 IP/端口并重定向到 ssh 隧道的数据包。无法使用 VPN,只能通过 ssh 隧道。这将是 citrix 重定向
我有一个 iptables 规则允许我进行重定向
iptables -t nat -A OUTPUT -p tcp -d w.x.y.z --dport 1494 -j DNAT --to-destination 127.0.0.1:2494
我必须提到,我也确实有 sysctl 设置来使 iptables 规则正常工作
sysctl -w net.ipv4.conf.eth0.route_localnet=1
当我使用 telnet 测试 citrix 连接时,我确实从两者中都获得了 ICA 提示
telnet w.x.y.z 1494
telnet 127.0.0.1 2494
但是当我从 ica 文件启动 citrix 时,服务器 IP 为w.x.y.z:2494
,我无法获得连接。另一方面,如果我使用相同的配置文件并将 IP 更改为 ,127.0.0.1:1494
它确实有效。
我确实错过了一些东西,但根本就不知道是什么。
任何想法 ??
答案1
它唯一的作用是将 IP 数据包头重写为 127.0.0.1,并将 TCP 数据包头重写为端口 2494,但这发生得太晚了 - 路由决策已经做出,因此这样您只需在接口上生成一个无效数据包,下一个路由器就会丢弃它。
看一眼这张照片,它描述了数据包流。因此您需要根据它修改规则。
最后我必须说,虽然从初学者的角度来看,这种方法可能看似简单且合乎逻辑,但从网络工程师的角度来看,它是实现目标的最不完善和最奇怪的方式的完美例子。
答案2
我猜,这可能有效
iptables -t nat -A PREROUTING -p tcp -d w.x.y.z --dport 1494 -j REDIRECT --to 2494
我可能会通过指定源地址为您的内部网络来稍微收紧一点。我还假设代理也在监听内部网卡。