我希望有人能帮助我,因为我无法进一步:
我有以下设置:
系统 1:PC Windows (192.168.240.2) 系统 2:PC Ubuntu (192.168.240.3)
在 Ubuntu 系统上,我打开了与 VPN 提供商的 ssh 连接,
Ubuntu 系统上的本地端口是 5080 VPN 提供商的远程端口是 3128(http 代理):
ssh -N -oUserKnownHostsFile=perfect_privacy_known_hosts -L 5080:127.0.0.1:3128 -v[电子邮件受保护]
如果我在 Ubuntu 系统上使用 Firefox 和 Foxy Proxy 并连接到 localhost:5080,流量会通过 ssl 隧道到达 VPN 提供商,一切正常。
现在我想通过 Ubuntu 客户端从 Windows 客户端连接到 VPN 提供商。所以我做了同样的事情,在Window客户端上我把Ubuntu客户端的IP地址192.168.240.3和端口5080放入狡猾的代理中。但这不起作用(我认为因为ubuntu客户端上的ssh隧道在本地主机上侦听而不是 192.168.240.3)
我需要做什么才能让它发挥作用
最好的问候桑古尔
答案1
这是执行此操作的一种方法。
同时添加
ExitOnForwardFailure=yes
选项...以避免
ssh
错误地保留多个。无论如何,只有第一个可以打开端口的人才能处理转发的端口。更改
ssh
命令,使其不再使用 127.0.0.1 进行监听要么听 192.168.240.3
...通过将此可选 IP 地址添加到
-L
范围。这意味着 Firefox 代理必须更新为 192.168.240.3:5080 而不是 127.0.0.1:5080 。ssh -N -o ExitOnForwardFailure=yes -o UserKnownHostsFile=perfect_privacy_known_hosts -L 192.168.240.3:5080:127.0.0.1:3128 -v [email protected]
或听 0.0.0.0
...绑定到 IPv4
INADDR_ANY
通配符地址,避免更改 Firefox 代理设置,尤其是在 Ubuntu 主机具有动态 IP 地址且没有已知 DNS 的情况下。ssh -N -o ExitOnForwardFailure=yes -o UserKnownHostsFile=perfect_privacy_known_hosts -L 0.0.0.0:5080:127.0.0.1:3128 -v [email protected]
注:该
-g
选项(即-o GatewayPorts=yes
) 与上面的效果相同,只是它也绑定到in6addr_any(::
)地址,因此即使没有 IPv6 防火墙,IPv6 访问也将不受限制:最好避免-g
这种情况。
可选:使用限制访问iptables。如果不需要的话可以完全省略。
由于OP添加了iptables标记,也只允许主机本身和192.168.240.2访问此端口。 (几乎)不会影响任何其他访问,因为OP没有要求这样做,这真的会开始变得偏离主题。
我正在考虑目前没有iptables(也不是 UFW/firewalld)到位。考虑更新提供的工具iptables规则(如果存在此类工具)。下面的规则应该首先让它们正常工作,所以我使用
-I
+ 数字(以保持升序),而不是-A
允许它们在可能的防火墙工具之前添加的规则之前添加,但这不会有太大帮助用于启动时自动设置。iptables -I INPUT 1 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT iptables -I INPUT 2 -i lo -j ACCEPT iptables -I INPUT 3 -m conntrack --ctstate INVALID -j DROP iptables -I INPUT 4 -p tcp -s 192.168.240.2 --dport 5080 -j ACCEPT iptables -I INPUT 5 -p tcp --dport 5080 -j REJECT --reject-with tcp-reset
这允许之前的连接继续,来自主机本身的任何连接,然后只允许从 192.168.240.2 访问端口 5080。
注意:
... INVALID -j DROP
存在REJECT
规则时这是强制性的(请参阅此犯罪了解技术细节)。