VPN 網關工作站無法存取

VPN 網關工作站無法存取

我想使用我的 Linux 工作站作為我的本地網路的 VPN 網關。同一工作站被用作網路伺服器。當我將工作站連接到 VPN 時,無法再從外部網路存取該網路伺服器。

我的設定如下:

ISP 路由器 - ip 192.168.0.1(預設網關,啟用連接埠對映以使用非標準公用連接埠)

Linux工作站-固定IP 192.168.0.20(dhcp伺服器作為我的路由器不允許更改網關位址、openvpn、apache、dns伺服器)

“ip 路由顯示”的輸出

0.0.0.0/1 via 10.8.3.1 dev tun0 
default via 192.168.0.1 dev eth0 src 192.168.0.20 metric 202 
10.8.3.0/24 dev tun0 proto kernel scope link src 10.8.3.12 
37.120.143.221 via 192.168.0.1 dev eth0 (VPN external IP)
128.0.0.0/1 via 10.8.3.1 dev tun0 
192.168.0.0/24 dev eth0 proto kernel scope link src 192.168.0.20 metric 202 

配置如下:

net.ipv4.ip_forward = 1
iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE

-P INPUT DROP
-P FORWARD DROP
-P OUTPUT ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -i eth0 -p icmp -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i eth0 -o tun0 -j ACCEPT
-A FORWARD -i tun0 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT

我注意到的一件事是,當在工作站上啟用 VPN 時,我的 ISP 路由器不會在連接的用戶端清單中列出我的 Linux 工作站的正確本機 IP 位址。有時它是正確的,但有時它看起來像一個隨機IP。

如果我新增以下路由:EXTERNAL_IP via 192.168.0.1 dev eth0(其中EXTERNAL_IP是WAN ip),那麼我可以存取本地網路上的網路伺服器,但仍然無法從另一個網路存取。

答案1

你的設定沒有問題,錯誤在於你的路由。

如果你的伺服器工作正常兩個都作為網路伺服器作為遠端伺服器的 VPN 用戶端,任何嘗試存取網路伺服器的使用者都將收到來自遠端 VPN 伺服器的回應(不是直接從網路伺服器)因為本地伺服器的路由表指示它路由一切透過遠端 OpenVPN 伺服器。出於明顯的安全原因,任何向站點 A 發送查詢但收到 B 回覆的機器都會自動丟棄該回應。因此,網路伺服器變得無法存取。

有很多很多方法可以解決你的問題。我最喜歡的方法是保持網路伺服器不變,並將 OpenVPN 用戶端移至同一伺服器上託管的 Linux 容器,然後將路由器配置更改為 DHCP/dnsmasq(無論什麼)伺服器,以透過 Linux 容器路由所有 LAN 通信。這比聽起來容易得多。

另一種可能性是設定路由表,將主路由表留給 OpenVPN 用戶端,同時將第二個路由表設定為完全相同的造訪 VPN 時您擁有的路由表不是活動,然後指示您的核心透過第二個路由表路由來自伺服器(本身!)的所有流量。其餘流量(源自 LAN 的流量,以及您希望透過 OpenVPN 路由的流量)將預設使用主路由表。

這也很容易做到,你可以找到這裡對 Linux 的精彩、非常簡短的介紹政策(或者來源)路由。

或者您可以決定將您的網站伺服器託管在託管 OpenVPN 伺服器的同一台電腦上,這也可以解決您的問題。在這種情況下,最簡單的事情就是鏡子您的本機網站位於遠端伺服器上,以便您可以在本地進行任何變更。

選擇權完全取決於您。

相關內容