我有一个在家里运行的Ubuntu服务器,它连接到一个OpenVPN服务器。OpenVPN远程地址是176.126.237.214,带有端口25000。这个隧道连接将我的公共IP更改为由我的OpenVPN服务器发出的IP。目前,我无法远程连接到我的个人Ubuntu服务器。我已经尝试过用端口192.168.1.11打开服务器使用的端口8882。如何远程SSH连接到我的个人服务器?
发布于 2016-08-05 03:38:07
那么您想要使用服务器的原始(非VPN) IP地址进行连接吗?
问题是默认网关会被OpenVPN更改,从而破坏任何来自非VPN接口的连接。Linux将发送响应的数据包,在真正的接口上进来的VPN接口!在启动OpenVPN之前,您需要设置适当的路由。
下面的内容对我有用。它使用iptables和ip (iproute2)。下面假设启动OpenVPN之前的默认网关接口是"eth0“。这样做的目的是确保在建立到eth0的连接时,即使eth0不再是默认的网关接口,连接的响应数据包也会再次回到eth0上。
连接标记、防火墙标记和路由表可以使用相同的号码。我用不同的数字使它们之间的差别更加明显。
# set "connection" mark of connection from eth0 when first packet of connection arrives
sudo iptables -t mangle -A PREROUTING -i eth0 -m conntrack --ctstate NEW -j CONNMARK --set-mark 1234
# set "firewall" mark for response packets in connection with our connection mark
sudo iptables -t mangle -A OUTPUT -m connmark --mark 1234 -j MARK --set-mark 4321
# our routing table with eth0 as gateway interface
sudo ip route add default dev eth0 table 3412
# route packets with our firewall mark using our routing table
sudo ip rule add fwmark 4321 table 3412===
更新:
以上对我来说对很好。但是在一个旧的Wheezy系统上,我刚刚发现我需要在路由表条目中添加"via“:
# our routing table with eth0 as gateway interface
sudo ip route add default dev eth0 via 12.345.67.89 table 3412"12.345.67.89“必须是原来的非VPN网关。
https://askubuntu.com/questions/744771
复制相似问题