Как направить IP-маршрут через определенный интерфейс в OS X?
Я на Mac и пытаюсь маршрутизировать определенный адрес через определенный шлюз на моем Wi-Fi-соединении.
Иногда это будет работать, а иногда — нет. Я обнаружил, что интерфейс, который он выбирает, каждый раз отличается. Это не должно быть en0 работать
netstat -nr вывод, когда он не работает:
Это когда это работает: (примечание en0)
Почему я это делаю? Потому что у нашей компании есть прокси, на котором HipChat не работает. Таким образом, я маршрутизирую трафик hipchat через открытую сеть Wi-Fi, все еще находясь в моей сети Ethernet.
Я также попытался добавить запись, используя только интерфейс
HipChat не может подключиться.
РЕДАКТИРОВАТЬ 2: Кто-то попросил всю мою таблицу маршрутизации, вот она сегодня. Обратите внимание, что 54.81.143.201 теперь связан с en3, а не en0
Как указали другие, это на самом деле 3 проблемы.
Ваш беспроводной интерфейс, кажется, меняется между en0, en3 и en5.
На моем MacBook Air en0 всегда беспроводная; Thunderbolt-to-Ethernet всегда en3, а USB-to-Ethernet всегда en5. Но если вы подключите адаптер к другому порту на вашем Mac, то имя его сетевой карты изменится. Вы должны решить это в первую очередь. Убедитесь, что ваше беспроводное устройство всегда имеет одно и то же имя. В противном случае, когда вы вводите команду статического маршрута, если к этому en0 местоположению не подключен сетевой адаптер , команда (очевидно) завершится с ошибкой адреса (физический адрес не имеет связи).
Также убедитесь, что адаптер всегда подключается к одному и тому же SSID. Очевидно, адрес шлюза должен быть действительным для подсети, и разные сети WiFi будут иметь разные подсети. Это может вызвать другой тип ошибки.
Вы не указали, является ли беспроводное соединение единственным сетевым подключением. Учитывая вышесказанное, я думаю, нет . Это и виртуальные сети из-за VMware или Parallels могут вызвать дополнительные сложности. (Например, если обе подключенные сети используют одно и то же пространство IP-адресов . Виртуальные машины часто имеют мосты и имеют свои собственные IP-адреса / маршруты / ссылки . ) Поможет размещение топологии сети.
Как только это будет сделано, попробуйте либо sudo route add -host 54.81.143.201 -iface en0 или sudo ipfw . Если вы не уверены в названии адаптера, вы можете указать его MAC-адрес, например: sudo route add -host 54.81.143.201 -link 14:10:9f:e7:fd:0a
Если вы перезагрузитесь, это может не сохраняться. Вам нужно будет справиться с этим отдельно.
Источник
Как направить IP-маршрут через определенный интерфейс в OS X?
Я на Mac и пытаюсь маршрутизировать определенный адрес через определенный шлюз на моем Wi-Fi-соединении.
Иногда это будет работать, а иногда — нет. Я обнаружил, что интерфейс, который он выбирает, каждый раз отличается. Это не должно быть en0 чтобы работать
Вывод netstat -nr когда он не работает:
Это когда это работает: (примечание en0)
Почему я это делаю? Потому что у нашей компании есть прокси, на котором HipChat не работает. Таким образом, я маршрутизирую трафик hipchat через открытую сеть Wi-Fi, все еще находясь в моей сети Ethernet.
Я также попытался добавить запись, используя только интерфейс
HipChat не может подключиться.
РЕДАКТИРОВАТЬ 2: Кто-то попросил всю мою таблицу маршрутизации, вот она сегодня. Обратите внимание, что 54.81.143.201 теперь связан с en3, а не en0
8 ответов 8
Как указали другие, это на самом деле 3 проблемы.
Ваш беспроводной интерфейс, кажется, меняется между en0, en3 и en5.
На моем MacBook Air en0 всегда беспроводная; Thunderbolt-to-Ethernet всегда en3, а USB-to-Ethernet всегда en5. Но если вы подключите адаптер к другому порту на вашем Mac, то имя его сетевой карты изменится. Вы должны решить это в первую очередь. Убедитесь, что ваше беспроводное устройство всегда имеет одно и то же имя. В противном случае при вводе команды статического маршрута, если в расположение en0 не подключен сетевой адаптер , команда (очевидно) завершится с ошибкой адреса (физический адрес не имеет связи).
Также убедитесь, что адаптер всегда подключается к одному и тому же SSID. Очевидно, адрес шлюза должен быть действительным для подсети, и разные сети WiFi будут иметь разные подсети. Это может вызвать другой тип ошибки.
Вы не указали, является ли беспроводное соединение единственным сетевым подключением. Учитывая вышесказанное, я думаю, нет . Это и виртуальные сети из-за VMware или Parallels могут вызвать дополнительные сложности. (Например, если обе подключенные сети используют одно и то же пространство IP . Виртуальные машины часто соединяются и имеют свои собственные IP-адреса / маршруты / ссылки . ) Размещение топологии сети поможет.
После этого попробуйте либо sudo route add -host 54.81.143.201 -iface en0 либо sudo ipfw . Если вы не уверены в имени адаптера, вы можете вместо этого указать его MAC-адрес, например: sudo route add -host 54.81.143.201 -link 14:10:9f:e7:fd:0a
Если вы перезагрузитесь, это может не сохраняться. Вам нужно будет справиться с этим отдельно.
Источник
HOWTO quickly add a route in Mac OSX
Adding a route manually can be necessary sometimes. When on Linux, I know the command by head:
On the Mac the command is similar, but a bit different 🙂 Just as a note to myself and anyone else interested:
This sets up a route to the 10.67.0.0/16 net through gateway 192.168.120.254. First one on Linux, second one on Mac OSX.
Rate this:
Share this:
Like this:
Related
26 responses to HOWTO quickly add a route in Mac OSX
Hi
I have connected my Mac to a Linux box directly using a cable (no home router involved).
In Mac, I am setting a static IP address to 10.10.11.13 with subnet mask 255.255.255.0 and in Linux 10.10.11.16 with same mask. My Mac has two NICs (2nd one is connected to router and WWW). How can I add a route in Mac so all the traffic intended for the Linux box goes through first NIC? I am interested in waking the Linux machine up using something like:
$ wakeonlan -i 10.10.11.16 00:AA:BB:XX:XX
Is this routing possible?
Since you have the Mac and the Linux box in the same subnet (10.10.11.x) and have a subnet of /24 you do not need a route to be able to talk to each other. The mac wil automatically use the correct interface due to the netmask being used.
If you have a specific error message, please post it and I will have a look. From the info I have now I’d say this just works. The first thing that comes to mind when you’d encounter a problem is the cable connection. Did you use a cross-cable? Are the LEDs turned on?
My mac mini is connected to the web through wifi (192.168.17.x). I don’t have control over the wifi net. I started playing with a router and connected it to the wired interface en0. I have a hard time connecting to 192.168.1.1 which is the routers default address. I set en0 manually to 192.168.1.10. I tried adding a route, but no go. Can you help?
Did you already solve this issue? It does sound like a routing or netmask issue. If you tell a little more I might be able to help.
Hi Remi, I have the exact same basic question as Hamid although for a different purpose, i.e. How to route traffic destined for a specific ip through a specific interface when everything is on the same subnet. In my case I would like to use my mac’s wifi interface to connect to a network share as it is faster than using an ethernet cable for file transfers, but keep the rest of the traffic prioritised according to the order the interfaces are listed in Network system preferences.
I forgot to mention that I would like to be able to fallback to the ethernet interface if the wifi interface is disabled, thanks.
I figured that you can do this with an ip address using ‘sudo route add -host 192.168.1.2 -interface en1’ but that doesn’t work as the network share is accessed using it’s hostname myshare.local. Trying to route add -host myshare.local does not seem to work as although netstat -r shows a single entry for 192.168.1.2 assigned to en1, myshare.local only has an entry assigned to en0 😦
Hi Leo,
Connecting to the same network multiple times, with the same ip addressing is confusing the OS and might give mixed results. The quick and dirty way to solve this, is to add another ip address to your server (say 10.0.0.1) and one to your wifi interface (say 10.0.0.2) and have the two communicate using the 10.0.0.0/24 network. That will assure the routing is correct. You can use the same interface cards and same wires. Just add these as alias ip addresses and you’ll be fine.
Nice of you to share your knowledge, I have had something that’s been a consistent problem along the lines of this post that I’m hoping you have a suggestion about.
I have two networks:
a gigabit ethernet video editing network on a 192.168.1.x network (direct network, no outside connection)
our standard corporate network on 10.130.x.x.
Two Mac Pro’s have the network service order setup with the corporate network interface first (en1:DHCP) and the media network second (en0: 192.168.1.5 and 192.168.1.6). If I don’t put them in this order the internet doesn’t seem to work.
The media server is also a Mac Pro with the en0 (192.168.1.2) and en1 (10.130.178.90) similarly setup.
About 40% of the time the Mac Pros would connect to the media network over the slower 10.130 network… we figured out that if we used a GUI app called WaterRoof we could inject an ipfw command into the Mac Pros that blocks any connection to the media server on the corporate network (10.130.178.90).
This worked great for a while, then suddenly today, the video started playing choppy again and I ended up having to disable the media server’s en1 to the corporate network to force the connection over the 192.168 network. Don’t know how it found it’s away around the IP block (perhaps connecting by share name ?) but I was wondering if creating a route would be a better answer… could you show me the syntax for that…
do I need to do it on the Mac Pros AND the media server? Do I need to save it in some file for it to be permanent?
Any help would be HUGELY appreciated!
Interesting case! You could indeed add a route, so that even the corporate ip address will be reachable over the gigabit network.
Try this on the Mac PRO’s:
sudo route -n add -net 10.130.178.90/32 192.168.1.2
And reversed on the Media server:
sudo route -n add -net 10.130.178.x/32 192.168.1.5
sudo route -n add -net 10.130.178.y/32 192.168.1.6
netstat -nr gives an overview of current routes.
This should make the Media server’s corporate ip address reachable through the gigabit network and vice versa.
Hope this helps 🙂
Hi, This only works until you reboot the machine. Then the route is lost.
My office has restricted access to Internet sites such as Skype & Dropbox. I also have access to an unrestricted Wi-Fi.
The laptop is connected to both access points. Now my problem is, when en0 (ethernet) is my preferred channel then blocked sites like Skype won’t work though I have an active Wi-Fi connection. If I change the preferred channel to en1 (Wi-Fi) then Skype works but I cannot browse any of the company Intranet sites.
Why does the fallback to Wi-Fior visa versa does not work?
Here are my routing table entries using command netstat -nr:
$ netstat -nr
Routing tables
Internet:
Destination Gateway Flags Refs Use Netif Expire
default 192.168.2.1 UGSc 23 0 en1
default 172.16.8.1 UGScI 0 0 en0
default link#6 UCSI 1 0 en3
default link#8 UCSI 1 0 en14
127 127.0.0.1 UCS 0 0 lo0
127.0.0.1 127.0.0.1 UH 3 151425 lo0
169.254/30 link#6 UC 0 0 en3
169.254 link#11 UCS 3 0 en1
169.254 link#5 UCSI 0 0 en0
169.254 link#6 UCSI 1 0 en3
169.254 link#8 UCSI 1 0 en14
169.254.0.1 36:bb:1f:5:b7:d6 UHLSW 1 498 en3 889
169.254.0.2/32 link#6 UCS 0 0 en3
169.254.0.4/30 link#8 UCS 0 0 en14
169.254.0.5 96:eb:cd:3:8f:e4 UHLSW 5 38380 en14 325
169.254.0.6/32 link#8 UCS 0 0 en14
169.254.1.1 link#11 UHRLSW 0 16 en1
169.254.1.5 link#11 UHRLSW 0 8 en1
169.254.81.175 0:26:b9:9e:c6:e3 UHLSW 0 0 en0 1193
172.16.8/23 link#5 UCS 2 0 en0
172.16.8.1/32 link#5 UCS 1 0 en0
172.16.8.1 68:5:ca:10:18:5 UHLWIir 1 0 en0 1073
172.16.8.225 c:4d:e9:c3:51:8c UHLWI 0 0 en0 1190
172.16.9.233/32 link#5 UCS 1 0 en0
172.16.9.233 0:25:0:a4:fa:de UHLWI 0 1 lo0
192.168.2 link#11 UCS 1 0 en1
192.168.2.1/32 link#11 UCS 2 0 en1
192.168.2.1 74:31:70:6f:c6:58 UHLWIir 26 224 en1 1160
192.168.2.103 44:d8:84:8:85:e2 UHLWI 0 0 en1 692
192.168.2.104/32 link#11 UCS 1 0 en1
192.168.2.104 0:23:6c:97:46:a3 UHLWI 0 1 lo0
239.255.255.250 1:0:5e:7f:ff:fa UHmLWI 0 5 en3
239.255.255.250 1:0:5e:7f:ff:fa UHmLWI 0 19 en14
Источник
taldanzig / osxvpnrouting.markdown
Routing tips for VPNs on OS X
When VPNs Just Work™, they’re a fantastic way of allowing access to a private network from remote locations. When they don’t work it can be an experience in frustration. I’ve had situations where I can connect to a VPN from my Mac, but various networking situations cause routing conflicts. Here are a couple of cases and how I’ve been able to get around them.
Case 1: conflicting additional routes.
In this example the VPN we are connecting to has a subnet that does not conflict with our local IP, but has additional routes that conflict in some way with our local network’s routing. In my example the remote subnet is 10.0.x.0/24, my local subnet is 10.0.y.0/24, and the conflicting route is 10.0.0.0/8. Without the later route, I can’t access all hosts on the VPN without manually adding the route after connecting to the VPN:
In the above case the VPN is a PPTP VPN that uses ppp0 as the network interface. With this additional route, I can now access all the hosts I need to on the VPN. This won’t solve the case of trying to access addresses on the 10.0.y.0/24 subnet though.
Case 2: conflicting subnet between VPN and local network.
Fairly often a VPN on a private address space subnet can end up conflicting with a local subnet. For example if both the remote and local networks share the 192.168.0.0/24 subnet then our VPN connection ends up being pretty useless as all of the remote addresses will end up being routed to the local network device.
It is possible to get around this in some cases as long as the VPN IP address doesn’t conflict directly with a local IP address that you need access to. In this case we need to add a specific route for the remote IP:
In the above case I’m routing the host 192.168.0.x (replace the x with your specific address) via the tun0 device (in this case an OpenVPN connection).
Useful commands to debug routing issues.
The following command will show the existing routing table (IPv4 only):
The following command will show you how a specific host will get routed:
Источник