Как настроить сервер 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говорит мне, что оба NIC работают нормально:

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         

Вопрос:

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

PUK
источник
Какой dhcpd вы используете?
TML
@TML Насколько я понимаю dhcp(и, следовательно, dhcpd), это не является обязательным, и предназначен только для централизации всех статических IP-адресов на сервере (в отличие от изменения /etc/network/interfacesфайла на каждом хосте). Поэтому я решил не экспериментировать с этим, пока это не сработает. Однако я dhcp3-serverустановил, а такжеisc-dhcp-server
puk
Если вы хотите, чтобы клиент получал IP-адрес от dhcp, вам нужно запустить dhcpd; Вы должны опубликовать конфигурацию для того, какой из этих dhcpd в настоящее время является активным, поскольку именно здесь источником проблемы будет re: клиент не получает 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;
    }

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

Braiam
источник
Добавлен вывод sudo iptables -Lвопроса
puk
Не для того, чтобы быть разборчивым, но для интересов любого, кто читает этот ответ, не могли бы вы объяснить, что представляют собой некоторые из этих значений dhcpd.conf: строка 4 192.168.7.255и строка 8subnet 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-адрес в качестве шлюза?
Пук
1
Возможно, потому что широковещательная рассылка и сеть на eth1 маршрутизатора указывают на 192.168.1.x вместо 192.168.7.x; если вы не можете общаться с eth1 на маршрутизаторе и с eth0 на клиенте, DHCPACK никогда не придет к клиенту (и, следовательно, никогда не получит IP).
TML
9

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

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

PUK
источник