如果您在 macOS 下使用两块网络接口连接不同的网络,通常无法同时访问系统的内部网络和外部网络。这是因为计算机不知道哪些网络段确实属于内部网络。
设置网络接口的服务顺序
前往 系统偏好设置 - 网络 - 设置服务顺序,拖动以调整网络优先级。将连接到外部网络的网络接口放在连接到内部网络的网络接口之上。这将允许正常访问外部网络。
为内部网络接口设置相应的网络段
获取内部网络接口的网关地址。内部网络通常使用固定的 IP 地址。无论使用哪种方法,您都可以在网络设置的高级界面中找到路由器地址。此地址将在下一步中用于设置网关。
配置内部网络段
为了允许访问内部网络,请配置本地静态路由并添加指向相应内部网络网关的网络段。
添加:
sudo route add -net 10.0.0.0 -netmask 255.255.0.0 10.0.2.1
sudo route add -net 30.1.0.0 -netmask 255.255.0.0 10.0.2.1
删除:
sudo route delete -net 10.0.0.0 -netmask 255.255.0.0 10.0.2.1
sudo route delete -net 30.1.0.0 -netmask 255.255.0.0 10.0.2.1
'net' 参数对应于网络段的 IP 地址,'netmask' 是子网掩码。最后的 IP 地址是内部网络网关,也就是在上一步中获取的路由器 IP 地址。
测试内部和外部网络之间的连通性
在测试内部和外部网络是否连接之前,请避免使用网页浏览器进行测试。这主要是因为网页浏览器通常会缓存域名解析的结果,这可能无法提供实时结果。此外,内部网络中的域名解析通常会失败。具体原因将在下面说明。
使用 ping 命令对内部和外部网络的相关地址进行 ping 测试。该结果可以确定是否可以同时成功访问这两个网络。
# 显示当前路由表
netstat -rn
# 获取默认路由
route get 0.0.0.0
关于内部网络域和内部网络 DNS 解析
如果内部 DNS 服务器无法解析外部网络地址,则无法仅通过设置自动解析内部和外部网络域。
在 macOS 中,无法添加内部和外部 DNS 服务器地址以将内部网络地址解析到外部网络接口。一种方便的方法是,首先禁用外部网络接口,进入纯内部网络模式,ping 内部网络域名以获取内部 IP 地址,然后将其写入 Hosts 文件以进行本地解析。
测试 DNS 解析结果
您可以使用 nslookup 命令与域名一起检查当前用于解析域名的 DNS 服务器。