Я пытаюсь настроить маршрутизатор Linux в первый раз, и я борюсь с настройкой.
Вот как я хочу это настроить: Линия ISP -> Маршрутизатор Linux -> Маршрутизатор Linksys -> Lan.
Маршрутизатор Linux имеет eth0 и eth1
Как это настроить и где разместить внешний IP-адрес?
Большое спасибо,
Имея дома такую установку, думаю, я знаю, как это сделать.
Ваш 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
.
Прямо сейчас все, что выходит на eth0 или eth1, выходит с тем же IP-адресом, с которым оно поступает. Таким образом, Google будет получать пинги от 192.168.1.x (или любой другой вашей схемы IP). Проблема в том, что эти IP-адреса не могут быть маршрутизированы через общедоступный Интернет. Таким образом, вам придется указать маршрутизатору Linux изменить исходящие пакеты, чтобы их можно было направить обратно к вам. Я сделал это по следующему правилу:
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
Это сообщает системе, что после выполнения всей маршрутизации (поскольку она находится в цепочке POSTROUTING iptables) и если исходящим интерфейсом является eth1 ("- o eth1"), применить целевой MASQUERADE. Это означает «изменить исходный IP-адрес на IP-адрес интерфейса.
На этом этапе ваша система делает основы. Однако вам необходимо настроить каждую подключенную систему так, чтобы она имела статический 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
Вот несколько ключевых моментов:
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-схему интерфейса, на который он вошел. Таким образом, если запрос DHCP поступает на eth1 с IP-адресом 123.45.67.89, в настройке DHCP нет блока подсети для этого IP-адреса. Таким образом, он не будет отправлять никаких предложений DHCP для этого запроса. Но если он входит в eth0 с IP-адресом 192.168.1.1, у него есть блок подсети, соответствующий этому адресу, и он предлагает DHCP.
Этот может быть самым простым из всех. В моей системе 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). Он разработан специально для использования с маршрутизатором, и его гораздо проще настроить, чем самостоятельно.