透過 SSH 連接到連接到 VPN 的伺服器

透過 SSH 連接到連接到 VPN 的伺服器

我的伺服器應該連接到 VPN 作為客戶。當我執行 OpenVPN 腳本(來自 HMA)時,透過 SSH 從本機電腦到伺服器的連線遺失 - 無法再進行連接,我必須手動終止 VPN 進程。此外,隱藏的 TOR 服務(.onion 頁面)此時不可用。

當伺服器連接到 VPN 時,TOR 頁面是否可用且我可以透過 SSH 連線?

答案1

問題在於 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

===

更新:

上面的內容對我來說在 Debian Jessie 上運作得很好。但在較舊的 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閘道。

答案2

我有一個類似的問題。我的 Ubuntu 桌面位於 VPN 上,而我的正常 SSH 連線在家庭網路外部無法運作。

不過,我剛剛想到了一些事情。您還有轉送到該電腦的連接埠嗎?

VPN 從 VPN 站點指派新的 IP 位址,因此路由器無法再找到要連線的 IP 位址。

我假設您需要知道 VPN 主機分配的新 IP 位址才能知道要連接到哪個位址。

我只是給出有根據的猜測,而不是已知的修復;所以如果不起作用請不要虐待我。 :)

經過進一步調查,我發現您需要透過 VPN 轉送連接埠(我認為),因為 VPN 正在重定向連接埠 80,而您的 SSH 隧道通常使用連接埠 22。連接埠80 上的VPN,它會將您重新導向到SSH 隧道所需的轉送端口,即。油灰。

我仍然不能 100% 確定這是如何做到的。如果有人能證實這一點,那就太好了。

相關內容