jak*_*451 12 networking local-area-network routing ip mac-osx
我的 macbook pro 上有两个网络设备:
我有 4 个需要在 LAN 上访问的 IP 地址:
剩下的流量需要走WIFI。我曾尝试为特定的 ip 地址设置路由表,但我只是设法弄乱了我的网络。我不经常冒险进入网络世界,但这是我一直在尝试的最新命令:
sudo route add -host 192.168.2.30 -interface en0
这个命令扼杀了我使用 ping 的能力。它告诉我 ping 无法分配内存(甚至可能)?它也杀死了我的 wifi 访问。注销并重新登录解决了该问题。我真的不介意将此解决方案永久化,因此我可以使用临时路由。
编辑:
如果我目前一直在尝试:
sudo route flush
sudo route add default 192.168.19.1
Run Code Online (Sandbox Code Playgroud)
这让一切工作大约一分钟。但是在这一分钟之后,它“忘记”了到 WiFi 的路由,同时保留了 LAN 的 (en0) 路由。如果我拔下并重新插入 LAN (en0) 电缆,该过程将再运行一分钟。
编辑2:
这些是 d34dh0r53 作为请求输入的一些命令。
$ netstat -rn
Routing tables
Internet:
Destination Gateway Flags Refs Use Netif Expire
default 192.168.2.1 UGSc 4 0 en0
default 192.168.19.1 UGScI 0 0 en1
127 127.0.0.1 UCS 0 1 lo0
127.0.0.1 127.0.0.1 UH 5 1429023 lo0
169.254 link#4 UCS 0 0 en0
192.168.2 link#4 UCS 4 0 en0
192.168.2.1 0:27:22:2e:5f:1a UHLWIi 2 0 en0 1199
192.168.2.10 127.0.0.1 UHS 0 0 lo0
192.168.2.30 90:a2:da:0:f5:63 UHLWIi 1 1433 en0 1191
192.168.2.255 ff:ff:ff:ff:ff:ff UHLWbI 0 7 en0
192.168.19 link#5 UCS 2 0 en1
192.168.19.1 3e:d0:f8:aa:28:56 UHLWIi 0 2 en1 1192
192.168.19.3 127.0.0.1 UHS 1 0 lo0
192.168.19.255 ff:ff:ff:ff:ff:ff UHLWbI 0 5 en1
Internet6:
Destination Gateway Flags Netif Expire
::1 link#1 UHL lo0
fe80::%lo0/64 fe80::1%lo0 UcI lo0
fe80::1%lo0 link#1 UHLI lo0
fe80::%en0/64 link#4 UCI en0
fe80::226:4aff:fe00:b68a%en0 0:26:4a:0:b6:8a UHLI lo0
fe80::%en1/64 link#5 UCI en1
fe80::226:bbff:fe03:cbd%en1 0:26:bb:3:c:bd UHLI lo0
ff01::%lo0/32 fe80::1%lo0 UmCI lo0
ff01::%en0/32 link#4 UmCI en0
ff01::%en1/32 link#5 UmCI en1
ff02::%lo0/32 fe80::1%lo0 UmCI lo0
ff02::%en0/32 link#4 UmCI en0
ff02::%en1/32 link#5 UmCI en1
$ traceroute -n 192.168.2.1
traceroute to 192.168.2.1 (192.168.2.1), 64 hops max, 52 byte packets
1 192.168.2.1 2.499 ms 3.392 ms 3.829 ms
$ traceroute -n google.com
traceroute: unknown host google.com
Run Code Online (Sandbox Code Playgroud)
rak*_*ice 12
您不需要为该配置手动创建任何路由规则,前提是您要与之通信的所有 192.168.2.x 地址都位于具有 192.168.2.x 地址的接口下方。
完成此操作后,netstat -rn
仍应显示两个子网的路由,但仅显示“link#4”路由,而不是通过 192.168.2.1 的默认路由。
如果您不想要默认路由,请将路由器框留空。路由器框中的值仅用于设置通过此网络接口的默认路由,不用于其他任何事情。
小智 5
问题是您的en0
接口正在添加默认路由,该路由优先于 802.11 接口建立的默认路由。我不完全确定为什么,但 BSD 更喜欢有线接口而不是无线接口,或者它更喜欢静态配置的接口而不是动态配置的接口。您可以看出en0
该Refs
列正在使用默认路由;Refs
是一个指标,指示当前路由的活跃使用次数,因此我们可以看到它正在获取所有流量。
解决方案是从路由表中永久删除该路由,以便以本地网络以外的主机为目的地的流量通过 DHCP 建立的默认网关en1
。我要检查的第一件事是在配置面板中en0
确保您没有在该router
字段中输入任何内容。该字段中的信息被添加为默认网关。如果这不起作用,我们需要手动删除路由,route flush
不起作用的原因是我相信它告诉 OS X 从接口配置文件重新加载它的路由信息,因此在短时间内恢复您的更改。以下命令应该删除默认路由en0
界面,直到网络重新启动或系统被 IPL:
sudo route delete -net 0.0.0.0 192.168.2.1
Run Code Online (Sandbox Code Playgroud)
如果您想让此更改永久生效,您可以 a) 创建一个/Library/StartupItems
对我来说似乎工作量太大的服务,或者 b)/etc/rc.local
使用以下命令添加该行:
echo 'route delete -net 0.0.0.0 192.168.2.1' >> /etc/rc.local
Run Code Online (Sandbox Code Playgroud)
您可能需要sleep <number_of_seconds>
在该行之前添加一条命令,/etc/rc.local
以避免在接口完全启动并建立路由表之前运行该命令。
希望这会有所帮助,祝你好运!
归档时间: |
|
查看次数: |
34870 次 |
最近记录: |