Як налаштувати сервер Linux як маршрутизатор


34

Мотивація:

Я хочу використовувати мій сервер Linux замість середнього бездротового маршрутизатора з кількох причин

  1. Хочу дізнатися, як налаштувати більш повний сервер на Linux
  2. Я не хочу, щоб модем, підключений до маршрутизатора, був підключений до мережевого комутатора
  3. Мені нудно і втомитися від того, щоб розмикати маршрутизатор кожні 10 днів, тому що він просто зависає
  4. Мені нудно купувати маршрутизатори, щоб зрозуміти, що їм не вистачає чогось важливого, наприклад, переадресація портів або статична IP-адресація (dhcp)

Налаштування:

Зрештою, з'єднання перейде в модем, і прямо на мій сервер eth0, а потім eth1вийде до мережевого комутатора, до якого підключуватимуться всі інші клієнтські комп'ютери за допомогою Ethernet-кабелів (на сьогодні забудьте бездротовий зв'язок). Однак зараз я перебуваю в офісній будівлі, і у мене є з'єднання, що надходить в модем, який переходить в маршрутизатор, який переходить в мережевий комутатор, який потім переходить у eth0вказане вище.

Поточні навчальні посібники:

Я переглянув кілька навчальних посібників ( найкращий підручник з Ubuntu ), і я переглянув деякі питання щодо маршрутизатора (тобто цього ), але всі вони переглядають декілька ключових понять, наприклад:

  • Яке eth1відношення стосується eth0? В /etc/network/interfacesя повинен сказати , eth1щоб використовувати в eth0якості network( як правило , це реальний фізичний адресу маршрутизатора)?
  • Чи потрібно мені щось робити, щоб доручити eth1взяти Інтернет, який заходить, eth0і передати його кому хоче в мережевому комутаторі?

Поточний підхід:

Ось мій /etc/network/interfacesфайл на сервері:

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

І ifconfigкаже мені, що обидва НІК працюють нормально:

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)

А ось що route -n returnsна сервері:

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

Тоді про клієнта у мене є

auto lo
iface lo inet loopback
iface eth0 inet dhcp

Але ip не присвоюється.

EDIT: Ось файл конфігураційного сервера isc-dhcp-сервера, на /etc/dhcp3/dhcpd.conякий я скопіював переважно з цього сайту .

# 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;
}  

EDIT: вихідsudo 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         

Питання:

Які важливі кроки / компоненти мені не вистачає в цій установці?


Який dhcpd ви використовуєте?
TML

@TML З мого розуміння dhcp(і таким чином dhcpd) не є обов'язковим, і призначений лише для централізації всіх статичних ips на сервері (на відміну від зміни /etc/network/interfacesфайлу в кожному хості). Тому я вирішив не експериментувати з цим, поки це не спрацює. Я все-таки dhcp3-serverвстановив, а такожisc-dhcp-server
puk

Якщо ви хочете, щоб клієнт отримав IP-адресу від dhcp, вам потрібно запустити dhcpd; Ви повинні опублікувати конфігурацію для того, хто з цих dhcpd зараз є активним, тому що саме тут буде джерело проблеми: клієнт не отримує IP. Особисто я рекомендував би dnsmasq, оскільки він також приносить корисні функції для внутрішнього дозволу DNS.
TML

@TML Я додав dhcpd.confфайл і вказав, що використовуюisc-dhcp-server
puk

1
Вам слід ще два пункти: 5. Мені нудно і частково контролювати пристрій. 6. Мені нудно і мати маршрутизатор, який потенційно може мати задній простір. Точка №6 - це реальна річ, яка зараз може бути в будь-якому маршрутизаторі. Деякі маршрутизатори мають додаткові функції, такі як жорстко закодований пароль або таємне прослуховування якогось порту.
Ignas2526

Відповіді:


16

Я маю йти як Джек-розпушувач через кілька відсутніх у вас речей:

  1. Якщо ваш клієнт використовуватиме DHCP для отримання IP-адрес, вам потрібен сервер DHCP.

    iface eth0 inet dhcp

    У клієнтах це вказує на те, що вони отримуватимуть свої IP-адреси від DHCP-сервера, якщо ви не встановили DHCP-сервер, або слід використовувати фіксовану IP-адресу або встановити DHCP-сервер.

  2. Вам не вистачає серверів DNS, налаштованих у клієнтах. Або через відсутність DHCP-сервера, або ви можете використовувати локальний DNS-сервер для всієї своєї мережі.

  3. Ви не запропонували iptablesправила (вихід sudo iptables -L), але я можу здогадатися, що ви не активували правила маскараду, а також пересилання IP, як описано .

  4. IP-адреса eth1не рекомендується. Будь-який IP, який закінчився 0, зазвичай є самою мережею, і більшість маршрутизаторів / брандмауерів просто плутаються, коли вони використовуються . Змініть його, 192.168.7.1і ви будете в основному штрафом.

  5. Ваше broadcastзначення в eth1інтерфейсі невірно. Посилає пакети нікуди. Правильне значення (з урахуванням інших значень інтерфейсу) 192.168.7.255.

  6. Ваші параметри на сервері DHCP порочні. Пакети ARP до вашого маршрутизатора ніколи не дотягнуться. Це те, що ви повинні мати:

    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;
    }

Виконайте ці дії, і, швидше за все, у вас буде працювати ваш маршрутизатор.


Додано вихід sudo iptables -Lзапитання
puk

Щоб не бути вибагливим, але для інтересів будь-кого іншого, хто читає цю відповідь, чи можете ви пояснити, що таке деякі з цих значень dhcpd.conf: 4- 192.168.7.255й рядок та 8-й рядокsubnet 192.168.7.0
puk

@puk, який занадто складний для пояснення в коментарях, але, якщо говорити про це, .255це звичайно використовувана широкомовна адреса, будь-який пакет, надісланий у цьому напрямку, буде надісланий всім системам однієї підмережі. Це означає , що будь-який пакет відправлений 1.2.3.255 буде отримана будь-яка система , яка почала Ip з 1.2.3 , так як всі вони знаходяться в одній і тій же підмережі en.wikipedia.org/wiki/Subnetwork#IPv4_subnetting
Braiam

Не працює. Я хочу дізнатися, чи проблема dhcpв мережі. Зробить статичну ip адресу для тестування. для статичного ip на клієнті, чи я використовувати eth1ip адресу в якості шлюзу?
puk

1
Можливо, тому, що трансляція та мережа на eth1 маршрутизатора вказують на 192.168.1.x замість 192.168.7.x; якщо ви не можете поговорити з eth1 на маршрутизаторі до eth0 на клієнті, DHCPACK ніколи не прийдуть до клієнта (і, отже, ніколи не отримають IP).
TML

9

Браїам відповів на моє запитання, але я подумав, що було б корисно провести тут ретельну інформацію. Будь ласка, оновіть це, якщо я допустив помилки.

Спочатку переконайтеся, що у вас є дві Ethernet-карти (NIC) та оновіть /etc/network/interfacesфайл як такий ( не помиляйте це за /etc/networksфайл).

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

Для того, щоб знайти ваш gateway, broadcastі networkдотримуйтесь цих інструкцій .

Далі, зайдіть у клієнт і відредагуйте /etc/network/interfaceспочатку (знову ж таки, не /etc/networks ) файл для статичного ip, щоб переконатися, що принаймні карта NIC працює.

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

Змініть значення, щоб вони відповідали вищевказаним. Якщо це працює, відмінно, а потім використовувати інструкції тут , але слідувати за ними точно , так як є кілька dhcpфайлів , так що не плутайте папку /etc/dhcpз /etc/dhcp3і так далі.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.