Różnica między poleceniami „ifconfig” i „ip”

19

Przeczytałem kilka artykułów / samouczków dotyczących polecenia „ifconfig”, większość z nich zawierała wspólną instrukcję -

„ifconfig jest przestarzałe przez polecenie ip”

i zaproponował, aby nauczyć się polecenia ip. Ale żadne z nich nie wyjaśniło, w jaki sposób polecenie „ip” ma większą moc niż „ifconfig”.

Jaka jest różnica między nimi obojgiem?

Mandar Shinde
źródło

Odpowiedzi:

21

ifconfigpochodzi z net-tools, który od dłuższego czasu nie był w stanie nadążyć za stosem sieci Linux. Nadal używa również ioctldo konfiguracji sieci, która jest brzydkim i mniej wydajnym sposobem interakcji z jądrem.

Wiele zmian w kodzie sieciowym Linuksa i wiele nowych funkcji nie jest dostępnych przy użyciu net-tools: routingu wielościeżkowego, routingu zasad (patrz RPDB). routepozwala robić głupie rzeczy, takie jak dodawanie wielu tras do tego samego miejsca docelowego, przy użyciu tej samej metryki.

Do tego:

  • ifconfig nie zgłasza poprawnego adresu sprzętowego dla niektórych urządzeń.
  • Nie można skonfigurować ipip, sit, gre, l2tp, itd. W jądro tuneli statycznych.
  • Nie możesz utworzyć tunani tapurządzeń.
  • Sposób dodawania wielu adresów do danego interfejsu ma również słabą semantykę.
  • Nie można również skonfigurować systemu sterowania ruchem w systemie Linux za pomocą net-toolsżadnego z nich.

Zobacz także do ifconfigbani .

EDYCJA : Usunąłem twierdzenie o net-toolsrozwoju, które zaprzestało, że do tej pory zapomniałem, skąd mam ten post. net-tools”, nad którym pracowano od czasu iproute2jego wydania, ale w większości dotyczy to naprawiania błędów oraz drobnych ulepszeń i funkcji, takich jak internacjonalizacja.

pilona
źródło
Narzędzia sieciowe NET-3 to nie jedyne ifconfig. Na przykład w inetutils GNU jest inny. A to jeszcze nie wszystko. unix.stackexchange.com/a/504084/5132
JdeBP
7

ifconfigto tradycyjne polecenie do wyświetlania informacji o interfejsach sieciowych i zmiany niektórych ustawień. W szczególności może zwiększać i zmniejszać interfejsy. Istnieje w większości wariantów uniksowych.

W Linuksie ifconfigpolecenie nie ewoluowało od dawna. Nadal jest w porządku do tego, co robi. Jeśli używasz ifconfigdo czegoś, nie ma powodu, aby przestać.

Linux udostępnia także ippolecenie z pakietu narzędzi iproute2 . ipKomenda łączy kilka klasycznych poleceń i więcej, w tym ifconfig, routei arp. ipmoże zrobić o wiele więcej niż ifconfig. Z drugiej strony ipnie zawsze jest obecny, szczególnie w systemach wbudowanych (i nigdy w wariantach uniksowych innych niż Linux).

Wyniki ifconfigparsowania są do bani. Wyniki ipparsowania są do bani. Nie ma tam zwycięzcy.

Gilles „SO- przestań być zły”
źródło
Zawsze uważałem, że wyniki parsowania ipsą dość proste, a na pewno o wiele prostsze niż ifconfig. Uwielbiam również to, że w wielu przypadkach dane wyjściowe ippolecenia mogą być użyte jako dane wejściowe do innego ippolecenia z niewielką modyfikacją lub bez modyfikacji (na przykład każda linia ip route showmoże być użyta jako argumenty ip route add).
Patrick,
1
@Patrick analizuje ip route, a ip ruledane wyjściowe są dość wyraźne i łatwe do przeanalizowania. Ale ip linklub ip addrjest bólem. Naprawdę chciałbym, aby ktoś przesłał łatkę lub coś, aby ip addrwydrukować dokładne instrukcje, być może za pomocą przełącznika, którego użyłbyś do konfiguracji bieżącej konfiguracji, tak jak to robisz ip route show.
Zoredache,
5

Wystarczy dodać kilka bitów do odpowiedzi pilona. Około 2005 roku wprowadzono nowy mechanizm kontroli stosu sieciowego - gniazda netlink .

Aby skonfigurować interfejs sieciowy, należy iproute2skorzystać z mechanizmu pełnego dupleksu gniazda sieci, a jednocześnie ifconfigopiera się na ioctlwywołaniu systemowym. Oto 2 główne artykuły na temat motywacji za netlink i korzystania z rtnetlink .

Boris Burkov
źródło