
我確實將路由器設定為使用第三方 VPN 以獲得最大的安全性。由於我使用的 ISP 已經阻止了所有已知的 VPN 協議,包括 OpenVPN 協議,因此我被迫將我的路由器配置為使用 http 代理,這樣 OpenVPN 就可以隱藏其指紋,免受審查 ISP 防火牆的影響。
也就是說,我確實使用第三方商業 VPN 並使用他們的 OpenVPN tcp 設定文件,
以便為我連接的設備提供不受限制的互聯網。
由於 OpenVPN 用戶端需要 http 代理才能連接到其伺服器,因此我首先在路由器上設定 http 代理,然後將 OpenVPN 用戶端連接到互聯網。
請注意,http 代理和 OpenVPN 用戶端都運行在相同的OpenWRT路由器,不單獨的設備!
也就是說,由於許多商業VPN 提供者在其OpenVPN 伺服器端在客戶端建立連線後將其路由和網關設定推送到客戶端,因此包括路由器處理器在內的整個用戶端LAN 介面被迫使用用戶端重定向的互聯網流量,並且因此,在應該直接從 WAN 獲取互聯網的路由器上運行的代理進程被迫使用 tun0 接口互聯網,幾秒鐘後它就會失敗,因此 openvpn 用戶端稍後會失敗。
為了防止上述問題我添加了無拉力命令進入客戶端.ovpn文件。
請注意,因為我使用的是商業 VPN我無法存取他們的 OpenVPN 伺服器!我的路由器確實使用iptables(fw3)而不是 nftables(fw4),因此 client.ovpn 檔案如下所示,
` 用戶端 dev tun0 proto tcp 遠端 XX.YY.ZZ.RR 443 nobind auth-user-pass cred.txt
persist-tun
......
http-proxy 192.168.55.1 1080 auto
http-proxy-retry
route-nopull
`
上面的配置像魅力一樣連接到 OpenVPN 伺服器(商業伺服器),並在我的 OpenWRT 路由器設備上建立一個 tun0 介面。
我可以透過 tun0 設備追蹤網站,沒有任何問題,
#traceroute -i tun0 www.yahoo.com
traceroute to www.yahoo.com (87.248.119.251), 30 hops max, 46 byte packets
1 * 10.124.148.1 (10.124.148.1) 1357.499 ms 195.523 ms
2 vlan112.as02.stk1.se.m247.ro (146.70.16.241) 199.262 ms 190.672 ms *
也就是說,由於我沒有從 OpenVPN 伺服器中提取任何路由和防火牆設置,因此我應該在建立此 tun0 介面後立即制定自己的路由和 iptables 規則。
但在解釋更多之前,我應該提到我的路由器本地IP 位址是192.168.55.1,並且br-lan(區域網橋)設備從DHCP 池位址192.168.55.65-192.168.55.126 或更準確地說(255.255)取得其IP 位址.255.192/26) 範圍。
我的意圖和目標是設定路由器來執行以下操作,
[a] br-lan上的所有設備(範圍192.168.55.65-192.168.55.126)除了路由器本身 192.168.55.1應該從 tun0 設備取得所有網路流量,包括 ssh、dns、icmp、tcp、udp...。
[b] 出於安全原因,如果沒有 tun0 介面或 tun0 介面沒有回應,則除路由器之外的 br-lan 設備(範圍 192.168.55.65-192.168.55.126)的所有互聯網流量都應被阻止從互聯網上,這意味著所有提到的設備應該只有在tun0 啟動並響應時才能訪問互聯網,沒有其他替代方案,例如加權路線替代路徑被接受。
[c] 所有 br-lan 設備包括路由器、印表機、PC、NAS……應該能夠在同一子網路上找到並相互通信,沒有任何限制。
我知道我可以將一些 OpenVPN 命令插入 client.ovpn 設定檔中,以使某些路由成為可能,例如,
拉式過濾器忽略“重定向網關”或者路線 192.168.55.64 255.255.255.192 但上面的命令已經將我鎖定了幾次,我無法訪問路由器網頁,此外它們都沒有按預期工作。
此外,我在建立 tun0 後手動執行了以下腳本,但它沒有讓網路流量通過 br-lan 裝置上的 tun0。
我在以下文件中建立了 ovpn 表
/etc/iproute2/rt_tables
#reserved values
#
128 prelocal
255 local
254 main
253 default
0 unspec
#
# local
#
#1 inr.ruhep
1 ovpn
和
iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE
iptables -A FORWARD -i br-lan -o tun0 -s 192.168.55.64/26 -j ACCEPT
iptables -A FORWARD -i tun0 -o br-lan -j ACCEPT
iptables -A INPUT -i tun0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
ip route add default dev tun0 table ovpn
ip route add 192.168.55.64/26 dev br-lan table ovpn
ip rule add from 192.168.55.64/26 table ovpn
我用谷歌搜尋了很多來找到解決方案,但我很確定我應該將 tun0 視為一個簡單的半廣域網路介面。
這是我的簡單路由表,沒有額外的手動路由,
#route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.8.1 0.0.0.0 UG 0 0 0 phy1-sta0
10.124.148.0 0.0.0.0 255.255.254.0 U 0 0 0 tun0
192.168.8.0 0.0.0.0 255.255.255.0 U 0 0 0 phy1-sta0
192.168.55.0 0.0.0.0 255.255.255.0 U 0 0 0 br-lan
和更多
#ip route show
default via 192.168.8.1 dev phy1-sta0 proto static src 192.168.8.118
10.124.148.0/23 dev tun0 proto kernel scope link src 10.124.148.113
192.168.8.0/24 dev phy1-sta0 proto kernel scope link src 192.168.8.118
192.168.55.0/24 dev br-lan proto kernel scope link src 192.168.55.1
對於上述目標的任何提示或解決方案,我將不勝感激,我對路由和 iptables 很菜鳥。
順便說一句,我不知道如何進行所需的配置,例如if_tun0_up.sh和if_tun0_down.sh自動在 client.ovpn 檔案中自動建立和清除路由。
能夠做一個LAN 設備範圍(br-區域網路)除了路由器從 VPN 供應商取得網路流量。
保護和阻止LAN用戶存取受限不安全網際網路. 自動化建立和刪除的任務路由和 iptables 規則和 開幕和關閉tun0 介面。
答案1
不是一個完整的答案,但可能會讓你找到方向。在 client.ovpn 中,我將指定您想要透過 VPN 存取哪個網絡,並在 client.ovpn 中使用以下語句。例如:
route 10.0.0.0 255.255.255.0 vpn_gateway
由於您使用的是商業供應商,tun0 裝置從其池中取得 IP 位址,因此我不建議讓 LAN 裝置可存取。大多數情況下,它是受防火牆保護的 IP,沒有為您想要的服務開啟任何連接埠。這是一個客戶端 VPN。如果您想透過 VPN 存取您的 LAN,您需要一個帶有您自己的 VPN 伺服器的網站到網站 VPN。