Как настроить Linux-сервер в качестве маршрутизатора

Как настроить Linux-сервер в качестве маршрутизатора

Мотивация:

Я хочу использовать свой 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-адрес ему не присваивается.

РЕДАКТИРОВАТЬ:Вот файл конфигурации isc-dhcp-server, /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;
}  

РЕДАКТИРОВАТЬ:Выход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         

Вопрос:

Какие важные шаги/компоненты я упускаю в этой настройке?

решение1

Мне придется пойти по стопам Джека-потрошителя из-за нескольких недостающих вещей, которые у вас есть:

  1. Если ваш клиент будет использовать DHCP для получения IP-адресов, вам понадобится DHCP-сервер.

    iface eth0 инет 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;
    }

Следуйте этим инструкциям, и, скорее всего, ваш маршрутизатор заработает.

решение2

Braiam ответил на мой вопрос, но я подумал, что было бы полезно разместить здесь подробное руководство. Пожалуйста, обновите это, если я допустил какие-либо ошибки.

Сначала убедитесь, что у вас есть две сетевые карты (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-файл, чтобы убедиться, что хотя бы сетевая карта работает.

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и т. д.

Связанный контент