# » course » networking-professional » Linux.03

L03. Konfiguracja sieci

Zobacz na YouTube:

Zidentyfikuj interfejsy sieciowe. Zapisz jakich używają MAC adresów.

W starszych wydaniach Debiana/Ubuntu i w każdej innej dystrybucji interfejsy sieciowe kiedyś nazywały się np. eth0, eth1 lub np. wlan0, wlan1 dla sieci bezprzewodowych. Takie nazewnictwo powodowało niekiedy problemy, np. po restarcie systemu karty zmieniały swoje nazwy i usługi sieciowe przypisane do nich nie działały. Zaczęto więc stosować nazewnictwo interfejsów, oparte o np. położenie fizyczne kart sieciowych na płycie głównej.

Nazewnictwa kart eth0, eth1 używają nadal systemy Armbian, Raspbian oparte na Debianie i Ubuntu.

Używając VirtualBox'a pierwsza karta sieciowa nazywa się enp0s3 a druga, trzecia i czwarta, odpowiednio: enp0s8, enp0s9enp0s10.

Potencjalne problemy

Pod adresem https://wiki.debian.org/NetworkConfiguration oraz https://www.debian.org/doc/manuals/debian-reference/ch05.en.html znajdziesz dokładną konfigurację kart sieciowych. Potencjalnym problemem może być NetworkManager. Możesz go wyłączyć (https://wiki.debian.org/NetworkManager).


Edytujemy plik /etc/network/interfaces tak aby zawierał potrzebną konfigurację kart sieciowych.

3.1 Konfiguracja interfejsu WAN: Karta 1 (eth0 / enp0s3

Interfejs eth0/enp0s3 realizuje połączenie do sieci rozległej (WAN) i powinien być skonfigurowany w sposób statyczny (np. 192.168.4.101/24). Ponadto aby serwer miał połączenie z internetem niezbędne jest podanie adresu bramy domyślnej (ang. Gateway).

Pomimo, że konfiguracja przydzielana dynamicznie dla interfejsu WAN jest wygodniejsza to zaleca się aby była ona statyczna. Zadbaj jednak o unikalność adresu IP w sieci. Np. będąc w sieci 192.168.4.0/24:


auto enp0s3
iface enp0s3 inet static
address 192.168.4.101
netmask 255.255.255.0
gateway 192.168.4.1

Jako, że używamy wbudowanego w VirtualBox NAT'a, wtedy konfiguracja interfejsu WAN będzie wyglądać następująco:


auto enp0s3
iface enp0s3 inet static
address 10.0.2.15
netmask 255.255.255.0
gateway 10.0.2.2

Możesz również, i to jest za początek zalecana opcja, zostawić autokonfigurację tej karty sieciowej.


# The primary network interface
allow-hotplug enp0s3
iface enp0s3 inet dhcp

3.2 Konfiguracja interfejsu LAN: Karta 2 (eth1 / enp0s8)


# The secondary network interfaces
auto enp0s8
iface enp0s8 inet static
address 172.16.1.1
netmask 255.255.255.0

Restart sieci

Po wprowadzeniu zmian należy zrestartować interfejsy sieciowe:

# systemctl restart networking

lub

# service networking restart

oraz 'podnieść' interfejs eth0/enp0s3 (ta operacja może nie być konieczna - sprawdź status połączenia):

# ifup enp0s3

lub

# ifup eth0

Następnie sprawdzamy poleceniem ifconfig czy zostały przypisane prawidłowe adresy. Dla karty eth0:

# ifconfig eth0

oraz dla karty eth1/enp0s8:

# ifconfig eth1
lub
# ifconfig enp0s8

Brak polecenia ifconfig

Komenda ifconfig jest przestarzała i dlatego domyślnie jej brakuje w systemie, począwszy od wersji Debian 9 (Stretch).


# ifconfig
-bash: ifconfig: command not found

Nową i zalecaną alternatywą do sprawdzania konfiguracji sieci w systemie Debian jest polecenie ip. Na przykład, aby użyć polecenia ip do wyświetlenia konfiguracji sieci, uruchom następujące polecenie:


# ip address

Powyższe polecenie ip może być skrócone do:


# ip a

Jeśli nadal wolisz używać polecenia ifconfig, możesz łatwo zainstalować go jako część pakietu net-tools.

Za pomocą polecenia apt (lub apt-get) zainstaluj pakiet net-tools:


# apt install net-tools

Komenda ifconfig jest teraz dostępna.

Przestarzałe polecenia sieciowe Linuksa i ich zamienniki

Wymieniane w tej instrukcji narzędzia wiersza poleceń dostępne do konfigurowania i rozwiązywania problemów z sieciami w systemach Linux, chociaż są nadal zawarte i funkcjonalne w wielu dystrybucjach Linuksa, są w rzeczywistości uważane za przestarzałe i dlatego powinny zostać wycofane na korzyść bardziej nowoczesnych zamienników.

W szczególności przestarzałe polecenia sieciowe Linuksa, o których mowa, to: arp, ifconfig, iptunnel, iwconfig, nameif, netstat i route.

Te programy (z wyjątkiem iwconfig) są zawarte w pakiecie net-tools, który nie był konserwowany od lat. Funkcjonalność zapewniana przez kilka z tych narzędzi została odtworzona i ulepszona w nowym pakiecie iproute2, głównie za pomocą nowego polecenia ip.

Przestarzałe polecenieZamiennik/i polecenia
arpip n (ip neighbor)
ifconfigip a (ip addr), ip link, ip -s (ip -stats)
iptunnelip tunnel
iwconfigiw
nameifip link, ifrename
netstatss, ip route (dla netstat-r), ip -s link (dla netstat -i), ip maddr (dla netstat-g)
routeip r (ip route)

3.3 Przekazywanie IP

"Przekazywanie IP" (ang. IP forwarding) jest synonimem "routingu". Nazywa się to "przekazywaniem IP jądra" (ang. kernel IP forwarding), ponieważ jest cechą jądra Linux.

Router często ma wiele interfejsów sieciowych. Jeśli ruch przychodzi na jednym interfejsie, który pasuje do podsieci innego interfejsu sieciowego, router przesyła ten ruch do drugiego interfejsu sieciowego.

Przykład

Powiedzmy, że mamy dwie karty sieciowe, jedna (NIC-1) jest pod adresem 192.168.2.1/24, a druga (NIC-2) to 192.168.3.1/24. Jeśli przekazywanie jest włączone, a na NIC-1 przychodzi pakiet z "adresem docelowym" (ang. destination) 192.168.3.8, router ponownie wyśle ​​ten pakiet z NIC-2.

Routery działające jako bramy do Internetu często mają domyślną trasę, dzięki której każdy ruch, który nie pasuje do żadnej karty sieciowej, przechodzi przez kartę sieciową trasy domyślnej. Tak więc w powyższym przykładzie, jeśli masz połączenie internetowe przez NIC-2, ustaw NIC-2 jako domyślną trasę, a następnie ruch przychodzący z NIC-1, który nie jest przeznaczony na coś na 192.168.2.0/24, zostanie skierowany przez NIC-2. Oczekujemy, że istnieją inne routery dostępne po NIC-2, które mogą dalej trasować (w przypadku Internetu, następnym skokiem byłby router twojego dostawcy usług internetowych (ISP, ang.Internet Service Provider), a następnie routera ich dostawcy, itd.).

Włączenie przekazywania IP

Włączenie ip_forward informuje system Linux, aby zaczął to robić. Aby miało to sens, potrzebne są dwa interfejsy sieciowe (dowolne dwa lub więcej przewodowych kart sieciowych, kart lub chipsetów Wi-Fi, łącza PPP przez modem 56k lub szeregowy itp.).

Podczas rutowania bezpieczeństwo jest ważne i właśnie tam włącza się filtr pakietów Linuksa, iptables. Potrzebujesz więc konfiguracji iptables zgodnej z Twoimi potrzebami.

Zauważ, że włączenie przekazywania z wyłączonym iptables i lub bez uwzględnienia zapory ogniowej i bezpieczeństwa może narazić Cię na zagrożenia, jeśli jedna z kart sieciowych będzie miała dostęp do Internetu lub podsieci, nad którą nie masz kontroli.

Sprawdzamy status "IP forwarding" poprzez:


# sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1

1 oznacza, że "IP forwarding" jest włączone.

Powyższa wartość odczytywana jest z Linux'owego systemu proc a dokładniej z pliku: /proc/sys/net/ipv4/ip_forward, można więc:


# cat /proc/sys/net/ipv4/ip_forward
1

Aby wyłączyć "IP forwarding" w działającym systemie:


# sysctl -w net.ipv4.ip_forward=0
net.ipv4.ip_forward = 0

Aby na stałe włączyć (lub wyłączyć) "IP forwarding" w systemie w pliku: /etc/sysctl.conf wyedytuj linie wpisując 1 dla włączenia lub 0 dla wyłączenia:


net.ipv4.ip_forward = 1

Brak pliku /etc/sysctl.conf

W systemie Debian 13, konfiguracja pierwotnie trzymana w pliku /etc/sysctl.conf została zmieniona. Całość konfiguracji została przeniesiona do katalogu /etc/sysctl.d/. Należy w nim utworzyć plik z rozszerzeniem *.conf o następującej zawartości:


net.ipv4.ip_forward = 1

Konfiguracja iptables

iptables to program sterujący filtrem pakietów (głównie używanym jako zapora sieciowa bądź NAT). Program może być używany jako filtr pakietów, bądź tzw. stanowa zapora dla systemów Linux z jądrem począwszy od serii 2.4.x, kontrolujący połączenia wchodzące i wychodzące do sieci komputerowej lub stacji roboczej. Wymaga jądra skompilowanego z modułem ip_tables.

Reguły iptables są ustalane i edytowane z wiersza polecenia komendą iptables dla IPv4 i ip6tables dla IPv6. Reguła włączająca translację adresów (tzw. maskaradę) dla systemu w którym karta enp0s3 jest interfejsem WAN z dostępem do internetu:


iptables –t nat –A POSTROUTING –o enp0s3 –j MASQUERADE

Wprowadzona konfiguracja działa do momentu ponownego uruchomienia systemu. Aby reguły iptables zostały ponownie zastosowane należy je najpierw zapisać.

Dla IPv4 mogą one zostać zapisane w pliku komendą iptables-save.


iptables-save > /etc/iptables/rules.v4

Ten plik może później zostać załadowany komendą iptables-restore.


iptables-restore < /etc/iptables/rules.v4

Jeżeli są wykorzystywane reguły IPv6 to mogą one również zostać zapisane.


ip6tables-save > /etc/iptables/rules.v6

Automatyczne ładowanie skonfigurowanych reguł iptables może być zrealizowane za pomocą iptables-persistent

Pakiet o nazwie "iptables-persistent", przejmuje automatyczne ładowanie zapisanych reguł iptables. Reguły muszą być zapisane w pliku /etc/iptables/rules.v4 dla IPv4 lub w /etc/iptables/rules.v6 dla IPv6.

Aby móc skorzystać z pakietu należy go jedynie zainstalować.


apt install iptables-persistent

Uwaga!

Starsze wersje pakietu iptables-persistent (np. w Debianie Squeeze) nie wspierają reguł IPv6, występuje w nich jedynie plik /etc/iptables/rules dla IPv4.

Skontroluj czy po zakończonej konfiguracji reguły są ładowane po restarcie systemu.

3.4 Brama domyślna w sieci

Sprawdzamy poleceniem route czy została ustawiona prawidłowa brama domyślna (zakładając że jesteśmy w sieci 192.168.4.0/24):


# route -n
Kernel IP routing table
Destination 	Gateway 		Genmask 		Flags 	Metric 	Ref 	Use 	Iface
0.0.0.0 		192.168.4.1 	0.0.0.0 		UG 		0 		0 		0 		eth0
192.168.4.0 	0.0.0.0 		255.255.255.0 	U 		0 		0 		0 		eth0
lub

# route -n
Kernel IP routing table
Destination 	Gateway 		Genmask 		Flags 	Metric 	Ref 	Use 	Iface
0.0.0.0 		10.0.2.2 		0.0.0.0 		UG 		0 		0 		0 		eth0
10.0.2.0 		0.0.0.0 		255.255.255.0 	U 		0 		0 		0 		eth0

Jeśli z jakiejś przyczyny brama domyślna nie została skonfigurowana pamiętaj, że zawsze możesz ustawić ją ręcznie poleceniem route:

# route add default gw 192.168.4.1
lub
# route add default gw 10.0.2.2

3.5 Konfiguracja statyczna sieci w systemie Windows

Jako system do testów użyj dowolnej maszyny wirtualnej.

Statyczna konfiguracja interfejsu sieciowego jest niezbędna ponieważ nasza sieć w chwili obecnej nie posiada jeszcze skonfigurowanego serwera DHCP. Dlatego w systemie klienckim powinniśmy ręcznie ustawić następujące parametry sieci:

Kartę sieciową systemu ustawiamy w tej samej sieci wewnętrznej co kartę w systemie serwerowym.

ParametrWartośćUwagi
Adres IP172.16.1.2Zgodnie z tym co ustawiliśmy na serwerze
Maska podsieci255.255.255.0Zgodna z maską serwera
Brama domyślnaMożemy pozostawić puste ponieważ do momentu uruchomienia NAT-a i tak nie uzyskamy połączenia z internetem. Jeśli jednak chcemy można odrazu wskazać poprawny adres bramy.
Serwery DNSTak jak w przypadku bramy domyślnej

Po skonfigurowaniu sieci uruchamiamy konsolę CMD lub PowerShell i poleceniem ipconfig sprawdzamy konfigurację karty:


C:\Users\Administrator>ipconfig
Konfiguracja IP systemu Windows
Karta Ethernet Połączenie lokalne:
Sufiks DNS konkretnego połączenia :
Adres IPv6 połączenia lokalnego . : fe80::f495:64b5:90f3:defb%14
Adres IPv4. . . . . . . . . . . . : 172.16.1.2
Maska podsieci. . . . . . . . . . : 255.255.255.0
Brama domyślna. . . . . . . . . . :

Następnie poleceniem ping testujemy połączenie do serwera


C:\Users\Administrator>ping 172.16.1.1

Badanie 172.16.1.1 z 32 bajtami danych:
Odpowiedź z 172.16.1.1: bajtów=32 czas=3ms TTL=64
Odpowiedź z 172.16.1.1: bajtów=32 czas=4ms TTL=64
Odpowiedź z 172.16.1.1: bajtów=32 czas=3ms TTL=64
Odpowiedź z 172.16.1.1: bajtów=32 czas=2ms TTL=64

Statystyka badania ping dla 172.16.1.1:
	Pakiety: Wysłane = 4, Odebrane = 4, Utracone = 0 (0% straty),

Szacunkowy czas błądzenia pakietów w millisekundach:
	Minimum = 3 ms, Maksimum = 3 ms, Czas średni = 3 ms

Możemy także teraz przetestować połączenie z serwera do naszego klienta


# ping 172.16.1.2
PING 172.16.1.2 (172.16.1.2) 56(84) bytes of data.
64 bytes from 172.16.1.2: icmp_req=1 ttl=128 time=4.37 ms
64 bytes from 172.16.1.2: icmp_req=2 ttl=128 time=4.84 ms
64 bytes from 172.16.1.2: icmp_req=3 ttl=128 time=4.34 ms
64 bytes from 172.16.1.2: icmp_req=4 ttl=128 time=7.34 ms
--- 172.16.1.2 ping statistics 4 ---
packets transmitted, 4 received, 0% packet loss, time 3004ms
rtt min/avg/max/mdev = 4.349/5.230/7.349/1.241 ms

Po poprawnym skonfigurowaniu interfejsów sieciowych na serwerze oraz na hoście klienckim można przystąpić do instalacji i konfiguracji kolejnych usług sieciowych na serwerze.