Jak skonfigurować serwer Linux jako router

34

Motywacja:

Chcę używać mojego serwera linux zamiast przeciętnego routera bezprzewodowego z kilku powodów

  1. Chcę się dowiedzieć, jak skonfigurować pełniejszy serwer na systemie Linux
  2. Nie chcę mieć modemu podłączonego do routera ani przełącznika sieciowego
  3. Mam dość zmęczenia odłączaniem routera co 10 dni, ponieważ po prostu się zawiesza
  4. Mam dość kupowania routerów, aby zdać sobie sprawę, że brakuje im czegoś kluczowego, takiego jak przekierowanie portów lub statyczne adresowanie IP (dhcp)

Ustawiać:

Ostatecznie połączenie przejdzie do modemu, a następnie bezpośrednio do mojego serwera eth0, a następnie eth1wyłączy się do przełącznika sieciowego, do którego wszystkie inne komputery klienckie zostaną podłączone za pomocą kabli Ethernet (na razie zapomnij o łączności bezprzewodowej). Obecnie jednak jestem w budynku biurowym i mam połączenie przychodzące do modemu, który przechodzi do routera, który przechodzi do przełącznika sieciowego, który następnie przechodzi w eth0sposób określony powyżej.

Aktualne samouczki:

Przejrzałem kilka samouczków (samouczek Ubuntu jest najlepszy) i przejrzałem tutaj niektóre pytania dotyczące routera (tj. Ten ), ale wszystkie one zawierają kilka kluczowych pojęć, takich jak:

  • Z czym jest eth1związany eth0? W /etc/network/interfacesmuszę powiedzieć eth1używać eth0jako network(na ogół jest to rzeczywisty fizyczny adres routera)?
  • Czy muszę coś zrobić, aby poinstruować, eth1aby wziąć dostęp do Internetu eth0i przekazać go każdemu, kto chce go w przełączniku sieciowym?

Obecne podejście:

Oto mój /etc/network/interfacesplik na serwerze:

iface lo inet loopback

auto eth0
   iface eth0 inet static
   address 192.168.1.70
   netmask 255.255.255.0
   broadcast 192.168.1.255
   network 192.168.1.0
   gateway 192.168.1.1
   dns-nameservers 8.8.8.8

auto eth1
   # iface eth1 inet dhcp
   iface eth1 inet static
   address 192.168.7.0
   netmask 255.255.255.0
   broadcast 192.168.1.255
   network 192.168.1.0

I ifconfigmówi mi, że obie karty sieciowe działają dobrze:

eth0      Link encap:Ethernet  HWaddr 20:cf:30:55:a0:5f  
          inet addr:192.168.1.70  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::22cf:30ff:fe55:a05f/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:11297 errors:0 dropped:0 overruns:0 frame:0
          TX packets:16639 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:948633 (948.6 KB)  TX bytes:1274685 (1.2 MB)

eth1      Link encap:Ethernet  HWaddr 00:11:95:f7:f4:6d  
          inet addr:192.168.7.0  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::211:95ff:fef7:f46d/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:243 errors:0 dropped:0 overruns:0 frame:0
          TX packets:3231 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:29934 (29.9 KB)  TX bytes:213055 (213.0 KB)
          Interrupt:21 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:5348 errors:0 dropped:0 overruns:0 frame:0
          TX packets:5348 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:470737 (470.7 KB)  TX bytes:470737 (470.7 KB)

wlan0     Link encap:Ethernet  HWaddr bc:f6:85:f8:70:5c  
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

A oto co route -n returnsna serwerze:

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    0      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 eth1
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
192.168.7.0     0.0.0.0         255.255.255.0   U     0      0        0 eth1

Potem mam klienta

auto lo
iface lo inet loopback
iface eth0 inet dhcp

Ale nie ma przypisanego adresu IP.

EDYCJA: Oto plik konfiguracyjny serwera isc-dhcp-serwer, w /etc/dhcp3/dhcpd.conktórym skopiowałem głównie z tej strony .

# Sample /etc/dhcpd.conf                                                                                                                                                  
# (add your comments here) 
default-lease-time 600;
max-lease-time 7200;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.1.255;
option routers 192.168.1.254;
option domain-name-servers 192.168.1.1, 192.168.1.2;
option domain-name "mydomain.example";

subnet 192.168.7.0 netmask 255.255.255.0 {
   range 192.168.7.10 192.168.7.25;
}  

EDYCJA: Wyjściesudo iptables -L

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy DROP)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED
ACCEPT     all  --  anywhere             anywhere            
LOG        all  --  anywhere             anywhere             LOG level warning

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Pytanie:

Jakich kluczowych kroków / elementów brakuje w tej konfiguracji?

puk
źródło
Jakiego dhcpd używasz?
TML
@TML Z mojego zrozumienia dhcp(i dlatego dhcpd) nie jest obowiązkowe i służy jedynie do scentralizowania wszystkich statycznych ips na serwerze (w przeciwieństwie do zmiany /etc/network/interfacespliku na każdym hoście). Dlatego postanowiłem nie eksperymentować z tym, dopóki to nie zadziała. Mam jednak dhcp3-serverzainstalowane, a takżeisc-dhcp-server
puk
Jeśli chcesz, aby klient otrzymał adres IP z dhcp, musisz uruchomić dhcpd; powinieneś opublikować konfigurację dla któregokolwiek z tych dhcpd jest obecnie aktywny, ponieważ tam właśnie będzie źródłem problemu: klient nie otrzymuje adresu IP. Osobiście poleciłbym dnsmasq, ponieważ zawiera również kilka przydatnych funkcji do wykonywania wewnętrznego rozpoznawania DNS.
TML
@TML Dodałem dhcpd.confplik i wskazałem, że używamisc-dhcp-server
puk
1
Powinieneś jeszcze dwa punkty: 5. Mam dość już tylko częściowej kontroli nad urządzeniem. 6. Jestem chory i zmęczony posiadaniem routera, który potencjalnie może mieć tylne wejście. Punkt # 6 to prawdziwa rzecz, która może być teraz na dowolnym routerze. Niektóre routery są wyposażone w dodatkowe funkcje, takie jak zakodowane hasło lub potajemne nasłuchiwanie jakiegoś portu.
Ignas2526

Odpowiedzi:

16

Muszę iść jak Kuba Rozpruwacz z powodu kilku brakujących rzeczy, które masz:

  1. Jeśli twój klient użyje DHCP do uzyskania adresu IP, potrzebujesz serwera DHCP.

    iface eth0 inet dhcp

    U klientów oznacza to, że otrzymają swoje adresy IP z serwera DHCP, jeśli nie skonfigurowałeś serwera DHCP, powinieneś użyć stałych adresów IP lub zainstalować serwer DHCP.

  2. Brakuje serwerów DNS skonfigurowanych na klientach. Albo z powodu braku serwera DHCP, albo możesz chcieć użyć lokalnego serwera DNS dla całej sieci.

  3. Nie zaoferowałeś iptablesreguł (wynik sudo iptables -L), ale mogłem zgadywać, że nie aktywowałeś reguł Masquerade ani przekazywania IP zgodnie z opisem .

  4. Adres IP eth1nie jest zalecany. Dowolny adres IP 0to zazwyczaj sama sieć, a większość routerów / zapory sieciowej jest mylona, ​​gdy są używane . Zmień to na, 192.168.7.1a będziesz w większości w porządku.

  5. Twoja broadcastwartość w eth1interfejsie jest nieprawidłowa. Wysyła paczki do nikąd. Prawidłowa wartość (biorąc pod uwagę inne wartości interfejsu) to 192.168.7.255.

  6. Twoje opcje na serwerze DHCP są błędne. Pakiety ARP do routera nigdy nie osiągną. Oto, co powinieneś mieć:

    default-lease-time 600;
    max-lease-time 7200;
    option subnet-mask 255.255.255.0;
    option broadcast-address 192.168.7.255;
    option routers 192.168.7.1; ## This should be the same value of the step 4
    option domain-name-servers 8.8.8.8;
    
    subnet 192.168.7.0 netmask 255.255.255.0 {
        range 192.168.7.10 192.168.7.25;
    }

Postępuj zgodnie z nimi, a najprawdopodobniej router będzie działał.

Braiam
źródło
Dodano wynik sudo iptables -Lzapytania
puk
Aby nie być wybrednym, ale w interesie kogokolwiek innego czytającego tę odpowiedź, czy możesz wyjaśnić, jakie są niektóre z tych wartości dhcpd.conf: wiersz 4 192.168.7.255i wiersz 8subnet 192.168.7.0
puk
@puk, który jest zbyt skomplikowany, aby wyjaśniać w komentarzach, ale ujmując to ładnie, .255jest zwykle używanym adresem rozgłoszeniowym, każda paczka wysyłana w tym kierunku będzie wysyłana do wszystkich systemów w tych samych podsieciach. Oznacza to, że każdy pakiet wysłany do 1.2.3.255 zostanie odebrany przez dowolny system, którego adres IP zaczyna się od 1.2.3, ponieważ wszystkie są w tej samej podsieci en.wikipedia.org/wiki/Subnetwork#IPv4_subnetting
Braiam
Nie działa. Chcę sprawdzić, czy jest to problem, dhcpczy sieć. Wykona statyczny adres IP w celu przetestowania. w przypadku statycznego eth1adresu IP klienta, czy używam adresu IP jako bramy?
puk
1
Prawdopodobnie dlatego, że rozgłaszanie i sieć na et1 routera wskazują 192.168.1.x zamiast 192.168.7.x; jeśli nie możesz rozmawiać z eth1 na routerze z eth0 na kliencie, DHCPACK nigdy nie dotrze do klienta (w konsekwencji nigdy nie uzyska adresu IP).
TML
9

Braiam odpowiedział na moje pytanie, ale pomyślałem, że dobrze byłoby tu znaleźć dokładny przewodnik. Zaktualizuj to, jeśli popełniłem błędy.

Najpierw upewnij się, że masz dwie karty Ethernet (NIC) i zaktualizuj /etc/network/interfacesplik jako taki ( nie myl tego z /etc/networksplikiem).

iface lo inet loopback                                                                                                                    

auto eth0
   iface eth0 inet static
   address 192.168.1.70
   netmask 255.255.255.0
   broadcast 192.168.1.255
   network 192.168.1.0
   gateway 192.168.1.1
   dns-nameservers 8.8.8.8

auto eth1
   iface eth1 inet static
   address 192.168.7.1
   netmask 255.255.255.0
   broadcast 192.168.7.255
   network 192.168.1.0

Aby znaleźć gateway, broadcasti networkwykonaj te instrukcje .

Następnie przejdź do klienta i najpierw edytuj plik /etc/network/interface(ponownie, nie /etc/networks ) dla statycznego adresu IP, aby upewnić się, że przynajmniej karta NIC działa.

iface eth0 inet static
address 192.168.7.75
netmask 255.255.255.0
network 192.168.7.0
broadcast 192.168.7.255
gateway 192.168.7.1

Zmień wartości, aby pasowały do ​​powyższych wartości. Jeśli to działa, świetnie, skorzystaj z instrukcji tutaj, ale postępuj zgodnie z nimi dokładnie , ponieważ jest kilka dhcpplików, więc nie pomyl folderu/etc/dhcp z /etc/dhcp3i tak dalej.

puk
źródło