问题
最近由于探索了Moonlight推流,再加上学校校园网有设备数限制,于是想要将我的PC与Mac组建一个局域网,Mac连接Wi-Fi后通过有线共享给PC,同时PC开启热点给其他设备共享网络。但在按照官方说明开启互联网共享后,却发现PC始终无法上网。询问苹果官方客服,对方称Mac的设置是正确的,没有其他设置,可能是PC问题。
后来在我跟ChatGPT探讨了一下午各种解决方案后,发现了问题是Mac需要额外设置NAT后才能共享网络。
操作方法
查看网卡名称
在终端中执行以下指令,查看网卡名称。
ifconfig
将返回一大堆网卡信息。从这一堆网卡信息中找出自己的Wi-Fi网卡和以太网网卡的名称。
配置 NAT 规则
备份并打开/etc/pf.conf
:
sudo su
cp /etc/pf.conf /etc/pf.bak
vi /etc/pf.conf
在文件中,您需要添加一条规则来设置 NAT。假设 en0 是 Wi-Fi 接口,而 en1 是您想共享到的以太网接口,您可以添加如下规则:
nat on en0 from en1:network to any -> (en0)
这条规则的意思是:将从 en1 接口(以太网)发出的流量,通过 en0 接口(Wi-Fi)进行 NAT 转换。
注意,您应该将 NAT 规则放在 nat-anchor "com.apple/*"
之后,但在 load anchor "com.apple" from "/etc/pf.anchors/com.apple"
这一行之前。例如:
...
rdr-anchor "com.apple/*"
dummynet-anchor "com.apple/*"
anchor "com.apple/*"
nat on en0 from en1:network to any -> (en0)
load anchor "com.apple" from "/etc/pf.anchors/com.apple"
IP转发设置
执行以下指令,开启IP转发功能:
sudo sysctl net.inet.ip.forwarding=1
sudo sysctl net.inet6.ip6.forwarding=1
应用更改
在进行更改后,重新加载 PF 配置:
sudo pfctl -f /etc/pf.conf
sudo pfctl -e
现在,再去看看,应该可以上网了。
设置永久的 sysctl 参数
在 macOS 和其他基于 Unix 的操作系统中,使用 sysctl 命令直接设置的参数通常不是永久生效的。这些更改只在当前会话有效,意味着在系统重启后这些设置将被重置为默认值。要使 sysctl 设置永久生效,需要将这些设置添加到系统的配置文件中。
对于 macOS,您可以将 sysctl 设置添加到 /etc/sysctl.conf 文件中,以实现永久生效。这个文件在系统启动时会被读取,从而应用其中的设置。
编辑 /etc/sysctl.conf:
打开 /etc/sysctl.conf 文件
在文件中添加以下行来永久启用 IPv4 和 IPv6 转发:
net.inet.ip.forwarding=1
net.inet6.ip6.forwarding=1
保存并关闭文件。现在更改永久生效了。
后记
这真的是给普通用户使用的功能?官方连个说明都没有,要不是ChatGPT我都不知道
文章评论
好好好,老师讲的好