Jak przekształcić serwer Linux w router, aby obsługiwać ruch statycznie i dynamicznie - część 10

Jak przekształcić serwer Linux w router, aby obsługiwać ruch statycznie i dynamicznie - część 10

Jak się spodziewaliśmy w poprzednich samouczkach tego Lfce (Inżynier certyfikowanego Linux Foundation) Seria, w tym artykule omówimy routing ruchu IP statycznie i dynamicznie z określonymi aplikacjami.

Certyfikowany inżynier Linux Foundation - część 10
Wprowadzenie programu certyfikacji Fundacji Linux

Po pierwsze, wyłóżmy pewne definicje:

  1. Krótko mówiąc, a paczka jest podstawową jednostką używaną do przesyłania informacji w sieci. Sieci, które wykorzystują TCP/IP jako protokół sieciowy, postępuj zgodnie z tymi samymi regułami do przesyłania danych: rzeczywiste informacje są podzielone na pakiety, które są wykonane zarówno z danych, jak i adresu, na który należy wysłać.
  2. Rozgromienie to proces „prowadzenie”Dane od źródła do miejsca docelowego w sieci.
  3. Statyczne routing wymaga ręcznie skonfigurowanego zestawu reguł zdefiniowanych w tabeli routingu. Te reguły są ustalone i są używane do zdefiniowania sposobu przechodzenia przez pakiet, gdy podróżuje z jednej maszyny do drugiej.
  4. Dynamiczne routing, Lub Inteligentne routing (Jeśli chcesz), oznacza, że ​​system może zmienić automatycznie, w razie potrzeby, trasa, którą podąża pakiet.

Zaawansowana konfiguracja adresu IP i urządzeń sieciowych

iproute Pakiet zapewnia zestaw narzędzi do zarządzania sieciami i kontrolą ruchu, których będziemy używać w tym artykule, ponieważ reprezentują one wymianę starszych narzędzi, takich jak ifconfig i trasa.

Centralna użyteczność w iproute apartament nazywa się po prostu ip. Jego podstawowa składnia jest następująca:

# polecenie obiektowe IP 

Gdzie obiekt może być tylko jednym z poniższych (wyświetlane są tylko najczęstsze obiekty - możesz odwołać się do człowieka ip Aby uzyskać pełną listę):

  1. połączyć: Urządzenie sieciowe.
  2. addr: Adres protokołu (IP lub IPv6) na urządzeniu.
  3. trasa: Wpis w tabeli routingu.
  4. reguła: Zasada w bazie danych zasad routingu.

Mając na uwadze, że Komenda reprezentuje konkretne działanie, które można wykonać na obiekcie. Możesz uruchomić następujące polecenie, aby wyświetlić pełną listę poleceń, które można zastosować do określonego obiektu:

# Pomoc obiektu IP 

Na przykład,

# Pomoc łącza IP 
Pomoc polecenia IP

Powyższy obraz pokazuje na przykład, że możesz zmienić status interfejsu sieciowego z następującym poleceniem:

# interfejs ustawił link ip up | w dół 

Dla takich przykładów 'ip„Polecenie, przeczytaj 10 przydatnych poleceń„ IP ”do konfigurowania adresu IP

Przykład 1: Wyłączanie i włączenie interfejsu sieciowego

W tym przykładzie wyłączymy i umożliwimy ETH1:

# link IP Pokaż # link ip 
Wyłącz interfejs ETH0

Jeśli chcesz ponownie włączyć ETH1,

# link IP Ustaw ETH1 UP 

Zamiast wyświetlać wszystkie interfejsy sieciowe, możemy określić jeden z nich:

# link ip show eth1 

Które zwrócą wszystkie informacje dla ETH1.

Przykład 2: Wyświetlanie głównej tabeli routingu

Możesz wyświetlić bieżącą główną tabelę routingu za pomocą jednego z następujących 3 poleceń:

# ip Route show # trasa -n # netstat -rn 
Sprawdź tabelę tras Linux

Pierwsza kolumna w wyjściu trzech poleceń wskazuje sieć docelową. Wyjście Trasa IP Pokaż (po słowa kluczowym dev) przedstawia również urządzenia sieciowe, które służą jako brama fizyczna do tych sieci.

Chociaż obecnie polecenie IP jest preferowany na trasie, nadal możesz odnosić się do mężczyzny IP-Route I trasa człowieka Aby uzyskać szczegółowe wyjaśnienie reszty kolumn.

Przykład 3: Korzystanie z serwera Linux do prowadzenia pakietów między dwiema prywatnymi sieciami

Chcemy kierować ICMP (Ping) Pakiety od DEV2 do DEV4 i na odwrót (pamiętaj, że oba maszyny klientów znajdują się w różnych sieciach). Nazwa każdej NIC wraz z odpowiednim adresem IPv4 jest podawana wewnątrz nawiasów kwadratowych.

Nasze środowisko testowe jest następujące:

Klient 1: Centos 7 [ENP0S3: 192.168.0.17/24] - Dev1 Router: Debian Wheezy 7.7 [ETH0: 192.168.0.15/24, ETH1: 10.0.0.15/24] - Dev2 Klient 2: OpenSuse 13.2 [ENP0S3: 10.0.0.18/24] - Dev4 

Zobaczmy tabelę routingu w Dev1 (Centos Box):

# pokaz trasy ip 

a następnie zmodyfikuj go, aby użyć swojego ENP0S3 NIC i połączenie z 192.168.0.15 Aby uzyskać dostęp do gospodarzy w 10.0.0.Sieć 0/24:

# IP Route Dodaj 10.0.0.0/24 przez 192.168.0.15 Dev ENP0S3 

Który zasadniczo brzmi: „Dodaj trasę do 10.0.0.Sieć 0/24 za pośrednictwem interfejsu sieciowego ENP0S3 za pomocą 192.168.0.15 jako brama ”.

Sieć tras w Linux

Podobnie w Dev4 (OpenSuse Box) dla gospodarzy ping w 192.168.0.Sieć 0/24:

# IP Route Dodaj 192.168.0.0/24 przez 10.0.0.15 Dev ENP0S3 
Routing sieciowy w Linux

Na koniec musimy umożliwić przekazanie w naszym router Debian:

# echo 1>/proc/sys/net/ipv4/ip_forward 

Teraz phing:

Sprawdź routing sieciowy

I,

Status pingowy

Aby te ustawienia były trwałe w butach, edytuj /etc/sysctl.conf na routerze i upewnij się internet.IPv4.ip_forward Zmienna jest ustawiona na true w następujący sposób:

internet.IPv4.ip_forward = 1 

Ponadto skonfiguruj NICS u obu klientów (poszukaj pliku konfiguracyjnego wewnątrz /etc/sysconfig/sieć na OpenSuse i /etc/sysconfig/scripts na Centos - w obu przypadkach się to nazywa IFCFG-ENP0S3).

Oto plik konfiguracyjny z pola OpenSuse:

Bootproto = statyczny transmisja = 10.0.0.255 iPaddr = 10.0.0.18 Mash = 255.255.255.0 bramy = 10.0.0.15 Nazwa = sieć ENP0S3 = 10.0.0.0 onboot = tak 
Przykład 4: Korzystanie z serwera Linux do prowadzenia pakietów między prywatnymi sieciami a Internetem

Kolejny scenariusz, w którym maszyna Linux może być używana jako router, gdy trzeba udostępnić swoje połączenie internetowe z prywatną sieci LAN.

Router: Debian Wheezy 7.7 [ETH0: Publiczne IP, ETH1: 10.0.0.15/24] - Dev2 Klient: OpenSuse 13.2 [ENP0S3: 10.0.0.18/24] - Dev4 

Oprócz skonfigurowania przekazywania pakietów i statycznej tabeli routingu w kliencie, jak w poprzednim przykładzie, musimy dodać kilka reguł IPTABLES w routerze:

# iptables -t nat -a posttrouting -o eth0 -j maskarada # iptables -a do przodu -i eth0 -o eth1 -m Stan -State Powiązane, ustanowione -j akceptuj # iptables -a do przodu -i ETH1 -O ETH0 -J ZAAKCEPTOWAĆ 

Pierwsze polecenie dodaje regułę do Postrouting łańcuch w tabeli NAT (translacja adresu sieciowego), wskazując, że NIC ETH0 powinien być używany do pakietów wychodzących.

MASKARADA Wskazuje, że ta karta ma dynamiczne IP i że przed wysłaniem pakietu do „Dziki dziki świat„Internetu, prywatny adres źródłowy pakietu musi zostać zmieniony na adres publicznego IP routera.

W sieci LAN z wieloma hostami router śledzi ustalone połączenia /proc/net/ip_conntrack Więc wie, gdzie zwrócić odpowiedź z Internetu.

Tylko część wyjścia:

# cat/proc/net/ip_conntrack 

jest pokazem na następnym zrzucie ekranu.

Pakiety trasy w Linux

Gdzie podświetlone jest pochodzenie (prywatne IP z OpenSuse Box) i docelowe (Google DNS). To był wynik biegu:

# curl www.Tecmint.com 

na polu openSuse.

Jak jestem pewien, że już możesz zgadnąć, router używa Google 8.8.8.8 jako serwer nazw, który wyjaśnia, dlaczego miejsce docelowe pakietów wychodzących wskazuje na ten adres.

Notatka: Że przychodzące pakiety z Internetu są akceptowane tylko wtedy, gdy są częścią już ustalonego połączenia (polecenie nr 2), podczas gdy pakiety wychodzące są dozwolone ”darmowe wyjście”(Polecenie #3).

Nie zapomnij, aby Twoje reguły IPTABLES były utrzymywane zgodnie z krokami przedstawionymi w części 8 - Skonfiguruj zaporę ogniową tej serii.

Dynamiczne routing z quagga

Obecnie narzędziem najczęściej używanym do routingu dynamicznego w Linux jest Quagga. Umożliwia administratorom systemowym wdrożenie, ze stosunkowo niedrogim serwerem Linux, tą samą funkcją, która jest dostarczana przez potężne (i kosztowne) routery Cisco.

Samo narzędzie nie obsługuje routingu, ale raczej modyfikuje tabelę routingu jądra, ponieważ uczy się nowych najlepszych tras do obsługi pakietów.

Ponieważ jest to rozwidlenie zebry, program, którego rozwój ustąpił jakiś czas temu, z powodów historycznych utrzymuje te same polecenia i strukturę niż Zebra. Dlatego od tego momentu zobaczysz wiele odniesienia do Zebry.

Należy pamiętać, że nie jest możliwe omówienie dynamicznego routingu i wszystkich powiązanych protokołów w jednym artykule, ale jestem przekonany, że przedstawiona tutaj treść będzie służyć jako punkt wyjścia do opracowania.

Instalowanie Quagga w Linux

Aby zainstalować Quagga w wybranej dystrybucji:

# APTIDE APTIOND && Aptitude Instaluj Quagga [on Ubuntu] # Yum Update && Yum Instaluj Quagga [Centos/Rhel] # Zypper Refresh && Zypper Instal Quagga [OpenSuse] 

Będziemy używać tego samego środowiska, co przy przykładzie nr 3, z jedyną różnicą, że ETH0 jest podłączony do głównego routera bramy z IP 192.168.0.1.

Następnie edytuj /etc/quagga/demony z,

Zebra = 1 RIPD = 1 

Teraz utwórz następujące pliki konfiguracyjne.

#/etc/quagga/zebra.conf #/etc/quagga/ripd.conf 

i dodaj te wiersze (wymień dla wybranego nazwy hosta i hasła):

Service Quagga restart hostName DEV2 hasło Quagga 
# Service Quagga restart 
Rozpocznij usługę Quagga

Notatka: To RIPD.conf to plik konfiguracyjny dla protokołu informacji o routingu, który zapewnia routerowi informacje, które można osiągnąć i jak daleko są (pod względem ilości chmielu).

Zauważ, że jest to tylko jeden z protokołów, których można użyć wraz z Quagga, i wybrałem go do tego samouczka ze względu na łatwość użycia i ponieważ większość urządzeń sieciowych go obsługuje, chociaż ma ono wadę przekazywania poświadczeń w prostym tekście. Z tego powodu musisz przypisać odpowiednie uprawnienia do pliku konfiguracyjnego:

# chown quagga: quaggavty/etc/quagga/*.CONF # CHMOD 640/ETC/QUAGGA/*.conf 
Przykład 5: Konfigurowanie Quagga w celu dynamicznego kierowania ruchu IP

W tym przykładzie użyjemy następującej konfiguracji z dwoma routerami (pamiętaj, aby utworzyć pliki konfiguracyjne dla Router #2 jak wyjaśniono wcześniej):

Skonfiguruj Quagga

Ważny: Nie zapomnij powtórzyć następującej konfiguracji dla obu routerów.

Połącz się z Zebrą (słuchanie na porcie 2601), który jest logicznym pośrednikiem między routerem a jądrem:

# Telnet LocalHost 2601 

Wprowadź hasło ustawione w /etc/quagga/zebra.conf Plik, a następnie włącz konfigurację:

Włącz terminal konfiguruj 

Wprowadź adres IP i maskę sieciową każdej NIC:

Inter eth0 ip addr 192.168.0.15 Inter eth1 ip addr 10.0.0.15 Wyjście Exit Write 
Skonfiguruj router

Teraz musimy połączyć się z ROZERWAĆ Terminal Daemon (port 2602):

# Telnet LocalHost 2602 

Wprowadź nazwę użytkownika i hasło zgodnie z skonfigurowanym w /etc/quagga/ripd.conf Plik, a następnie wpisz następujące polecenia w Bold (komentarze są dodawane dla wyjaśnienia):

włączać Włącza polecenie trybu uprzywilejowanego. Skonfiguruj terminal Zmiany w trybie konfiguracji. To polecenie jest pierwszym krokiem do konfiguracji ROUTER RIP umożliwia RIP. Sieć 10.0.0.0/24 Ustawia interfejs RIP Włącz dla 10.0.0.Sieć 0/24. Wyjście Wyjście pisać zapisuje aktualną konfigurację pliku konfiguracyjnego. 
Włącz router

Notatka: Że w obu przypadkach konfiguracja jest dołączana do linii, które wcześniej dodaliśmy (/etc/quagga/zebra.conf I /etc/quagga/ripd.conf).

Na koniec połącz ponownie z usługą Zebra na obu routerach i zwróć uwagę na to, jak każdy z nich ma „nauczyli„Trasa do sieci, która jest za drugą, i która jest następnym przeskokiem, aby dostać się do tej sieci, uruchamiając polecenie Pokaż trasę IP:

# Pokaż trasę IP 
Sprawdź routing IP

Jeśli chcesz wypróbować różne protokoły lub konfiguracje, możesz odwołać się do strony projektu Quagga w celu uzyskania dalszej dokumentacji.

Wniosek

W tym artykule wyjaśniliśmy, jak skonfigurować routing statyczny i dynamiczny za pomocą routera (-ów) Linux Box. Dodaj tyle routerów, ile chcesz, i eksperymentować tyle, ile chcesz. Nie wahaj się do nas, używając poniższego formularza kontaktowego, jeśli masz jakieś komentarze lub pytania.

Zostań inżynierem certyfikowanym Linux