Ubuntu

通過 VPN 路由所有內容,埠 22 上的 SSH 除外

  • February 22, 2017

我有一台伺服器,我想在其上設置一個 VPN 來路由所有流量。

當然,我不想在建立 OpenVPN 連接時阻止自己(已經這樣做了!)所以我希望埠 22 不受影響並且像往常一樣可以訪問。

這可能嗎?如果是這樣,我該如何設置?

您需要將路由添加到您的伺服器,以便 ssh 數據包通過伺服器的公共 ip 而不是 vpn 進行路由。不這樣做意味著 ssh 返回數據包將通過 openvpn 路由。這就是您在啟動 openvpn 客戶端會話後被鎖定在伺服器之外的原因。

讓我們假設您的伺服器:

  • 公共 IP 是a.b.c.d
  • 公共 IP 子網是a.b.c.0/24
  • 預設網關是x.x.x.1
  • eth0是設備到網關

iproute2是你的朋友嗎?請執行下列操作:

ip rule add table 128 from a.b.c.d
ip route add table 128 to a.b.c.0/24 dev eth0
ip route add table 128 default via x.x.x.1

route -n確認新的路由表出現。如果您重新啟動伺服器,上述命令將不會持續存在。您需要將它們添加到您的網路介面配置文件中。

然後執行你的 openvpn 客戶端配置 openvpn --config youropenvpn-configfile.ovpn &

增加獎金

此外,如果您希望將公共 IP 的流量限制為 ssh 並且僅 ssh,那麼您需要添加iptables如下過濾:

iptables -A INPUT -d a.b.c.d -p tcp --dport <*ssh port number*> -j ACCEPT
iptables -A INPUT -d a.b.c.d -j DROP

ps:我記得第一次在 Linode 的論壇上了解這個 - Google它,你應該能夠找到關於這個的文章。

引用自:https://unix.stackexchange.com/questions/182220