Ubuntu
通過 VPN 路由所有內容,埠 22 上的 SSH 除外
我有一台伺服器,我想在其上設置一個 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它,你應該能夠找到關於這個的文章。