Як я можу визначити, який мережевий інтерфейс використовує мій комп'ютер?


24

На MBP (OS X 10.6.2) у мене встановлені дротові конфігурації Ethernet та бездротового аеропорту, щоб використовувати той самий статичний IP для мого маршрутизатора (наприклад, як описано на http://forums.macrumors.com/archive/index .php / t-708685.html ). У мене також встановлено Сервісне замовлення, щоб провідне з'єднання було вище аеропорту (наприклад, як описано в Mac OS X автоматично відключається аеропорт, якщо підключений кабель Ethernet ).

Це, здається, "працює": відкрите ssh-з'єднання з віддаленим місцем залишається в режимі підключення та від'єднання кабелю Ethernet. Однак, оскільки карта аеропорту залишається в прямому ефірі (і підключена до маршрутизатора) незалежно від наявності провідного з'єднання, як я можу сказати, що дротовий інтерфейс насправді є "активним" з'єднанням, коли він доступний? Оскільки IP-адреса для обох однакова, це гарантія того, що бездротовий інтерфейс не можна використовувати? Чи є якийсь інший спосіб визначити, чи використовується цей інтерфейс?

PS. Я збираюся опублікувати (часткову) відповідь, як тільки опублікую це, оскільки акт написання та перевірки всіх моїх фактів призводить мене до деякої розуміння. (Більш цікава і без відповіді частина є напівжирним шрифтом вище.)

Відповіді:


26

Остаточне посилання на такі питання, як "Який інтерфейс буде використовуватися для доступу до вузла wxyz?" будь-який час або ситуація - це посилання на таблицю маршрутизації.

[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 

Увімкнено і en0, і en1, і en0 є першим у службовому порядку. Відключивши мережу Ethernet, не внісши жодних інших змін, та сама команда дає:

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

Я використовую це:

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

Ось дамп ifconfig -aв кожній ситуації (я висвітлю розбіжності після цього):

До кабелю Ethernet підключено:

lo0: прапори = 8049 mtu 16384
        inet6 :: 1 префікс 128
        inet6 xxxx :: 1% lo0 префікс 64 діапазон 0x1
        inet 127.0.0.1 маска мережі 0xff000000
gif0: прапори = 8010 mtu 1280
stf0: прапори = 0 mtu 1280
en0: прапори = 8863 mtu 1500
        inet6 xxxx% en0 префікс 64 діапазон 0x4
        inet 192.168.0.110 маска мережі 0xffffff00 широкомовної передачі 192.168.0.255
        ефір xx: xx: xx: xx: xx: xx
        медіа: статус автоматичного вибору (100baseTX): активний
        підтримувані носії інформації: немає автоматичного вибору 10baseT / UTP 10baseT / UTP 10baseT / UTP 10baseT / UTP 100baseTX 100baseTX 100baseTX 100baseTX 1000baseT 1000baseT 1000baseT 
fw0: прапори = 8863 mtu 4078
        lladdr xx: xx: xx: xx: xx: xx
        медіа: статус автоматичного вибору: неактивний
        підтримувані засоби масової інформації: автоматичний вибір 
en1: прапори = 8863 mtu 1500
        inet6 xxxx% en1 префікс 64 64 області 0x6
        inet 192.168.0.110 маска мережі 0xffffff00 широкомовної передачі 192.168.0.255
        ефір xx: xx: xx: xx: xx: xx
        медіа: статус автоматичного вибору: активний
        підтримувані засоби масової інформації: автоматичний вибір

Кабель Ethernet відключений:

lo0: прапори = 8049 mtu 16384
        inet6 :: 1 префікс 128
        inet6 xxxx :: 1% lo0 префікс 64 діапазон 0x1
        inet 127.0.0.1 маска мережі 0xff000000
gif0: прапори = 8010 mtu 1280
stf0: прапори = 0 mtu 1280
en0: прапори = 8863 mtu 1500
        ефір xx: xx: xx: xx: xx: xx
        медіа: статус автоматичного вибору: неактивний
        підтримувані носії інформації: немає автоматичного вибору 10baseT / UTP 10baseT / UTP 10baseT / UTP 10baseT / UTP 100baseTX 100baseTX 100baseTX 100baseTX 1000baseT 1000baseT 1000baseT 
fw0: прапори = 8863 mtu 4078
        lladdr xx: xx: xx: xx: xx: xx
        медіа: статус автоматичного вибору: неактивний
        підтримувані засоби масової інформації: автоматичний вибір 
en1: прапори = 8863 mtu 1500
        inet6 xxxx% en1 префікс 64 64 області 0x6
        inet 192.168.0.110 маска мережі 0xffffff00 широкомовної передачі 192.168.0.255
        ефір xx: xx: xx: xx: xx: xx
        медіа: статус автоматичного вибору: активний
        підтримувані засоби масової інформації: автоматичний вибір

diff plugged unplugged показує, що провідне з'єднання стає активним, коли воно доступне:

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
Додаток: за допомогою стороннього розширення "MenuMeters" ( ragingmenace.com/software/menumeters ) можна побачити, який є "активний" інтерфейс, а також пропускну здатність, що використовується в усіх інтерфейсах, що дає зрозуміти, що активний Інтерфейс дійсно перемикається належним чином (за бажанням), коли провідне з'єднання підключено та вилучено.
Ефір

6

Пару речей. Mac завжди використовуватиме мережеві з'єднання в порядку, вказаному у вашому профілі "Мережеві з'єднання". Наприклад, якщо Ethernet перебуває поверх бездротового зв'язку, Ethernet візьме на себе місце.

Я не впевнений у тому, як SSH працює так багато, але зі свого досвіду. Якщо одне з’єднання вийде з ладу або від'єднається, SSH потім використовуватиме інше з'єднання.

Якщо ви дійсно хочете перевірити, чи є з'єднання активними, вам слід скористатися утилітою монітора пропускної здатності. Чудовим є iStat ( http://www.islayer.com/apps/istatmenus/ ).


1
Я випадково прочитав занадто швидко, так ... я сказав, що це замовлення на обслуговування. Вам слід заглянути в монітор пропускної здатності, щоб побачити, що відбувається між усіма вашими з'єднаннями.
Стівен Лу

ssh - це те, що я використовував для тестування мережі, але справді будь-який сеанс TCP (стійкий) зробив би.
Ефір

0

Я скористався порадою, щоб зробити IP-адреси однаковими для Ethernet та WiFi, встановити порядок обслуговування, як було запропоновано, і щойно використав Network Utility> Інформація на en0 та en1.

Я ініціював створення резервного копіювання TimeMachine і під Network Utility> Info> en0 Ethernet я міг бачити, що тисячі пакетів рухаються через Ethernet-з'єднання, тоді як Network Utility> Info> en1 WiFi нічого не рухається.

Дякуємо, що мене вказали в правильному напрямку. Коли резервне копіювання TimeMachine завершено, я повернусь до окремих IP-адрес і побачу, чи Mac автоматично все-таки переміщує все через Ethernet.

Первісне питання було "Як я можу сказати, який мережевий інтерфейс використовує мій комп'ютер?" Утиліта мережі працювала на мене.

Macbook Pro 17 "Середина 2010 року, Гірський лев

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.