我已在執行 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 章介紹策略路由)