通过 WiFi 共享 VPN 连接

通过 WiFi 共享 VPN 连接

我有两台计算机连接到同一个路由器10.9.8.1

  • 计算机 A10.9.8.2运行 Windows 10 Insider Preview。 Insider Preview 的 VPN 已损坏且无法回滚。 :(
  • 计算机 B10.9.8.3运行 Linux Mint,并通过 建立 VPN 连接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 上执行相同的操作时,适配器会失去连接。不知道如何正确地做到这一点。

答案1

路由

在主机上,A您需要将目标网络的所有流量路由到主机B。我会假设这就像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

为了允许数据包从主机转发wlp3s0tun0主机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/24on wlp3s0

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允许退回包裹。


网络地址转换

现在,转发设置完成后,数据包将被发送到隧道中。但是,只要 VPN 后面的远程网络不知道我们的本地网络(通常是这种情况),我们需要将NAT来自本地网络并将进入 VPN 的所有包发送到我们从 VPN 获得的地址 -服务器(即 上的 IP tun0)。

为此,您需要MASQUERADE在表中创建一条规则POSTROUTING

iptables -t nat -I POSTROUTING -o tun0 -j MASQUERADE

这会将所有传出包绑定tun0到接口的 IP 上。

相关内容