Różnica między usługą sieciową wyłączoną, nieaktywną i brakiem interfejsu

1

Są (przynajmniej) cztery różne sposoby, aby wyłączyć Wi-Fi na komputerze Mac:

  1. Kliknij ikonę Wi-Fi na pasku menu i wybierz „Wyłącz Wi-Fi”
  2. Preferencje systemowe-> Sieć, wybierz Wi-Fi, kliknij Ząb, wybierz Uaktywnij usługę
  3. sudo ifconfig en0 down
  4. networksetup -setnetworkserviceenabled Wi-Fi off

Pierwsze dwa są równoważne, tzn. Zmieniają to samo ustawienie.

Chciałbym zrozumieć, na niskim poziomie, jakie są podstawowe różnice między 1, 3 a 4?

Andrew Parker
źródło
Dobre dyskusje także na apple.stackexchange.com/questions/228511/...
bmike

Odpowiedzi:

2

Wyłączenie Wi-Fi za pomocą paska menu jest równoznaczne z:

networksetup -setairportpower en0 off

... i tak samo jak wyłączenie w ustawieniach sieciowych.

Nie mogę mówić do niskich poziomów, ale networksetupjest dodatkiem Apple, podczas gdy ifconfigjest standardem nie tylko dla BSD, ale także dla Linuksa. (Mimo że oba narzędzia są ostatecznie różne, nie tylko w ich implementacji, ale także w interfejsie API)

Gdybym musiał zgadywać i zgadnę, ponieważ wewnętrzne elementy Apple'a nie są dokładnie przezroczyste (proszę, jeśli ktoś jest w stanie poprawić mnie), networksetupma on kontrolować rzeczywisty sprzęt, urządzenie Wi-Fi, podczas gdy ifconfigjest to czysto system operacyjny -poziomowe narzędzie. Podobnie jak w przypadku aplikacji do czatowania wideo, umieść kawałek taśmy nad kamerą.

Kilka rzeczy, które mogę zweryfikować:

  1. Powiedzmy, że interfejs en0musi być zarówno UP (tak, ifconfig en0 up), jak i WŁĄCZONA moc portu lotniczego (więc `networksetup -setairportpower en0 on).
  2. Zarówno downing ifacei zwracając airportpower off, będzie świadczyć symbol Pasek menu w postaci wydrążonego konturu.
  3. ALE, jeśli zarówno DOWN / off, jeśli włączysz moc lotniska on, jeśli ifconfig ... upnie został uruchomiony po uruchomieniu ifconfig ... down, symbol nie będzie pusty, a macOS będzie gorączkowo skanować w poszukiwaniu sieci, ale nie będzie w stanie: (1) połączyć się z siecią ( 2) przywołaj iface0(3) zmień tablicę routingu

Ten symbol Wi-Fi wydaje się być wynikiem zmiany stanu, a nie stanu faktycznego. W związku z tym rzeczywisty stan tego, czy Wi-Fi jest pokazywany jako zdolny do połączenia, nie jest podłączony do wskaźnika wizualnego. Ale interfejs, nawet jeśli w dół, wydaje się jakoś zeskanować w taki sposób, że jeśli zawrócić ondo airportpowertego, „status:” nadany przez ifconfigzamieni się szybko z powrotem i naprzód między activei inactive, nawet jeśli rzeczywisty interfejs nie jest UP.

Jest więc niespójność. Ale tak jest, ponieważ nie byłoby powodu wyłączać drugiego po zrobieniu tego pierwszego. A ponieważ pragnienia Apple'a i idealny API różnią się od tych z BSD.

dougpa
źródło