我的 iMac 有连接到远程 VPN 的软件。它运行良好 - 但仅限于特定设备。
我现在希望允许网络上的其他设备通过 iMac 访问相同的 VPN 连接。这样做的原因是我的手机无法连接到 VPN 本身,因为它不支持 OpenVPN 协议。
我已启用端口转发:sysctl -w net.inet.ip.forwarding=1
我尝试将以下内容添加到文件中的第 32 行/etc/pf.conf
:nat 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 启动时运行它。
将随着任何更新而恢复。