Настройка роутера linux
Я пытаюсь настроить роутер Linux в первый раз, и я борюсь с настройкой.
Вот как я хочу его настроить: линия ISP -> маршрутизатор Linux -> маршрутизатор Linksys -> Lan.
В роутере Linux есть eth0 и eth1
Как мне это настроить и куда мне поставить свой внешний ip?
Большое спасибо,
2 ответа
Имея такую настройку дома, я думаю, что знаю, как это сделать.
Ваш Linux-маршрутизатор будет иметь два физических интерфейса. Я позвоню им eth0
(подключен к вашей внутренней сети и имеет статический IP-адрес) и eth1
(подключен к вашему интернет-провайдеру и предположительно адрес, предоставленный через DHCP).
Включение пересылки пакетов
В файле /etc/sysctl.conf
, может быть две строки, соответствующие следующему:
# Controls IP packet forwarding
net.ipv4.ip_forward = 0
Если нет, вам нужно будет добавить хотя бы последнюю строку. Вот важная часть: измените 0 на 1. Это говорит ядру о необходимости передавать пакеты с одного интерфейса на другой, если таблицы маршрутизации на маршрутизаторе Linux сообщают ему, что это следующий шаг. Затем вам нужно будет либо перезагрузиться, либо выполнить следующую команду: echo 1 > /proc/sys/net/ipv4/ip_forward
,
Настройка NAT
Прямо сейчас все, что выходит из eth0 или eth1, идет с тем же IP-адресом, с которым оно входит. Таким образом, Google получит пинг от 192.168.1.x(или от того, какая у вас схема IP). Проблема в том, что эти IP-адреса не могут быть направлены через общедоступный Интернет. Таким образом, вам придется указать маршрутизатору Linux изменить исходящие пакеты, чтобы они могли быть направлены обратно к вам. Я сделал это по следующему правилу:
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
Это говорит системе, что после того, как будет выполнена вся маршрутизация (потому что она находится в цепочке iptables POSTROUTING), и если исходящим интерфейсом является eth1("-o eth1"), тогда примените целевой MASQUERADE. Это означает "изменить исходный IP-адрес на IP-адрес интерфейса.
Настройка DHCP
На данный момент ваша система делает основы. Однако вам придется настроить каждую подключенную систему на статический IP-адрес и указать внешние DNS-серверы. Это можно изменить с помощью пакета под названием dhcp
, Установите его и установите для загрузки во время запуска. В моей системе на базе Red Hat это можно сделать двумя командами: yum install dhcp
а также chkconfig dhcpd on
, Тем не менее, он ничего не будет делать, потому что вы не настроили DHCP относительно того, какова ваша схема IP и какие интерфейсы она должна слушать (хотя я могу ошибаться). Ниже то, что ваш /etc/dhcpd.conf
может выглядеть так:
#
# DHCP Server Configuration file.
# see /usr/share/doc/dhcp*/dhcpd.conf.sample
#
ddns-update-style interim;
#include "/var/named/chroot/etc/rndc.key";
subnet 192.168.1.0 netmask 255.255.255.0
{
authoritative;
range 192.168.1.10 192.168.1.100;
option routers 192.168.1.1;
option domain-name-servers 192.168.1.1;
}
max-lease-time 14400; #4 hours
default-lease-time 14400; #4 hours
Несколько ключевых моментов здесь:
- Строка подсети: Это должен быть сетевой адрес для eth0. Маска сети также должна совпадать.
- Линия диапазона: здесь вы задаете начальный и конечный адреса для своей внутренней сети. Я настоятельно рекомендую исключить адрес самого маршрутизатора Linux.
- Линия дополнительных маршрутизаторов: здесь вы сообщаете клиентам, какой у них будет шлюз по умолчанию. В случае, который вы описали, это будет IP-адрес маршрутизатора linux eth0.
- Опция line-name-Servers line: Здесь вы сообщаете клиентам, какими будут их DNS-серверы. Ты можешь сделать это
option domain-name-servers 208.67.222.222 208.67.220.220
если вы хотите использовать OpenDNS,option domain-name-servers 8.8.8.8 8.8.4.4
если вы хотите использовать Google Public DNS, илиoption domain-name-servers 192.168.1.1
если вы хотите настроить свою систему, чтобы справиться со всем этим.
Теперь вы можете запустить его, выполнив (в системе на основе Red-Hat), service dhcpd start
как корень. Если вы не используете Red Hat или производную, вам нужно будет запустить скрипт запуска для этой системы.
Время аренды определяется в секундах. По крайней мере, согласно документации, которую я смог найти, иногда клиенты будут запрашивать конкретную продолжительность аренды, и в этом случае операторы max-lease-time и min-lease-time проверяются и корректируются в соответствии с этими границами. В других случаях клиенты не будут запрашивать срок аренды, в этом случае используется время аренды по умолчанию.
Это безопасно с точки зрения того, чтобы не обслуживать других клиентов вашего интернет-провайдера с помощью внутренней DHCP-сети, поскольку DHCPD не будет обслуживать адрес, если он не знает о схеме IP интерфейса, на котором он подключен. Поэтому, если на eth1 поступает запрос dhcp с IP-адресом 123.45.67.89, в настройке DHCP нет блока подсети для этого IP-адреса. Таким образом, он не будет отправлять предложения DHCP для этого запроса. Но если он входит в eth0 с IP-адресом 192.168.1.1, у него есть блок подсети, соответствующий этому адресу, и он предлагает DHCP.
Настройка DNS
Этот может быть самым простым из всех. В моей системе RHEL 5.1 он был установлен, запущен и настроен на клиентов. Он настроен так, чтобы указывать на корневые серверы имен и обслуживать клиентов на любом интерфейсе, который активен при запуске DNS.
Для установки имейте в виду, что это не dnsd, а имя. Это не прошедшее время именования. Вместо этого прочитайте это как "имя-D".
yum install named #installation
service named start #start it for right now
chkconfig named on #set it to start at system boot.
Вы можете подумать о настройке дистрибутива маршрутизатора на основе Linux, такого как Smoothwall ( http://www.smoothwall.org/). Он разработан специально для использования маршрутизатора и его гораздо проще настроить, чем использовать собственные настройки.