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

Вопрос:

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

34
задан 13 April 2017 в 15:24

2 ответа

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

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

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

0
ответ дан 13 April 2017 в 15:24
1114 Брайам ответил на мой вопрос, но я подумал, что было бы полезно провести здесь подробное прохождение. Пожалуйста, обновите это, если я сделал какие-либо ошибки.

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

0
ответ дан 13 April 2017 в 15:24

Другие вопросы по тегам:

Похожие вопросы: