воскресенье, 16 ноября 2014 г.

как настроить шлюз локальной сети, на базе Ubuntu ,

В этой статье, я расскажу как настроить шлюз для локальной сети на Ubuntu, схема его работы очень простая, но и защиты он не обеспечивает. Существует распространенное заблуждение что NAT ( Network Address Translation -транслятор сетевых адресов) обеспечивает защиту от внешних угроз, но это далеко не так, у него совершенно другое назначение, фактически это дверь, которая открывается в обе стороны, со всеми вытекающими последствиями…
Если есть необходимость в повышении уровня безопасности, а такая необходимость есть всегда, то тут нужно настраивать «фаерволл», я намеренно не привожу никаких правил на этот случай, т.к. они настраиваются исходя из конкретных задач.
В целом, данная статья планировалась как база, для статей на ближайшие пару лет, на ее основе можно развернуть целую кучу серверов, фактический, данный сервер может обрастать функционалом, исходя из ваших задач и потребностей.

Для работы нам понадобится
1) Система с двумя сетевыми картами-которая будет выполнять функцию шлюза.
2) Клиентский ПК, с которого мы будем тестировать работу шлюза.

Схема работы:


Предполагается, что операционная система у вас установлена, на сервере который имеет 2 сетевых интерфейса.

eth0 — подключение к интернет. (может получать IP адрес динамически, может иметь статический, я опишу оба варианта)
eth1 — подключение к локальной сети, будет иметь статический IP 192.168.10.1 и маску 255.255.255.0
Также, для тестирования нам понадобится клиентская машина, которая будет находиться в локальной сети (операционная система значения не имеет).

Первым делом, настраиваем сетевые интерфейсы сервера:
Поднимаем права до root
sudo su

Вводим пароль.
Редактируем настройки сетевых интерфейсов:
nano /etc/network/interfaces


Навастриваем eth0 (по которому осуществляется подключение к интернет)
Вариант №1- Получение IP по DHCP от провайдера:
auto eth0
iface eth0 inet dhcp


Вариант №2-Статический IP
auto eth0
iface eth0 inet static
address XXX.XXX.XXX.XXX
netmask 255.YYY.YYY.YYY
gateway XXX.XXX.XXX.XXX
dns-nameservers ZZZ.ZZZ.ZZZ.ZZZ


Где:
Вместо XXX.XXX.XXX.XXX вписываем IP адрес, который мы получили от провайдера
Вместо 255.YYY.YYY.YYY -выписываем маску подсети.
Ну и вместо ZZZ.ZZZ.ZZZ.ZZZ вписываем IP адрес DNS сервера.
Настраиваем eth1 (по которому подключается локальная сеть)
auto eth1
iface eth1 inet static
address 192.168.10.1
netmask 255.255.255.0


В результате действий у на должен получиться файл interfaces, примерно, следующего содержания:
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
address XXX.XXX.XXX.XXX
netmask 255.YYY.YYY.YYY
gateway XXX.XXX.XXX.XXX

auto eth1
iface eth1 inet static
address 192.168.10.1
netmask 255.255.255.0


Сохраняем изменения, выходим.
Перезапустим сеть:
/etc/init.d/networking restart


Из написанного, думаю понятно, что в локальной сети адрес шлюза и dns сервера, будет 192.168.10.1.

Переходим на к нашему тестовому клиенту, т.к. у нас в сети нет DHCP сервера, то IP адрес мы будем назначать в ручную.
Присваиваем клиенту:
IP 192.168.10.2
маску подсети 255.255.255.0
шлюз 192.168.10.1
DNS 192.168.10.1

пробуем с клиента принговать 192.168.10.1 — запросы должны бегать нормально.

Переходим на наш шлюз.
Установим пакет dnsmasq, он необходим для перенаправления DNS запросов, вышестоящим серверам.
apt-get install dnsmasq


Возвращаемся к клиенту, выполняем на нем
nslookup mail.ru

В ответ подучаем:
Сервер: UnKnown
Address: 192.168.10.1

Имя: mail.ru
Addresses: 94.100.191.201
94.100.191.204
94.100.191.203
94.100.191.202
Отлично, разрешение имен работает, но если мы попробуем открыть страницу mail.ru, то у нас ничего не получится, потому что не настроена маршрутизация пакетов.
Настроим ее:
Первым делом, разрешаем перенаправление пакетов:
nano /etc/sysctl.conf

необходимо найти строку и снять с нее комментарий:
net.ipv4.ip_forward=1

Сохраняем изменения и выходим

Теперь, нам необходимо добавить правила для маршрутизации пакетов:
nano /etc/rc.local

Добавим перед строкой exit 0
iptables -F
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -i eth0 -o eth0 -j REJECT
iptables -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu


Значение можно разобрать самостоятельно (будет в качестве домашнего задания), на форуме ubuntu был отличный FAQ по настройке iptables.
Сохраняем изменения, и перезагружаем сервер
reboot

Дождемся загрузки сервера и перейдя к клиентской системе, пробуем открыть сайт Mail.ru-все должно открываться!

Вот так, настраивается шлюз для локальной сети. Это, одно из самых простых решений.

Комментариев нет:

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