将外部 IP 路由到 ssh 隧道

将外部 IP 路由到 ssh 隧道

我需要捕获所有发往外部 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

我可能会通过指定源地址为您的内部网络来稍微收紧一点。我还假设代理也在监听内部网卡。

相关内容