Bagaimana saya bisa tahu antarmuka jaringan mana yang digunakan komputer saya?


24

Pada MBP (OS X 10.6.2) saya mengatur konfigurasi ethernet kabel dan bandara nirkabel untuk menggunakan IP statis yang sama ke router saya (misalnya seperti yang dijelaskan di http://forums.macrumors.com/archive/index .php / t-708685.html ). Saya juga sudah menyiapkan Service Order sehingga koneksi kabel di atas Airport (mis. Seperti yang dijelaskan di Mac OS X secara otomatis mematikan Airport jika kabel ethernet dicolokkan ).

Ini tampaknya "berfungsi": koneksi ssh terbuka ke lokasi jarak jauh tetap aktif saat saya mencolokkan dan mencabut kabel ethernet. Namun, karena kartu Airport tetap hidup (dan terhubung ke router) terlepas dari apakah koneksi kabel ada, bagaimana saya bisa tahu bahwa antarmuka kabel sebenarnya adalah koneksi "aktif" ketika tersedia? Karena alamat IP sama untuk keduanya, apakah ini jaminan bahwa antarmuka nirkabel tidak dapat digunakan? Apakah ada cara lain untuk mengetahui apakah antarmuka ini digunakan?

PS. Saya akan memposting jawaban (parsial) segera setelah saya memposting ini, karena tindakan menulis ini dan memeriksa semua fakta saya membawa saya ke beberapa wawasan. (Bagian yang lebih menarik dan tidak terjawab adalah huruf tebal di atas.)

Jawaban:


26

Referensi definitif untuk pertanyaan seperti 'Antarmuka mana yang akan digunakan untuk mencapai host wxyz?' untuk waktu atau situasi tertentu adalah merujuk ke tabel routing.

[mini-nevie:~] nevinwilliams% route get 10.10.10.10
   route to: 10.10.10.10
destination: default
       mask: default
    gateway: 192.168.2.1
  interface: en0
      flags: <UP,GATEWAY,DONE,STATIC,PRCLONING>
 recvpipe  sendpipe  ssthresh  rtt,msec    rttvar  hopcount      mtu     expire
       0         0         0         0         0         0      1500         0 

Saya telah mengaktifkan en0 dan en1, dan en0 adalah yang pertama dalam Urutan Layanan. Mencabut ethernet saya, tidak membuat perubahan lain, perintah yang sama memberi:

mini-nevie:~] nevinwilliams% route get 10.10.10.10
   route to: 10.10.10.10
destination: default
       mask: default
    gateway: 192.168.2.1
  interface: en1
      flags: <UP,GATEWAY,DONE,STATIC,PRCLONING>
 recvpipe  sendpipe  ssthresh  rtt,msec    rttvar  hopcount      mtu     expire
       0         0         0         0         0         0      1500         0 

12

Saya menggunakan ini:

if=$(route -n get 0.0.0.0 2>/dev/null | awk '/interface: / {print $2}')

if [ -n "$if" ]; then
    echo "Default route is through interface $if"
else
    echo "No default route found"
fi

2
iface(){ route get 0.0.0.0 2>/dev/null | awk '/interface: / {print $2}'; }
mralexgray

8

Berikut adalah dump ifconfig -adi setiap situasi (saya akan menyoroti perbedaan setelahnya):

Kabel Ethernet terhubung:

lo0: flags = 8049 mtu 16384
        inet6 :: 1 prefixlen 128
        inet6 xxxx :: 1% lo0 prefixlen 64 scopeid 0x1
        inet 127.0.0.1 netmask 0xff000000
gif0: flags = 8010 mtu 1280
stf0: flags = 0 mtu 1280
id0: bendera = 8863 MT 1500
        inet6 xxxx% en0 awalan 64 scopeid 0x4
        inet 192.168.0.110 netmask 0xffffff00 broadcast 192.168.0.255
        eter xx: xx: xx: xx: xx: xx
        media: autoselect (100baseTX) status: aktif
        media yang didukung: tidak ada pilihan otomatis 10baseT / UTP 10baseT / UTP 10baseT / UTP 10baseT / UTP 100baseTX 100baseTX 100baseTX 100baseTX 1000baseT 1000baseT 1000baseT 
fw0: flags = 8863 mtu 4078
        lladdr xx: xx: xx: xx: xx: xx
        media: status pilih otomatis: tidak aktif
        media yang didukung: pilih otomatis 
en1: flags = 8863 MT 1500
        inet6 xxxx% en1 awalan 64 scopeid 0x6
        inet 192.168.0.110 netmask 0xffffff00 broadcast 192.168.0.255
        eter xx: xx: xx: xx: xx: xx
        media: status pilih otomatis: aktif
        media yang didukung: pilih otomatis

Kabel Ethernet dicabut:

lo0: flags = 8049 mtu 16384
        inet6 :: 1 prefixlen 128
        inet6 xxxx :: 1% lo0 prefixlen 64 scopeid 0x1
        inet 127.0.0.1 netmask 0xff000000
gif0: flags = 8010 mtu 1280
stf0: flags = 0 mtu 1280
id0: bendera = 8863 MT 1500
        eter xx: xx: xx: xx: xx: xx
        media: status pilih otomatis: tidak aktif
        media yang didukung: tidak ada pilihan otomatis 10baseT / UTP 10baseT / UTP 10baseT / UTP 10baseT / UTP 100baseTX 100baseTX 100baseTX 100baseTX 1000baseT 1000baseT 1000baseT 
fw0: flags = 8863 mtu 4078
        lladdr xx: xx: xx: xx: xx: xx
        media: status pilih otomatis: tidak aktif
        media yang didukung: pilih otomatis 
en1: flags = 8863 MT 1500
        inet6 xxxx% en1 awalan 64 scopeid 0x6
        inet 192.168.0.110 netmask 0xffffff00 broadcast 192.168.0.255
        eter xx: xx: xx: xx: xx: xx
        media: status pilih otomatis: aktif
        media yang didukung: pilih otomatis

diff plugged unplugged menunjukkan bahwa koneksi kabel menjadi aktif ketika tersedia:

8,9d7
<   inet6 xxxx%en0 prefixlen 64 scopeid 0x4 
<   inet 192.168.0.110 netmask 0xffffff00 broadcast 192.168.0.255
11c9
<   media: autoselect (100baseTX <full-duplex,flow-control>) status: active
---
>   media: autoselect status: inactive

1
Tambahan: melalui ekstensi pihak ketiga "MenuMeters" ( ragingmenace.com/software/menumeters ), dimungkinkan untuk melihat yang merupakan antarmuka "aktif" dan juga bandwidth yang digunakan di semua antarmuka, yang membuatnya jelas bahwa aktif antarmuka memang beralih dengan benar (seperti yang diinginkan) ketika koneksi kabel dicolokkan dan dilepas.
Eter

6

Beberapa hal. Mac akan selalu menggunakan koneksi jaringan agar tercantum di profil "Koneksi Jaringan" Anda. Misalnya, jika Ethernet berada di atas Nirkabel, Ethernet akan mengambil alih.

Saya tidak yakin bagaimana SSH bekerja sebanyak itu, tetapi dari pengalaman saya. Jika satu koneksi gagal atau terputus, SSH kemudian akan menggunakan koneksi lainnya.

Jika Anda benar-benar ingin melihat apakah koneksi aktif, Anda harus menggunakan utilitas monitor bandwidth. Yang hebat adalah iStat ( http://www.islayer.com/apps/istatmenus/ ).


1
Saya tidak sengaja membaca terlalu cepat, ya ... apa yang saya katakan adalah pesanan layanan. Anda harus benar-benar melihat ke monitor bandwidth untuk melihat apa yang terjadi di antara semua koneksi Anda.
Steven Lu

ssh adalah apa yang saya gunakan untuk menguji jaringan, tetapi sebenarnya sesi TCP (persisten) akan dilakukan.
Eter

0

Saya menggunakan saran untuk membuat alamat IP sama untuk Ethernet dan WiFi, Tetapkan Urutan Layanan seperti yang disarankan, dan baru saja menggunakan Utilitas Jaringan> Info di en0 dan en1.

Saya memulai cadangan TimeMachine dan di bawah Network Utility> Info> en0 Ethernet saya bisa melihat bahwa ribuan paket bergerak melalui koneksi ethernet, sementara Network Utility> Info> en1 WiFi tidak ada yang bergerak.

Terima kasih telah membuat saya menunjuk ke arah yang benar. Ketika cadangan TimeMachine selesai, saya akan kembali ke alamat IP yang terpisah dan melihat apakah Mac secara otomatis masih memindahkan semuanya melalui Ethernet.

Pertanyaan aslinya adalah "Bagaimana saya bisa tahu antarmuka jaringan mana yang digunakan komputer saya?" Utilitas jaringan bekerja untuk saya.

Macbook Pro 17 "Pertengahan 2010, Mountain Lion

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.