我已經完全配置(遠端)了一個以專業身份託管的 Debian GNU/Linux 專用伺服器,並且我有一個網頁路由問題(AFAICT 完全符合伺服器故障的常見問題解答)。
這個專用伺服器有一個靜態 IPv4 IP 和一個非常簡單的路由:
route -n
Table de routage IP du noyau
Destination Passerelle Genmask Indic Metric Ref Use Iface
94.xx.yy.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
0.0.0.0 94.xx.yy.254 0.0.0.0 UG 0 0 0 eth0
我只有一個靜態 IP,同一子網路上還有很多其他專用伺服器,我不能亂用。
該伺服器託管/服務我們公司的主要 Web 應用程式 (Apache+Tomcat),並且還運行 Squid。我自己完成了所有配置。一旦預算允許,我會將 Squid 移至另一台伺服器。
現在我想將 OpenVPN 添加到該伺服器(最好使用 tun,而不是 tap),並且我想知道需要做什麼才能確保我的介面不會與其他專用伺服器「衝突」。
我不明白應該如何完成設置,而且我對路線最終會是什麼樣子感到困惑。
為了幫助我理解“大局”,有人可以給出一個精確的例子:
- OpenVPN客戶端的本機IP位址
- OpenVPN 用戶端應使用的網關 IP
- OpenVPN伺服器的路由輸出
基本上我有點迷失,在開始之前我想了解 OpenVPN 伺服器上的路由是如何完成的。
據我了解,OpenVPN 用戶端應與 OpenVPN 伺服器位於同一網路上(例如,使用 10.0.0.0/8 網路),但我在試圖弄清楚客戶端將如何使用時遇到了心理障礙。使用94.xx.yy.254 網關。
答案1
假設 VPN 用戶端具有以下 IP 設定:
IP eth0: 192.168.1.100
Default gateway: 192.168.1.1
因此,所有非本地流量都將透過 192.168.1.1 流出。如果 LAN 上的另一台主機有流量,它只會流向該主機。
OpenVPN 啟動,客戶端取得一個新介面 tun0,然後我們看到類似以下內容:
IP eth0: 192.168.1.100
IP tun0: 10.8.0.13
Default gateway: 192.168.1.1
VPN routing: 10.8.0.1 for the network 10.8.0.0/24
這假設 OpenVPN 伺服器沒有推送任何額外的路由。因此,發送至 8.8.8.8 的網路封包仍將穿過 LAN 的預設閘道 192.168.1.1。例如,前往 10.8.0.204 的封包將穿過 OpenVPN 隧道,到達 10.8.0.1 的 OpenVPN 伺服器以進行進一步路由。
如果 OpenVPN 伺服器為其 LAN 推送一條路由,例如 172.16.0.0/24,那麼上面的 VPN 路由可能如下所示:
VPN routing: 10.8.0.1 for the network 10.8.0.0/24
10.8.0.1 for the network 172.16.0.0/24
因此,類似地,發送至 172.16.0.24 的封包將轉到 10.8.0.1 以進行進一步路由。
如果 OpenVPN 伺服器也推送該設置"redirect-gateway def1"
,則 VPN 用戶端上的預設網關會有所不同。你會看到類似的東西:
IP eth0: 192.168.1.100
IP tun0: 10.8.0.13
Default gateway: 10.8.0.1
(other gateway with lower priority): 192.168.1.1
Static route: 94.xx.yy.zz uses 192.168.1.1
其中 94.xx.yy.zz 是 OpenVPN 伺服器的公用 IP 位址。
在這種情況下,直接傳送至 OpenVPN 伺服器的流量將透過 LAN 預設閘道 192.168.1.1。 192.168.1.0/24 的本地流量將以預期流向主機。任何其他流量將使用 10.8.0.1;不直接到達 OpenVPN 伺服器公用 IP 的非本地流量將穿過 VPN 隧道,並從 94.xx.yy.254 發出。
您可能會在路由表中看到另一條預設路由保留 192.168.1.1 作為網關,但其優先權低於 10.8.0.1。我認為,這更像是 OpenVPN 用戶端的佔位符,這樣一旦 VPN 關閉,它就知道將預設路由設定回什麼。不用擔心該條目。