Linux. Настройка роутера (NAT)

Наиболее частым применением Linux серверов является организация общего доступа в интернет. Это обусловлено низкой стоимостью такого решения и невысокими требованиями к железу. Во многих случаях это бывает первый Linux сервер в организации, что способно вызвать у администраторов определенные сложности. 

Часть №1 ПОДГОТОВКА 

В первую очередь настроим сетевые соединения.

sudo nano /etc/network/interfaces

Эта команда откроет в консольном редакторе nano конфигурационный файл с сетевыми интерфейсами.

Пока там прописан единственный интерфейс etc0, настроенный на работу по DHCP. К eth0 у нас подключен ADSL модем (или любая сеть провайдера), а eth1 смотрит во внутреннюю сеть. IP адрес на внешнем интерфейсе 192.168.1.2, шлюз (ADSL модем) 192.168.1.1, внутренняя сеть лежит в диапазоне 10.0.0.1 — 254. Тогда настройки будут выглядеть следующим образом:

auto eth0 
iface eth0 inet static 
address 192.168.1.2 
netmask 255.255.255.0 
gateway 192.168.1.1 
auto eth1 iface eth1 inet static
address 10.0.0.1 
netmask 255.255.255.0 

Сохраняем изменения Ctrl+O и выходим Ctrl+X. Теперь нужно настроить DNS, для этого выполняем:

sudo nano /etc/resolv.conf

В этом файле необходимо указать адреса DNS сервера, лучше всего указать DNS провайдера или, как в нашем случае, GoogleDNS. (гугл днс)

#DNS Servers nameserver 8.8.8.8

Сохраняем. Теперь нужно перезапустить сетевые службы (либо перезагрузка):

sudo /etc/init.d/networking restart

Собственно сеть настроена, можно переходить к следующему этапу, однако мы рекомендуем установить еще несколько пакетов для удобства администрирования.  Сначала обновим список доступных пакетов:

sudo apt-get update

Также рекомендуем обновить версии пакетов до актуальных:

sudo apt-get upgrade

Часть №2 Настраиваем NAT

Для организации общего доступа к интернет необходимо настроить трансляцию сетевых адресов (NAT), что позволит сетевым службам внутренней сети получать доступ к внешней сети. Для этого достаточно выполнить всего одну команду, но есть одна тонкость: все будет работать только для перезагрузки. На настоящий момент в Linux нет механизма, который бы сохранял настойки iptables при перезагрузке сервера или сети.  Поэтому мы пойдем другим путем и вынесем эти настройки в отдельный скрипт, запускаемый при загрузке системы.  Сначала создадим файл скрипта:

sudo touch /etc/nat

Потом откроем его в редакторе Midnight Commander (F4) и внесем  следующий текст:

#!/bin/sh # Включаем форвардинг пакетов 
echo 1 > /proc/sys/net/ipv4/ip_forward 
# Разрешаем трафик на loopback-интерфейсе 
iptables -A INPUT -i lo -j ACCEPT 
# Разрешаем доступ из внутренней сети наружу 
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT 
# Включаем NAT 
iptables -t nat -A POSTROUTING -o eth0 -s 10.0.0.0/24 -j MASQUERADE 
# Разрешаем ответы из внешней сети 
iptables -A FORWARD -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT 

Сохраняем (F2), для автоматического запуска скрипта снова открываем/etc/network/interfaces и в самый конец файла дописываем:

post-up /etc/nat

Также не забываем дать нашему скрипту права на исполнение:

sudo chmod +x /etc/nat
Перезапускаем сеть:
sudo /etc/init.d/networking restart
Если нигде не допущено ошибок все должно работать. Для проверки укажем на машинах внутренней сети в качестве шлюза и DNS адрес нашего роутера: 10.0.0.1 и пропингуем любой внешний адрес, например один из DNS серверов: 8.8.8.8. Но интернет пока работать не будет. Почему? Да потому, что мы указали в качестве DNS сервера наш роутер, который пока таковым не является. Можно конечно явно прописать DNS на клиентской машине,однако, это не наш метод, если вдруг DNS сервера изменятся, нам что, бегать перепрописывать?
Одно из решений: поднять на нашем роутере полноценный DNS сервер, но в большинстве случаев это избыточно, поэтому мы ограничимся простым кэширующим DNS (а также и DHCP) сервером Dnsmasq.
sudo apt-get install dnsmasq

После установки открываем /etc/dnsmasq.conf, находим, раскомментируем и изменяем следующим образом строку, чтобы разрешить серверу принимать DNS запросы из внутренней сети.:

listen-address=127.0.0.1, 10.0.0.1

Перезапускаем DNS сервер:

sudo /etc/init.d/dnsmasq restart

После чего на клиентских машинах должен заработать интернет. Наш Роутер готов. Все теперь иго можно поставить под кровать и забыт о покупке дорого сисько-роутера :) . А если руки и мозги есть то можно (если машинка позволит) и брут-ssh прикрутить. И так дальше :) .

 

Дерзайте.

Поделиться в соц. сетях новостями с хакзоны :)

Опубликовать в Одноклассники
Опубликовать в Мой Мир
Опубликовать в Яндекс
Опубликовать в Facebook
Опубликовать в Google Buzz
Опубликовать в Google Plus
Опубликовать в LiveJournal


Оставить комментарий

Вы должны Войти, чтобы оставить комментарий.