Sieci w Linuksie/iproute2/ip/link
Polecenie ip link służy do konfigurowania, włączania i zarządzania urządzeniami sieciowymi oraz urządzeniami wirtualnymi warstwy sieci. Składnia polecenia wyświetlona za pomocą polecnia `ip link help` wygląda następująco:
Składnia polecenia
[edytuj]Usage: ip link add link DEV [ name ] NAME
[ txqueuelen PACKETS ]
[ address LLADDR ]
[ broadcast LLADDR ]
[ mtu MTU ]
type TYPE [ ARGS ]
ip link delete DEV type TYPE [ ARGS ]
ip link set DEV [ { up | down } ]
[ arp { on | off } ]
[ dynamic { on | off } ]
[ multicast { on | off } ]
[ allmulticast { on | off } ]
[ promisc { on | off } ]
[ trailers { on | off } ]
[ txqueuelen PACKETS ]
[ name NEWNAME ]
[ address LLADDR ]
[ broadcast LLADDR ]
[ mtu MTU ]
[ netns PID ]
ip link show [ DEV ]
TYPE := { vlan | veth | dummy | ifb | macvlan }
Opis poleceń i ich opcji
[edytuj]ip link add link
[edytuj]Polecenie to służy do dodawania nowych interfejsów virtualnych w systemie. Dostępne są następujące interfejsy wirtualne:
- vlan - interfejs VLAN zgodny ze standardem 802.11Q.
- veth - wirtualna para interfejsów Ethernet.
- dummy - interfejs wirtualny dummy.
- ifb - interfejs IFB (ang. Intermediate Functional Block), służący do realizowania zaawansowanych funkcji QoS (następca IMQ).
- macvlan - interfejs pozwalający na posiadanie wielu adresów MAC przypisanych do jednej fizycznej karty sieciowej.
Opcje związane z tworzeniem poszczególnych interfejsów opisane są w kolejnym punkcie. Opis opcji polecenia ip link add link:
- DEV - nazwa interfejsu, do którego zostanie przywiązane urządzenie wirtualne.
- name NAME - nazwa nowotworzonego interfejsu wirtualnego.
- txqueuelen PACKETS - długość kolejki wyjściowej (w pakietach) interfejsu sieciowego.
- address LLADDR - adres warstwy 2 interfejsu (MAC)
- broadcast LLADDR - adres rozgłoszeniowy warstwy 2 interfejsu
- mtu MTU - MTU interfejsu
ip link delete
[edytuj]Polecenie to służy do kasowania wirtualnych interfejsów. Jedynym wymaganym parametrem jest nazwa interfejsu do skasowania.
ip link set
[edytuj]Polecenie to służy do zmiany ustawień istniejących interfejsów. Opcje, które nie zostały opisane poniżej mają identyczne znaczenie jak w poleceniu ip link add link. Polecenie ip link set jest jedynym poleceniem, które nie działa atomowo, tj. istnieje możliwość, że podanie parametry interfejsu sieciowego zostaną ustawione częściowo. Jest to związane z tym, że polecenie to kończy wykonanie po napotkaniu pierwszego błędu. Oznacza to, że lepiej wykonywać kilka zmian po kolei w pojedynczych poleceniach, zamiast na raz. Opcje polecenia:
- { up | down } - włączenie/wyłączenie interfejsu. Jest to coś zupełnie innego niż jego zniszczenie (np. przez wyładowanie sterownika karty sieciowej). Aby działały interfejsy wirtualne powiązane z danym musi on być również włączony.
- arp { on | off } - włączenie/wyłączenie protokołu ARP. Jeżeli dla interfejsu ethernet zostanie wyłączony ARP maszyna będzie widzieć tylko hosty, których adresy zostaną dopisane statycznie do tablicy ARP.
- dynamic { on | off } -
- multicast { on | off } - włączenie/wyłączenie obsługi ruchu multicast.
- allmulticast { on | off } - włączenie/wyłączenie odbioru całego ruchu multicast przez hosta. Ta opcja jest włączona w routerach multikastowych.
- promisc { on | off } - włączenie/wyłączenie trybu podsłuchu. W trybie promisc interfejs odbiera nie tylko pakiety, które są adresowane do niego (adresem docelowym jest adres lokalny warstwy 2, lub adres rozgłoszeniowy), ale również wszystkie inne, które nadejdą.
- trailers { on | off } -
- name NEWNAME - nowa nazwa dla interfejsu. Za pomocą tej opcji można zmienić nazwę interfejsu na nową. Aby móc to zrobić interfejs nie może być używany (należy najpierw go wyłączyć).
- netns PID -
- Przykłady
ip link set dev eth0 down
Powyższe polecenie wyłącza interfejs sieciowy.
ip link set dev eth0 name iface3
Powyższe polecenie zmienia nazwę interfejsu eth0 na iface3.
ip link show
[edytuj]Polecenie to służy do wyświetlania bieżącej konfiguracji urządzeń sieciowych.
Typy interfejsów
[edytuj]dummy
[edytuj]Interfejs dummy służy do tworzenia atrapy interfejsu. Interfejs dummy może posiadać adres konfigurację IP, jednak nie wysyła, ani nie odbiera żadnych pakietów - wszystkie wysyłane przez niego pakiety są przez jądro usuwane. Moduł ten jest przydatny, jeżeli z jakiegoś powodu należy zasymulować istnienie danego interfejsu dla aplikacji użytkownika (np. SLIP, czy PPP).
ifb
[edytuj]Interfejs ifb został stworzony w celu zastąpienia IMQ. Aby móc utworzyć interfejs IFB w jądrze musi być skompilowana jego obsługa (Device Drivers --> Network device support --> Intermediate Functional Block). Aby przerzucić pakiety do urządzenia ifb należy użyć akcji mirred filtrów w poleceniu tc. Aby urządzenie ifb działało, musi zostać włączone. Pakiety, po przejściu przez urządzenie ifb pojawiają się z powrotem w miejscu, z którego zostały wysłane. Aby utworzyć interfejs ifb należy podać nazwę interfejsu rodzica, jednak interfejs ifb nie jest powiązany z rzeczywistym interfejsem i potrzebne jest to jedynie w celu zachowania spójności składni polecenia ip. Podczas ładowania modułu jądra tworzone są automatycznie interfejsy w liczbie równej parametrowi numifbs (domyślnie 2). Składnia polecenia ip link używana do tworzenia interfejsów ifb:
ip link add link DEV [[ name ] NAME ]
[ txqueuelen PACKETS ]
[ address LLADDR ]
[ broadcast LLADDR ]
[ mtu MTU ]
type ifb
macvlan
[edytuj]Interfejs macvlan pozwala na stworzenie interfejsu wirtualnego z przypisanym innym adresem MAC, niż adres interfejsu-rodzica. Aby móc utworzyć interfejs macvlan w jądrze musi być skompilowana jego obsługa (Device Drivers --> Network device support --> MAC-VLAN). Składnia polecenia ip link używana do utworzenia urządzenia macvlan jest postaci:
ip link add link DEV [[ name ] NAME ]
[ txqueuelen PACKETS ]
[ address LLADDR ]
[ broadcast LLADDR ]
[ mtu MTU ]
type macvlan
- Przykłady
ip link add link eth0 type macvlan
- Powyższe polecenie utworzy urządzenie macvlan0 (albo macvlanN jeżeli istnieje urządzenie maclvan o numerze N-1) z losowym adresem MAC, przywiązane do interfejsu eth0.
ip link add link eth0 mv0 type macvlan
- Powyższe polecenie utworzy urządzenie mv0 z losowym adresem MAC, przywiązane do interfejsu eth0.
ip link add link eth0 name mv0 address 01:23:45:67:89:AB type macvlan
- Powyższe polecenie utworzy urządzenie mv0 z adresem MAC 01:23:45:67:89:AB, przywiązane do interfejsu eth0.
vlan
[edytuj]Interfejs vlan pozwala na tworzenie wirtualnych interfejsów sieciowych obsługujących tagi VLAN (IEEE 802.1Q). Obsługa interfejsu vlan przez polecenie ip link add link zastępuje użycie przestarzałego narzędzia vconfig (opisanego w rozdziale Sieci:Linux/vconfig. Aby móc korzystać z VLANów jądro musi je obsługiwać, w tym celu należy w menuconfig zaznaczyć opcję Networking support --> Networking options --> 802.1Q VLAN Support (VLAN_8021Q w .config). Prócz tego można włączyć również obsługę protokołu GVRP (ang. GARP VLAN Registration Protocol). Składnia polecenia ip link add link podczas tworzenia interfejsu vlan jest następująca:
ip link add link DEV [[ name ] NAME ]
[ txqueuelen PACKETS ]
[ address LLADDR ]
[ broadcast LLADDR ]
[ mtu MTU ]
type vlan ARGS
ARGS := id VLANID [ FLAG-LIST ] [ ingress-qos-map QOS-MAP ] [ egress-qos-map QOS-MAP ]
VLANID := 0-4095
FLAG-LIST := [ FLAG-LIST ] FLAG
FLAG := [ reorder_hdr { on | off } ] [ gvrp { on | off } ]
QOS-MAP := [ QOS-MAP ] QOS-MAPPING
QOS-MAPPING := FROM:TO
Znaczenie poszczególnych opcji jest następujące:
- id VLANID - numer VID sieci VLAN, w której ma działać interfejs. Numery VID obejmują zakres 0-4095, przy czym 0 ma specjalne znaczenie.
- reorder_hdr { on | off} - włączenie tej opcji powoduje usunięcie tagu VLAN z ramki Ethernet wewnątrz jądra. Opcja ta jest potrzebna w przypadku używania aplikacji, które nie potrafią pracować na tagowanych ramkach Ethernet (np. starsze wersje demona DHCPD). Włączenie tej opcji może także spowodować ogłupienie innych aplikacji, np. snifferów Wireshark i tcpdump (opisanych w rozdziałach Sieci:Linux/Wireshark i Sieci:Linux/tcpdump).
- gvrp { on | off} - włączenie tej opcji powoduje uruchomienie w jądrze demona GVRP, służącego do rejestrowania VLANów w przełącznikach obsługujących protokół GVRP.
- ingress-qos-map QOS-MAP - opcja ta pozwala na mapowanie pola QoS pomiędzy odpowiednim polem tagu VLAN, a polem skb->priority pakietu.
- egress-qos-map QOS-MAP - opcja ta pozwala na mapowanie pola skb->priority na odpowiednie pole tagu VLAN.
- Przykłady
ip link add link eth0 name vl4004 type vlan id 4004 gvrp on
Powyższe polecenie utworzy interfejs o nazwie vl4004 podłączony do VLAN 4004 na interfejsie eth0.