Bagaimana mengarahkan rute IP melalui antarmuka spesifik di OS X?

40

Saya menggunakan mac dan mencoba untuk merutekan alamat tertentu melalui gateway khusus pada koneksi wifi saya.

Saya menggunakan:

route add -host 54.81.143.201 192.168.15.1

Kadang-kadang ini akan berhasil, di lain waktu tidak. Apa yang saya temukan adalah bahwa antarmuka yang dipilihnya berbeda setiap kali. Itu perlu en0untuk bekerja

netstat -nr output ketika tidak berfungsi:

54.81.143.201      192.168.15.1       UGHS            1       89     en5

Inilah saatnya berhasil: (note en0)

54.81.143.201      192.168.15.1       UGHS            0        1     en

Mengapa aku melakukan ini? Karena perusahaan kami memiliki proxy yang HipChat tidak berfungsi. Jadi saya merutekan lalu lintas hipchat melalui jaringan wifi terbuka sementara masih di ethernet karya saya.

EDIT:

Saya juga mencoba menambahkan entri hanya dengan menggunakan antarmuka

route add -host 54.81.143.201 -interface en0

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

HipChat gagal terhubung.

EDIT 2: Seseorang meminta seluruh tabel routing saya, ini dia hari ini. Perhatikan bahwa 54.81.143.201 sekarang terikat ke en3 dan bukan en0

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
Sean256
sumber
Posting tabel routing penuh untuk kasus di mana itu tidak berfungsi. Apakah 192.168.15.1 dapat dijangkau melalui en5? Jika demikian, mengapa itu tidak berhasil? Jika tidak, sulit untuk melihat bagaimana rute itu ditambahkan.
David Schwartz
@ DavidSchwartz, itulah yang menarik bagi saya. 192.168.15.1 tidak dapat dijangkau melalui en5. Masalahnya berfungsi ketika ditugaskan dengan benar ke en0.
Sean256
Tunjukkan pada kami tabel perutean atau konfigurasi en5. Pasti ada beberapa alasan mengapa rute diinstal dengan cara itu, dan itu mungkin masalah sebenarnya.
David Schwartz
@ DavidSchwartz Tidak selalu en5, terkadang en3. Saya memposting seluruh tabel perutean saya sekarang.
Sean256
Di tabel routing yang Anda tunjukkan, en3jelas benar. 192.168.15.1 tidak dapat dijangkau melalui antarmuka lainnya. Satu-satunya cara untuk mencapai 192.168.15.1 dalam tabel routing itu adalah melalui rute default, kan? (Terus terang, sepertinya Anda tidak tahu apa yang sedang Anda lakukan. Anda sepertinya terkejut bahwa sistemnya tidak melakukan hal yang mustahil.)
David Schwartz

Jawaban:

34

Mencoba:

route add -host 54.81.143.201 -interface en0
drk.com.ar
sumber
2
Inilah yang saya dapatkan ketika saya coba itu: route: bad address: en0
Sean256
Maaf saya tidak punya Mac untuk menguji ini. Sepertinya sintaksanya salah. Saya memodifikasi jawabannya. Silakan coba lagi.
drk.com.ar
1
hal yang sama sayangnya -> rute: alamat yang buruk: en0
Sean256
Coba lagi. Kali ini saya menghapus gateway. Juga, dapatkah Anda menambahkan output ifconfig ke pertanyaan Anda untuk melihat konfigurasi IP yang terlibat?
drk.com.ar
Saya baru saja mencobanya (Sebenarnya saya sudah pernah sebelumnya) dan itu menambahkan entri ke meja saya, itu tidak menyelesaikan masalah. HipChat gagal terhubung. Berikut ini entri dalam tabel perutean saat melakukannya dengan cara itu -> 54.81.143.201 78: 31: c1: c7: 52: 74 UHS 0 2 en0
Sean256
3

Seperti yang ditunjukkan orang lain, ini sebenarnya 3 masalah.

  1. Antarmuka nirkabel Anda tampaknya berubah antara en0, en3, dan en5.

    Di MacBook Air saya, en0 selalu nirkabel; Thunderbolt-to-Ethernet selalu en3, dan USB-to-Ethernet selalu en5. Tetapi jika Anda mencolokkan adaptor ke port lain di Mac Anda, maka namanya NIC berubah. Anda harus menyelesaikan ini dulu. Pastikan nirkabel Anda selalu memiliki nama yang sama. Kalau tidak, ketika Anda memasukkan perintah rute statis, jika tidak ada NIC terhubung ke en0lokasi, perintah itu (jelas) akan gagal dengan "kesalahan alamat" (alamat fisik tidak memiliki tautan).

    Demikian juga, pastikan adaptor selalu terhubung ke SSID yang sama. Alamat gateway jelas harus valid untuk subnet, dan jaringan WiFi yang berbeda akan memiliki subnet yang berbeda. Ini dapat menyebabkan jenis kesalahan lain.

    Anda tidak menentukan apakah nirkabel adalah satu-satunya koneksi jaringan Anda. Mengingat hal di atas, saya kira tidak ...? Ini dan jaringan virtual karena VMware atau Parallels dapat menyebabkan kompleksitas tambahan. (Misalnya, jika kedua jaringan yang terhubung menggunakan ruang IP yang sama ... Mesin virtual sering dijembatani dan memiliki IP sendiri / rute / tautan ...) Memposting topologi jaringan akan membantu.

  2. Setelah selesai, coba salah satu sudo route add -host 54.81.143.201 -iface en0atau sudo ipfw. Jika Anda tidak yakin dengan nama adaptor, Anda dapat menentukan alamat MAC-nya, seperti ini:sudo route add -host 54.81.143.201 -link 14:10:9f:e7:fd:0a

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

  3. Jika Anda me-reboot, ini mungkin tidak berlanjut. Anda harus menanganinya secara terpisah.

Courtney Schwartz
sumber
2
sudo route -n add -net 54.81.143.201/32 192.168.15.1
Muthukumar Anbalagan
sumber
@mnciitbhu terima kasih ... itu bekerja untuk saya juga: P
Muthukumar Anbalagan
2

Saya bisa menambahkan rute melintasi antarmuka dengan menggunakan -linkopsi untuk menentukan alamat MAC.

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

Itu akan mengirim lalu lintas untuk 54.81.143.201keluar dari antarmuka yang sesuai.

Anda memiliki dua 192.168.15.*alamat host terpisah yang ditetapkan, satu untuk setiap antarmuka, bukan? Selain itu, Anda dapat mengirim lalu lintas dari kedua antarmuka, tetapi lalu lintas akan kembali pada sumber IP mana pun yang dimiliki paket.

Nevin Williams
sumber
Jadi saya mencoba apa yang Anda sarankan dengan menggunakan addr mac, dan anehnya tabel routing saya menunjukkan entri untuk en3 dan bukan en0 -> 54.81.143.201 00: 1d.88.4a.21.da UGHS 0 0 en3
Sean256
Ketika Anda melakukan 'arp -an', entri apa yang Anda miliki ...?
Nevin Williams
2

Solusi ini berfungsi pada MacOS 10.12 (Sierra) terbaru. Inilah intinya .

#!/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

Gunakan seperti ini:

> sudo ./route_wifi.sh IP_ADDRESS

Diasumsikan bahwa antarmuka wifi adalah: en1 .

Jangan lupa untuk menempatkan nilai-nilai yang benar untuk wifi_router dan wifi_address variabel. Perhatikan format wifi_address , yaitu: nama antarmuka jaringan ' : ' antarmuka dengan alamat mac ' . ' pembatas . Tentu sebagian besar informasi yang diperlukan dapat diurai dari output perintah ifconfig , tapi aku terlalu malas untuk itu =)

Alexander Malkoff
sumber
Selamat datang di Superuser. Cobalah untuk memuat informasi yang paling relevan dari tautan di pos Anda. Baca lebih lanjut di sini .
lalat styrofoam
1

Perintah OS X routedidokumentasikan di sini . Itu-ifscope parameter dan nilainya memungkinkan Anda untuk menentukan rute antarmuka-terikat.

Namun, ini bukan yang Anda inginkan. Anda perlu memperbaiki jaringan Anda sehingga rentang IP mereka unik. Selain itu, metrik antarmuka (alias prioritas) memengaruhi antarmuka mana yang dipilih dari opsi yang sama-sama menguntungkan.

Daniel B
sumber
-1

Jadi server vendor yang Anda coba ajak bicara mengenai layanan "HipChat" yang Anda klaim adalah 54.81.143.201? Dalam hal ini, saya akan membuat entri rute untuk 54.81.143.0 255.255.255.0 untuk memberikan rentang yang lebih besar. Mungkin ketika menggunakan perangkat lunak, Anda tidak selalu berbicara dengan server khusus ini, tetapi sekelompok mereka pada subnet yang sama 54.81.143.0/24. Selain itu, pastikan juga metrik rute Anda sudah benar saat membuat entri baru. Jika Anda membuat rute ke 54.81.143.0/24 192.168.15.1 Metrik 20 En5, tetapi juga memiliki rute ke 0.0.0.0/0 10.7.90.1 Metrik 10 En0. Komputer akan mengabaikan entri baru Anda dan melanjutkan merutekan lalu lintas melalui rute default (melalui En0) karena lebih disukai. Saya hanya melihat-lihat dan ingin menunjukkan hal itu. Tepuk tangan!

KaneNFL443
sumber
-1

Anda harus mencoba menambahkan nama NIC:

route add -net 10.13.0.0 netmask 255.255.0.0 dev NicNameHere

Ini bekerja untuk saya di CentOS.

pengguna220248
sumber
Saya mendapatkan ini -> rute: alamat buruk: dev
Sean256