當 OpenVPN 用戶端處於活動狀態時,連接埠轉送不起作用

當 OpenVPN 用戶端處於活動狀態時,連接埠轉送不起作用

我已在執行 ddwrt 的路由器上成功設定 OpenVPN 用戶端,並且還將其設定為在啟動時啟用 OpenVPN。

家庭網路 => 帶有 OpenVPN 用戶端的 ddwrt 路由器 => 網路

如果 OpenVPN 用戶端可用,我可以看到路由器 Web 介面並透過 ssh 進入我的任何家用 UNIX 機器不是跑步。所以我想知道如果 OpenVPN 用戶端我該如何做同樣的事情跑步。

我確信我的家庭網路連線處於活動狀態,因為我現在正在透過 wifi 連接到路由器的 Macbook 上輸入此內容,而我的另一台 Macbook 透過 iPhone 個人熱點連接到網路。我正在第二台 Macbook 上進行測試。

重要訊息:

路由器防火牆關閉。

IP路由資訊

root@myrouter:~# ip route list
0.0.0.0/1 via 10.208.185.5 dev tun1 
default via my-wan-gateway-ip-here dev ppp0 
my-wan-gateway-ip-here dev ppp0  proto kernel  scope link  src my-real-ip-here
10.208.0.1 via 10.208.185.5 dev tun1 
10.208.185.5 dev tun1  proto kernel  scope link  src 10.208.185.6 
127.0.0.0/8 dev lo  scope link 
128.0.0.0/1 via 10.208.185.5 dev tun1 
169.254.0.0/16 dev br0  proto kernel  scope link  src 169.254.255.1 
192.168.1.0/24 dev br0  proto kernel  scope link  src 192.168.1.1 
my-vpn-ip via my-wan-gateway-ip-here dev ppp0

我的 OpenVPN 配置運行由 dd-wrt ​​創建的預設 router-up.sh自動地。我沒有對此腳本進行任何更改。

root@myrouter:/tmp# cat /tmp/openvpncl/route-up.sh 
#!/bin/sh
iptables -D POSTROUTING -t nat -o tun1 -j MASQUERADE
iptables -I POSTROUTING -t nat -o tun1 -j MASQUERADE
iptables -D INPUT -i tun1 -j ACCEPT
iptables -I INPUT -i tun1 -j ACCEPT

我的 DNS 伺服器(使用 Comodo 和 OpenDNS)

root@myrouter:/tmp# cat resolv.dnsmasq
nameserver 8.26.56.26
nameserver 8.20.247.20
nameserver 208.67.222.222

我還使用了一些在網路上找到的腳本,以便某些 IP 可以繞過 VPN。該腳本是我的啟動腳本 (rc_startup) 的一部分。我需要這個,以便我可以在平板電腦上玩這個特定的遊戲。

#!/bin/sh
sleep 30
NO_VPN_LST="192.168.1.11 192.168.1.2"
[ -z "$NO_VPN_LST" ] && exit 0
WAN_GWAY="0.0.0.0"
while [ $WAN_GWAY == "0.0.0.0" ]; do
sleep 3
WAN_GWAY=`nvram get wan_gateway`
done
ip route add default via $WAN_GWAY table 10
for ipa in $NO_VPN_LST; do
ip rule add from $ipa table 10
done
ip route flush cache
exit 0

答案1

您面臨的問題可能是預設/來源路由之一。

當 VPN 無法工作時,因為預設網關超出了您的 Internet 連接,但是當您啟動 VPN 時,會添加一些新路由“0.0.0.0/1 通過 10.208.185.5 dev tun1 和 128.0.0.0/1 via 10.208.185.5 dev tun1 " 這具有使預設閘道成為VPN 端點而不是常規連線的最終效果。

所以有兩種解決方案,取決於您需要做什麼 -

更簡單的解決方案是擺脫創建預設網關的這兩行,並在您想要透過 VPN 存取的 VPN 連接上編程(或讓您的提供者編程)特定路由。只有當您將 VPN 用於特定目的(例如連接到公司網路)時,這才是一個選項,但如果您試圖在更廣泛的 Internet 上隱藏您的身份,則此選項不太適合您。

更難的解決方案是執行「基於來源的路由」 - 這意味著設定 2 個路由表 - 目前的一個是預設表,第二個表用於回應直接透過常規連接進入的內容,具有不同的預設路由。這並非易事,但有許多連結如何做到這一點,包括這裡這裡 (Google搜尋的關鍵字是「來源路由」或「策略路由」——如果你真的想成為這方面的專家,你可能需要熟悉拉特- 第 4 章介紹策略路由)

相關內容