SSH 服务器还运行 OpenVPN 客户端 - 入站 SSH 超时

SSH 服务器还运行 OpenVPN 客户端 - 入站 SSH 超时

我有一个运行 Debian 的远程家庭服务器。由于 ISP 阻止端口 22,我碰巧在非标准端口上使用 SSH。当 OpenVPN 客户端未在服务器上运行时,我从网络外部连接到 SSHd 没有任何问题。当我启动 OpenVPN 客户端时,我得到以下信息:

$ ssh -v -p 922 domain.dyndns.org
OpenSSH_6.7p1 Debian-5+deb8u3, OpenSSL 1.0.1t  3 May 2016
debug1: Reading configuration data /home/user/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to domain.dyndns.org [1.2.3.4] port 922
debug1: connect to address 1.2.3.4 port 922: Connection timed out
ssh: connect to host domain.dyndns.org port 922: Connection timed out

我有一个动态 IP 地址,但服务器位于路由器后面,所以我无法考虑将 sshd 绑定到公共地址。即使可以,我也不相信数据包不会通过 tun0 丢失。

在我上网尝试解决此问题时,我发现了以下脚本。

#!/bin/bash
grep -q fix_ssh /etc/init.d/openvpn || sed -i.backup -e '/start_vpn ()/ i fix_ssh () {\
ip rule add fwmark 65 table novpn\
ip route add default via 192.168.0.1 dev eth0 table novpn\
ip route flush cache\
iptables -t mangle -A OUTPUT -p tcp --sport 922 -j MARK --set-mark 65\
iptables -A INPUT -i tun0 -p tcp -m tcp --dport 922 -j DROP\
}\
undo_fix_ssh () {\
iptables -D INPUT -i tun0 -p tcp -m tcp --dport 922 -j DROP\
iptables -t mangle -D OUTPUT -p tcp --sport 922 -j MARK --set-mark 65\
ip route del default via 192.168.0.1 dev eth0 table novpn\
ip rule del fwmark 65 table novpn\
ip route flush cache\
}'\
   -e 's/start_vpn$/& \&\& fix_ssh/' \
   -e 's/stop_vpn$/& \&\& undo_fix_ssh/' \
/etc/init.d/openvpn

我试过运行它,但没有成功。与我找到的其他答案相比,我并不完全确定此解决方案的问题所在,而且我已经没有办法进行故障排除了。

我不完全确定解决这个问题的最佳方法是什么。 OpenVPN 服务是我无法控制的商业服务。

编辑:我的目标是能够在 SSH 服务器运行并连接到 OpenVPN 服务器时通过 SSH 连接到它。我希望所有其他流量都通过 VPN。最终,我想使用 SSHFS 来查看 SSH 服务器上的文件,然后进行端口转发,以便我的笔记本电脑在数英里之外可以共享相同的 VPN 连接。

------------ ---------------- |My Server |--->OpenVPN>---|Commercial VPN |-->Internet>--Web ------------ Over internet | Server | | ----------------- /|\ SSH Over Internet /|\ ---------- | Laptop | ----------

编辑 2:不,笔记本电脑与 SSHd 服务器位于不同的位置。为了清晰起见,再次编辑了图片。

编辑3:涉及到一个路由器。服务器位于路由器后面。 tun0 是 OpenVPN 连接。

$ sudo /sbin/iptables-save # Generated by iptables-save v1.4.14 on Mon Dec 26 13:03:22 2016 *mangle :PREROUTING ACCEPT [11077726:5767595109] :INPUT ACCEPT [9445198:5734927839] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [10132207:7571233156] :POSTROUTING ACCEPT [10132784:7571256515] -A OUTPUT -p tcp -m tcp --sport 922 -j MARK --set-xmark 0x41/0xffffffff COMMIT # Completed on Mon Dec 26 13:03:23 2016 # Generated by iptables-save v1.4.14 on Mon Dec 26 13:03:23 2016 *filter :INPUT ACCEPT [9445173:5734925686] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [10132201:7571259291] -A INPUT -i tun0 -p tcp -m tcp --dport 922 -j DROP COMMIT # Completed on Mon Dec 26 13:03:23 2016

编辑:我是否最好使用像 Raspberry pi 这样的东西来 ssh 以避免这种情况?我会遇到不同的困难吗?我仍然不确定根本原因,不知道这是否能解决任何问题。 SSH 隧道链是不是不好的形式?想法是:

[笔记本电脑]->SSH->--------->-[Pi]-同一网络->-[我的服务器]->-[OpenVPN]

              /|\                    
            [router]

编辑: Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 0.0.0.0 10.68.10.5 128.0.0.0 UG 0 0 0 tun0 0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 eth0 10.68.10.1 10.68.10.5 255.255.255.255 UGH 0 0 0 tun0 10.68.10.5 0.0.0.0 255.255.255.255 UH 0 0 0 tun0 128.0.0.0 10.68.10.5 128.0.0.0 UG 0 0 0 tun0 192.40.88.17 192.168.0.1 255.255.255.255 UGH 0 0 0 eth0 192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0

.ovpn 文件的内容: client dev tun proto udp remote server 1194 resolv-retry infinite nobind persist-key persist-tun ca ca.crt tls-client remote-cert-tls server auth-user-pass auth.txt comp-lzo verb 1 reneg-sec 0 crl-verify crl.pem

# Allow calling of built-in executables and user-defined scripts. script-security 2

# Parses DHCP options from openvpn to update resolv.conf up /etc/openvpn/update-resolv-conf down /etc/openvpn/update-resolv-conf

相关内容