通过 VPN 网关路由 LAN 流量

通过 VPN 网关路由 LAN 流量

我的 iMac 有连接到远程 VPN 的软件。它运行良好 - 但仅限于特定设备。

我现在希望允许网络上的其他设备通过 iMac 访问相同的 VPN 连接。这样做的原因是我的手机无法连接到 VPN 本身,因为它不支持 OpenVPN 协议。

我已启用端口转发:sysctl -w net.inet.ip.forwarding=1

我尝试将以下内容添加到文件中的第 32 行/etc/pf.confnat on utun1 from en0:network to any -> (utun1)其中 en0 是互联网来自的以太网端口,utun1 是连接 VPN 后所有流量所在的位置

当我运行时,sudo pfctl -e -f /etc/pf.conf我收到错误:

/etc/pf.conf:32: 规则必须按顺序排列:选项、规范化、排队、转换、过滤 pfctl: 配置文件中的语法错误:pf 规则未加载

谁能告诉我为什么我会收到此错误?我是否错误地使用了 nat 命令?

仅供参考 - 我一直在关注教程使用命令行工具在 Mac OSX 上设置 Internet 共享

答案1

使用的设备:

  • 运行 10.14.5 Mojave 的 iMac Pro 2017(作为网关)
  • 运行 Android 9 的 Android S10+
  • iPhone XS
  • iPad Pro 11 英寸

在我的家庭 LAN 上,我的 iMac 连接到恩0静态 IP 为 192.168.1.100。我可以浏览互联网,但由于 ISP 的防火墙而受到限制。我的目标是在连接到 VPN 的 iMac 上运行软件。完成后,我将使用 iMac 作为网关,以便 LAN 上的其他设备可以通过它进行路由并使用 VPN 连接。

需要注意的是,VPN 使用 OpenVPN XOR 协议进行连接,该协议只能使用 VPN 提供商提供的自定义软件来使用,因此我无法将 VPN 软件直接加载到手机或 iPad 等设备上。

我非常接近完成这项工作,我只是在某个地方错过了一步。以下是我迄今为止的发现:

答:为了进行测试,我断开 VPN,以便 iMac 能够正常浏览互联网。

A1。我更改手机上的 WiFi 设置,以使用静态 IP 192.168.1.84 和自定义网关 192.168.1.100 (iMac)。我像往常一样连接到 WLAN,但无法浏览。

A2。在 iMac 上,我运行sudo sysctl -w net.inet.ip.forwarding=1启用端口转发,现在我可以通过 iMac 在手机上成功浏览互联网。

结论:电话 -> iMac -> 互联网正常工作

B. 现在我们再试一次,但要连接 VPN:

B1。 iMac 成功连接到 VPN。很明显,所有互联网浏览现在都通过乌图1。我可以通过运行 nettop 或 netstat -rn 看到这一点。

B2。电话仍然使用 iMac 作为网关连接到 WLAN。但由于 VPN 已连接,因此无法再进行浏览。

B3。我添加nat on utun1 from 192.168.1.0/24 to any -> (utun1)/private/etc/pf.conf 然后我跑 sudo pfctl -d 然后 sudo pfctl -F all 然后 sudo pfctl -f /etc/pf.conf -e...然后我跑 sudo pfctl -s nat一切似乎都已正确加载。至此,我已经成功浏览VPN,畅通无阻。

**注意*"* 添加到 pf.conf 时,请确保在文件中的正确位置插入,因为如果代码位于错误的位置,它将无法运行。

结论:电话 -> iMac -> VPN -> 畅通的互联网正在工作

有趣的是,我在 72 小时内尝试了上述相同步骤的各种组合,但收效甚微。直到现在,在我定义了该流程并逐步执行之后,它似乎才起作用。即使重新启动后,我也会按顺序执行这些步骤,这似乎是一个可靠的过程。

下一步将是构建某种脚本,可以通过单击图标来自动执行该过程 - 甚至可能在 iMac 启动时运行它。

将随着任何更新而恢复。

相关内容