我有一台运行 macOS 10.14 的 mac,它连接到 VPN(使用 OpenVPN),VPN 的网关是所有传出流量的默认网关/路由。这会导致我无法从任意外部 IP 地址连接到我的 mac 上的任何服务,即使我已经在我的路由器上正确设置了端口转发。(不过,来自与 mac 相同的本地网络的其他系统可以连接到它的服务。)
有什么方法可以配置,以便将特定端口上来自非本地 IP 的传入连接路由到我的 Mac 的本地 IP / 物理网络适配器,而不是通过 VPN?
我愿意接受涉及更改我的 mac 上配置的某些内容的解决方案,可能使用静态路由或 pf,或者更改我的路由器上的配置。例如,如果有某种方法可以将我的路由器配置为将此端口上的传入流量转发到我的 mac,但将该连接的源 IP 更改为路由器的 IP,我认为这可以解决问题。
在我看来这真的很丑陋,但是是的,它应该很容易做到。源 IP 转换是通过路由器已经用于所有出站数据包的常规 SNAT(伪装)完成的,只是这次需要将其应用于入站流量。
这取决于您的路由器,其 UI 是否允许您为常规出站流量以外的任何其他内容配置 SNAT,但是基于 iptables(OpenWRT 或 RouterOS)或 nftables 或 pf 的任何内容都具有此功能。
通过 macOS 实现源特定路由的答案
pf
通常是更好的解决方案。或者,如果路由器(而不是 macOS 本身)是 OpenVPN 客户端,那么您可以对其应用现有的“Linux 策略路由”答案。