Ssh

在具有活動 OpenVPN 客戶端的伺服器上允許 SSH

  • June 1, 2020

我有一個執行 CentOS 7 的 VPS,我通過 SSH 連接到它。我想在 VPS 上執行一個 OpenVPN 客戶端,以便通過 VPN 路由網際網路流量,但仍然允許我通過 SSH 連接到伺服器。當我啟動 OpenVPN 時,我的 SSH 會話斷開連接,我無法再連接到我的 VPS。如何配置 VPS 以允許在 VPS 的實際 IP (104.167.102.77) 上打開傳入的 SSH(埠 22)連接,但仍通過 VPN 路由傳出流量(如來自 VPS 上的 Web 瀏覽器)?

我使用的 OpenVPN 服務是 PrivateInternetAccess,範例 config.ovpn 文件是:

客戶
開發屯
原型 udp
遠端 nl.privateinternetaccess.com 1194
無限重試
無拘無束
持久鍵
堅持頓
ca ca.crt
tls-客戶端
遠端證書 tls 伺服器
身份驗證使用者通行證
comp-lzo
動詞 1
叛逆秒 0
crl-驗證 crl.pem

VPS的ip地址:

1: lo: man 65536 qdisc noqueue state UNKNOWN
連結/環回 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 範圍主機 lo
valid_lft 永遠首選_lft 永遠
inet6 ::1/128 範圍主機
valid_lft 永遠首選_lft 永遠
2: ens33: mtu 1500 qdisc pfifo_fast 狀態 UP qlen 1000
連結/乙太 00:50:56:be:16:f7 brd ff:ff:ff:ff:ff:ff
inet 104.167.102.77/24 brd 104.167.102.255 範圍全球 ens33
valid_lft 永遠首選_lft 永遠
inet6 fe80::250:56ff:febe:16f7/64 範圍連結
valid_lft 永遠首選_lft 永遠
4: tun0: mtu 1500 qdisc pfifo_fast 狀態 UNKNOWN qlen 100
連結/無
inet 10.172.1.6 對等 10.172.1.5/32 範圍全域 tun0
valid_lft 永遠首選_lft 永遠

VPS的ip路由:

0.0.0.0/1 通過 10.172.1.5 開發 tun0
預設通過 104.167.102.1 dev ens33 proto static metric 1024
10.172.1.1 通過 10.172.1.5 開發 tun0
10.172.1.5 dev tun0 proto 核心範圍連結 src 10.172.1.6
104.167.102.0/24 dev ens33 proto kernel scope link src 104.167.102.77
109.201.154.177 通過 104.167.102.1 開發 ens33
128.0.0.0/1 通過 10.172.1.5 開發 tun0

我遇到了與此類似的問題,並且一直在嘗試此論壇文章中描述的修復程序。

這個想法是,目前當您連接到您的公共 IP 地址時,返回的數據包正在通過 VPN 路由。您需要強制這些數據包通過您的公共介面進行路由。

這些路由命令有望解決問題:

從 xxxx 表 128 添加 ip 規則

ip route 將表 128 添加到 yyyy/y dev ethX

ip route add table 128 default via zzzz

其中 xxxx 是您的公共 IP,yyyy/y 應該是您的公共 IP 地址的子網,ethX 應該是您的公共乙太網介面,zzzz 應該是預設網關。

請注意,這對我不起作用(使用 Debian 和 PrivateInternetAccess),但可能會對您有所幫助。

引用自:https://serverfault.com/questions/659955