通過 WiFi 共享 VPN 連接
我有兩台電腦連接到同一個路由器
10.9.8.1
:
- 電腦 A
10.9.8.2
執行 Windows 10 Insider Preview。Insider Preview 已損壞 VPN,無法回滾。:(- 電腦 B
10.9.8.3
執行 Linux Mint 並通過openconnect
.以下是
ipconfig
關於 B(片段)的報告:tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 inet addr:10.23.8.183 P-t-P:10.23.8.183 Mask:255.255.255.255 inet6 addr: fe80::7fb2:5598:b02e:e541/64 Scope:Link UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1410 Metric:1 RX packets:24 errors:0 dropped:0 overruns:0 frame:0 TX packets:42 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:500 RX bytes:7005 (7.0 KB) TX bytes:3243 (3.2 KB) wlp3s0 Link encap:Ethernet HWaddr 60:67:20:36:6f:a4 inet addr:10.9.8.3 Bcast:10.9.8.255 Mask:255.255.255.0 inet6 addr: fe80::8e96:7526:ff54:d1be/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:22511502 errors:0 dropped:0 overruns:0 frame:0 TX packets:16052631 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:24451442281 (24.4 GB) TX bytes:6038264731 (6.0 GB)
我需要從電腦 A 訪問 VPN 後面的資源。
我正在考慮以這樣的方式在 A 上配置路由,以便它可以通過 B 訪問 VPN 資源,同時直接將路由器用於其他一切。
在最壞的情況下,我可以直接連接兩台電腦,但如果可能的話,我想避免這種情況。
在 Windows 上,我可以簡單地將任何適配器標記為共享。但是當我在 Linux 上做同樣的事情時,適配器會失去連接。不知道如何正確地做到這一點。
路由
在 host 上
A
,您需要將目標網路的所有流量路由到 hostB
。我會假設這就像192.168.0.0/24
對於 linux(在主機上
A
):ip r a 192.168.0.0/24 via 10.9.8.3 dev eth0
對於 Windows(在主機上
A
):route ADD 192.168.0.0 MASK 255.255.255.0 10.9.8.3
轉發
路由到位後,網路的所有包
192.168.0.0/24
都將發送到主機B
。要允許將包從主機轉發
wlp3s0
到tun0
主機B
,您需要啟用 IP 轉發。為所有介面臨時啟用 IP 轉發:
sysctl net.ipv4.conf.all.forwarding=1
要永久啟用此更改,請將新行添加到
/etc/sysctl.conf
:net.ipv4.conf.all.forwarding = 1
除了介面設置之外,還
iptables
可能處於活動狀態並且需要允許包轉發。檢查是否
iptables
處於活動狀態(至少對於FORWARD
鏈):iptables -L FORWARD -nv
如果鏈上沒有規則,並且政策說
ACCEPT
,你可以去,如果沒有,你需要添加相關規則以允許轉發192.168.0.0/24
。允許將所有包轉發到
192.168.0.0/24
onwlp3s0
:iptables -I FORWARD -i wlp3s0 -d 192.168.0.0/24 -j ACCEPT iptables -I FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
自動允許
RELATED,ESTABLISHED
退貨包裹。NAT
現在,轉發設置後,包將被發送到隧道中。但是只要VPN後面的遠端網路不知道我們的本地網路,通常情況下,我們需要
NAT
所有來自我們本地網路的包,並將進入VPN的地址,我們從VPN-伺服器(即 上的 IPtun0
)。為此,您需要
MASQUERADE
在表中創建一個規則POSTROUTING
:iptables -t nat -I POSTROUTING -o tun0 -j MASQUERADE
這將把所有傳出的包都放到
tun0
介面的 IP 上。