IP yönlendirmesini OS X'te belirli bir arayüz üzerinden nasıl yönlendirebilirim?


40

Bir mac'tayım ve wifi bağlantımdaki belirli bir ağ geçidi olsa belirli bir adresi yönlendirmeye çalışıyorum.

Kullanıyorum:

route add -host 54.81.143.201 192.168.15.1

Bazen bu işe yarar, bazen işe yaramaz. Bulduğum şey, seçtiği arayüzün her seferinde farklı olduğu. Olması ot ihtiyacı en0işe

netstat -nr işe yaramadığında çıktı:

54.81.143.201      192.168.15.1       UGHS            1       89     en5

İşe yaradığı zaman: (en0 nota notu)

54.81.143.201      192.168.15.1       UGHS            0        1     en

Bunu neden yapıyorum? Çünkü şirketimiz HipChat'in çalışmadığı bir proxy'ye sahip. Bu yüzden hala eserlerimde çalışırken hipchat trafiğini açık bir wifi ağı üzerinden yönlendiriyorum.

DÜZENLE:

Ayrıca sadece arayüzü kullanarak giriş eklemeye çalıştım

route add -host 54.81.143.201 -interface en0

54.81.143.201      78:31:c1:c7:52:74  UHS             0        2     en0

HipChat bağlanamıyor.

EDIT 2: Birisi tüm yönlendirme masamı istedi, işte bugün. 54.81.143.201'in şimdi en3'e bağlı olduğunu ve en0'a bağlı olmadığını unutmayın.

Internet:
Destination        Gateway            Flags        Refs      Use   Netif Expire
default            10.7.90.1          UGSc           31        6     en3
10.7.90/24         link#4             UCS             4        0     en3
10.7.90.1          0:23:ac:3d:db:c2   UHLWIir        16        0     en3   1200
10.7.90.44         40:6c:8f:19:4a:bb  UHLWI           0        3     en3    946
10.7.90.63         127.0.0.1          UHS             0        0     lo0
54.81.143.201      192.168.15.1       UGHS            0        0     en3
127                127.0.0.1          UCS             0        0     lo0
127.0.0.1          127.0.0.1          UH              3      209     lo0
169.254            link#4             UCS             1        0     en3
169.254.255.255    0:23:ac:3d:db:c2   UHLSW           0        0     en3

Çalışmadığı durumda tam yönlendirme tablosunu gönderin. 192.168.15.1'e en5 içinden ulaşılabilir mi? Öyleyse, neden çalışmıyor? Değilse, o rotanın nasıl eklendiğini görmek zor.
David Schwartz

@DavidSchwartz, bu benim için ilginç olan şey. 192.168.15.1, en5 içinden erişilemiyor. Bir şey doğru olarak en0 atandığında çalışır.
Sean256

Bize yönlendirme tablosunu veya en5 konfigürasyonunu gösterin. Rotanın bu şekilde kurulmasının bir nedeni olmalı ve muhtemelen asıl sorun budur.
David Schwartz

@DavidSchwartz Her zaman en5 değildir, bazen en3'tür. Şimdi bütün yönlendirme masamı gönderiyorum.
Sean256

Gösterdiğiniz yönlendirme tablosunda en3açıkça doğrudur. 192.168.15.1 başka hiçbir arayüzden erişilemiyor. Bu yönlendirme tablosunda 192.168.15.1'e ulaşmanın tek yolu varsayılan yoldur, değil mi? (Açıkçası, ne yaptığınız hakkında hiçbir fikriniz yok gibi görünüyor. Sistemin imkansız olmadığına şaşırmış görünüyorsunuz.)
David Schwartz

Yanıtlar:


34

Deneyin:

route add -host 54.81.143.201 -interface en0

2
Bunu denediğimde elde ettiğim şey bu: rota: kötü adres: en0
Sean256

Üzgünüm, bunu test etmek için Mac'im yok. Sözdizimi yanlış gibi görünüyor. Cevabı değiştirdim. Lütfen tekrar deneyin.
drk.com.ar

1
ne yazık ki aynı şey -> rota: kötü adres: en0
Sean256

Tekrar deneyin. Bu kez ağ geçidini kaldırdım. Ayrıca, IP yapılandırmasını içeren görmek için sorunuza ifconfig çıktısını ekleyebilir misiniz?
drk.com.ar

Ben sadece bunu denedim (Aslında ben de daha önce de var) ve masama bir giriş ekler, sorunu çözmez. HipChat bağlanamıyor. İşte bu şekilde yönlendirme tablosuna giriş -> 54.81.143.201 78: 31: c1: c7: 52: 74 UHS 0 2 en0
Sean256

3

Diğerlerinin de belirttiği gibi, bu aslında 3 sorun.

  1. Kablosuz arabiriminiz en0, en3 ve en5 arasında değişiyor gibi görünüyor.

    MacBook Air'de en0 her zaman kablosuz; Thunderbolt-Ethernet'ten her zaman en3 ve USB'den Ethernet'e her zaman en5'tir. Ancak, Mac'inizdeki farklı bir bağlantı noktasına bir adaptör takarsanız, NIC adı değişir. Önce bunu çözmelisin. Telsizinizin daima aynı ada sahip olduğundan emin olun. Aksi takdirde, statik rota komutuna girdiğinizde, en0konuma takılı NIC yoksa, komut (açıkçası) bir "adres hatası" ile başarısız olur (fiziksel adresin bağlantısı yoktur).

    Benzer şekilde, adaptörün her zaman aynı SSID'ye bağlandığından emin olun. Ağ geçidi adresinin açıkça alt ağ için geçerli olması gerekir ve farklı WiFi ağlarının farklı alt ağları olacaktır. Bu, başka bir hata türüne neden olabilir.

    Tek kablosuz bağlantınızın kablosuz olup olmadığını belirtmediniz. Yukarıda verilenlere göre sanırım ...? VMware veya Parallels nedeniyle bu ve sanal ağ ek karmaşıklığa neden olabilir. (Örneğin, her iki bağlı ağ aynı IP alanını kullanıyorsa ... Sanal makineler genellikle köprülenir ve kendi IP'lerine / rotalarına / bağlantılarına sahip ...) Ağ topolojisini yayınlamak yardımcı olur.

  2. Bu yapıldıktan sonra, ya sudo route add -host 54.81.143.201 -iface en0da deneyin sudo ipfw. Bağdaştırıcının adından emin değilseniz, bunun yerine MAC adresini belirleyebilirsiniz:sudo route add -host 54.81.143.201 -link 14:10:9f:e7:fd:0a

    İlgili: https://discussions.apple.com/thread/5049994?searchText=policy%20route

  3. Yeniden başlatırsanız, bu devam edemeyebilir. Bunu ayrı ayrı ele almanız gerekecek.



2

-linkBir MAC adresi belirtme seçeneğini kullanarak arabirim boyunca bir rota ekleyebildim .

route add -host 54.81.143.201 -link [mac addr of 192.168.15.1 on en0]

Bu 54.81.143.201uygun arayüz için trafik gönderir .

192.168.15.*Her bir arayüze bir tane atanmış iki ayrı ana bilgisayar adresiniz var , değil mi? Aksi takdirde, her iki arayüzden de trafik gönderebilirsiniz, ancak trafik, paketlerin sahip olduğu kaynak IP'ye geri dönecektir.


Bu yüzden mac addr'ı kullanarak önerdiğiniz şeyi denedim ve garip bir şekilde yönlendirme tablomuz en3 için bir giriş gösteriyor ve en0 değil -> 54.81.143.201 00: 1d.88.4a.21.da UGHS 0 0 en3
Sean256

'Arp -an' yaptığınız zaman, hangi girişleriniz var?
Nevin Williams

2

Bu çözüm en son MacOS 10.12 (Sierra) üzerinde çalışır. İşte Gist .

#!/bin/bash

# NOTE: wifi network interface is: en1
wifi_router=192.168.200.1
wifi_address=en1:ec.35.86.4f.00.cc
TOADDR=`ifconfig en1 inet | sed -nl 's/\w*inet \([^ ]*\).*/\1/p'`
TO=`echo -n ${TOADDR//[[:space:]]}`

echo "ADDING ROUTE TO $1 VIA en1 (wi-fi): $TO"
route -n add -host $1 $wifi_router -ifp $wifi_address -ifa $TO -static

echo ""
echo "ROUTE ADDED:"
route get $1

Bunun gibi kullanın:

> sudo ./route_wifi.sh IP_ADDRESS

Bu wifi arayüzü olduğunu varsayar: en1 .

Wifi_router ve wifi_address değişkenleri için doğru değerler koymayı unutmayın . Not wifi_address : is biçimi, ağ arabirim adı ' : ' ile arayüz mac adresi ' . ' sınırlayıcılar . Gerekli bilgilerin çoğunun ifconfig komut çıktısından ayrıştırılabildiğinden emin olun , ancak bunun için çok tembelim =)


Superuser'e hoş geldiniz. Lütfen yayınınızdaki bağlantıdan en alakalı bilgileri almaya çalışın. Bununla ilgili daha fazla bilgiyi burada bulabilirsiniz .
strafor uçmak

1

OS X routekomutu burada belgelenmiştir . -ifscopeParametre ve değeri bir arayüz-ciltli rotayı belirlemek için izin verir.

Ancak bu istediğiniz değil. Ağlarınızı, IP aralıkları benzersiz olacak şekilde düzeltmeniz gerekir. Bunun dışında, arabirim metrikleri (diğer bir deyişle öncelikli olanlar) hangi arabirimin aynı derecede elverişli seçeneklerden seçildiğini etkiler.


-1

Yani iddia ettiğiniz "HipChat" hizmeti ile ilgili olarak konuşmaya çalıştığınız satıcı sunucusu 54.81.143.201? Bu durumda, daha geniş bir aralık sağlamak için 54.81.143.0 255.255.255.0 için bir yönlendirme girişi yapardım. Belki de yazılımı kullanırken, her zaman bu spesifik sunucuyla konuşmuyorsunuz, fakat aynı alt ağdaki kümelerini 54.81.143.0/24. Ayrıca, yeni bir giriş oluştururken rota ölçümlerinizin doğru olduğundan emin olun. 54.81.143.0/24 192.168.15.1 Metrik 20 En5 için bir rota oluşturuyorsanız, ancak 0.0.0.0/0 10.7.90.1 Metrik 10 En0 için bir rota da mevcutsa. Bilgisayar yeni girişinizi görmezden gelecek ve daha çok tercih edildiğinden varsayılan rota üzerinden (En0 üzerinden) trafik yönlendirmeye devam edecektir. Ben sadece bunun üzerinden skimmered ve işaret etmek istedim. Şerefe!


-1

NIC adını eklemeyi denemelisin:

route add -net 10.13.0.0 netmask 255.255.0.0 dev NicNameHere

Bu, CentOS'ta benim için çalışıyor.


Bunu anlıyorum -> rota: hatalı adres: dev
Sean256
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.