Termin IP Forwarding opisuje wysyłanie pakietu sieciowego z jednego interfejsu sieciowego do drugiego na tym samym urządzeniu. Powinna być włączona, jeśli chcesz, aby Twój system działał jako router, który przesyła pakiety IP z jednej sieci do drugiej.
W systemie Linux jądro Linux ma zmienną o nazwie „ip_forward”, która przechowuje tę wartość. Jest dostępny za pomocą pliku '/proc/sys/net/ipv4/ip_forward'. Domyślna wartość to 0, co oznacza brak przekierowania IP, ponieważ zwykły użytkownik, który uruchamia jeden komputer bez dodatkowych komponentów, zwykle tego nie potrzebuje. Natomiast w przypadku routerów, bram i serwerów VPN jest to dość istotna funkcja.
Następnie wyjaśnimy, jak tymczasowo i na stałe włączyć przekazywanie IP.
Przekazywanie IP jako rozwiązanie tymczasowe
Aby włączyć ten parametr jądra w locie, masz dwie opcje. Opcja 1 po prostu przechowuje wartość 1 w powyższej zmiennej w następujący sposób:
# echo 1 > /proc/sys/net/ipv4/ip_forwardOpcja 2 wykorzystuje polecenie „sysctl”, które pozwala również dostosować różne parametry jądra w czasie wykonywania [2]. Jako użytkownik administracyjny uruchom następujące polecenie:
# sysctl -w net.IPv4.ip_forward=1Pamiętaj, że to ustawienie zmienia się natychmiast. Ponadto wynik nie zostanie zachowany po ponownym uruchomieniu systemu.
Możesz zapytać o przechowywaną wartość w następujący sposób:
# kot /proc/sys/net/ipv4/ip_forwardTo polecenie zwraca wartość 0 w przypadku braku przekazywania IP i wartość 1 w przypadku włączenia przekazywania IP IP. Alternatywnie, użycie 'sysctl' pokazuje również aktualny stan:
# sieć sysctl.IPv4.ip_forwardnetto.IPv4.ip_forward = 0
#
Włączanie przekierowania IP na stałe
Aby to osiągnąć, należy wykonać kilka innych kroków. Najpierw edytuj plik '/etc/sysctl.konf'. Wyszukaj linię zawierającą wpis „#net.IPv4.ip_forward=1” i usuń # na początku linii.
Następnie zapisz plik i uruchom polecenie „sysctl”, aby włączyć zmienione ustawienia:
# sysctl -p /etc/sysctl.konfOpcja „-p” jest skrótem od „-load” i wymaga podania nazwy pliku konfiguracyjnego.
Następnie uruchom ponownie system plików proc, który dostarcza informacji o stanie jądra Linux za pomocą następującego polecenia:
# /etc/init.d/procps restartOkoło 2015 roku nazwa pliku została skrócona z „procps”.sh” na „procps”. Tak więc w starszych systemach Debiana skrypt, który należy wywołać, nazywa się 'procps.zamiast tego.
Radzenie sobie z Systemd
Kolejna przeszkoda pojawiła się wraz z wydaniem wersji Systemd 221. Przekazywanie IP jest domyślnie wyłączone, a włączenie wymaga obecności dodatkowego pliku. Jeśli jeszcze go tam nie ma, po prostu go dodaj. Nazwa pliku składa się z nazwy interfejsu sieciowego, po której następuje przyrostek '.sieć”, na przykład „eth0.sieć” dla interfejsu sieciowego „/dev/eth0”. Jak stwierdzono w dokumentacji [4], inne rozszerzenia są ignorowane.
Poniższy fragment kodu przedstawia konfigurację interfejsu sieciowego „/dev/tun0”. Zawiera dwie sekcje - „Dopasuj” i „Sieć”. W sekcji Match określ nazwę interfejsu sieciowego, a w sekcji Network włącz przekierowanie IP.
# cat /etc/systemd/network/tun0.sieć[Mecz]
Nazwa=tun0
[Sieć]
IPForward=ipv4
Wniosek
Aktywacja przekierowania IP dla IPv4 nie jest tajemnicą. Zaledwie kilka kroków i jesteś na miejscu. Miłego hackowania!
Linki i referencje
* [1] Konfiguracja Systemd-Networkd, Debian Wiki
* [2] Juergen Haas: Naucz się polecenia sysctl systemu Linux
* [3] Wiadomości systemowe dla wersji 221
* [4] Dokumentacja dla Systemd