Делаем Сервер-роутер на Debian 7

Я уже писал ранее, о проблемах с роутером, но увы более свежая версия прошивки особо ситуация не изменила. Имеется так-же назовем его, домашний сервер, под управлением Debian 7, всякое разное на нем, от мультимедиа, до этого сайта. Так же в нем имеется 2 сетевых карты, встроенная и внешняя. До этого момента использовал встроенную, подавал собственно на нее интернет с роутера на сервер.

И вот давно меня посещала мысль, пожалуй с самой покупки сервера, пустить интернет через него, даже внешнюю сетевую сразу покупал. Но на момент покупки железа для сервера с Debian 7 да и целом с линуксом был практически не знаком, да и основная цель покупки изучение операционной системы линукс на данный момент оправдана, не такой уж я специалист конечно еще, но значительный прогресс по сравнению с 2013 годом есть. Какие то базовые вещи нужные мне  уже знаю помню, и проще познавать что-то новое.

В общем ладно, получилась такая большая предыстория, а теперь к делу.

Какая была поставлена задача, завести интернет во внешнюю сетевую карту eth1. Затем передать интернет встроенной eth0 и далее с нее на LAN роутера, а дальше в остальные LAN порты необходимые устройства + остается на раздача WI-FI.

Делать вход интернета eth0 или eth1  без разницы, все зависит от организации сети провайдером, я решил обезопасится, поскольку в сезон гроз довольно часто можно спалить сетевую. И в случае чего внешнюю можно заменить, а встроенная еще и материнку может спалить, увы, бывали случаи у знакомых.

В настройках сети /etc/network/interfaces

Сетевой карте eth1 прописываем параметры провайдера:

Далее так-же статический адрес необходимо прописать и нашей встроенной сетевой eth0 которая будет раздавать интернет

Обратите внимание, в eth0 параметр gateway (шлюз) не указывается, поскольку он может быть только один.

Далее на eth0 необходимо настроить DHCP сервер, я выбрал самый популярный isc-dhcp-server, как установить, инструкций море, конфигов тоже, но тем не менее я поделюсь тем что вышло у меня.

Для начала в файле /etc/default/isc-dhcp-server необходимо задать какая сетевая карта будет работать с DHCP-сервером.

Находим  в выше указанном файле строку INTERFACES и в кавычках задаем сетевую карту, в моем случае будет так

В этом же файле можно посмотреть параметр DHCPD_CONF пусть к файлу (dhcp.conf) конфигурации.

Далее в файле /etc/dhcp/dhcpd.conf приступаем непосредственно к настройкам нашего dhcp, как править, решаете сами (править пример который есть, сохранить родное в бекап затем очистить и писать  свое и т.д) я предпочел писать сам ну конечно не без помощи гугла. Вот что получилось:

Тут в целом все логично option domain-name-servers 192.168.0.1 — адрес сервера, который мы указали в настройках сети,  subnet 192.168.0.0 — так сказать задание подсети, писать именно 0.0, либо 1.0, 2.0 и т.д, netmask 255.255.255.0 — маска подсети, так же из настроек сетевой, broadcast-address 192.168.0.255 честно скажу не знаю нужен или нет и работает ли он (Broadcast — передача сигналов, например аудио/видео), но в примерах было, поэтому оставил. Так-же можно жестко привязывать MAC-адрес к IP-адресу, в целом полезно когда часто подключаешься к определенным устройствам, чтоб не менялся IP. Делается это в формате

слово host перед названием обязательно, иначе получаем ошибку и наш dhcp не стартует.

На этом настройка dhcpd.conf закончена.

На данном этапе у нас на сервере уже есть интернет, и встроенная сетевая автоматически раздает IP-адреса подключаемым устройствам, но нету связи внешней сетевой с внутренней (eth1 и eth0) т.е необходимо разрешить интернет с eth1 и на eth0.

Делается это все очень просто:

включим форвардинг командой:

чтобы форвардинг автоматически включался при запуске системы, добавим в файл /etc/sysctl.conf строку

затем включаем NAT

эту команду необходимо добавить в файл /etc/rc.local перед

чтобы не выполнять вручную при каждом включении сервера.

Где eth1 название нашего интерфейса, у которого есть доступ к интернету.

Я не знаю на сколько этот  способ хороший и правильный, но у меня все работает.

На этом настройка была закончена, все сервисы http, ftp, ssh и т.д работаю как и прежде работали через роутер, никаких правок делать не пришлось.

Позже я обнаружил, что не работает VPN-сервер (pptpd), точнее работает, но как-то странно по локальному IP провайдера подключение проходит и все работает (но в этой петле смысла нету, для проверки не более), а вот по внешнему IP и домену глухо, ошибка 619 и все.

Ну сначала о настройках  pptpd

В файл /etc/pptpd.conf дописываем всего 2 строчки

Тут совсем все банально, localip — адрес сервера, remoteip — диапазон раздаваемых адресов, для клиентов подключаемых по vpn.

Так же в  /etc/pptpd.conf смотрим параметр option, путь к файлу (pptpd-options) дополнительных опций.

В файл /etc/ppp/pptpd-options  пишем следующие настройки:

ms-dns — ДНС сервера используемые нашим pptpd, остальное всякие плагины и модули протоколов шифрования, если не вдаваться в подробности.

В файл /etc/ppp/chap-secrets загоняем пользователей, в формате:

Либо с привязкой пользователя жестко к определенному IP:

На этом все, остается выполнить пару команд для iptables:

Так же в /etc/rc.local нужно добавить еще одну строку

перед

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

Но повторюсь, эти настройки работали успешно при подаче интернета в сервер через роутер, когда сервер так сказать сам стал роутером pptpd отказался работать на внешнем IP, не то чтоб я жить не могу без VPN сервера но решил из принципа разобраться.

Нашел как вариант, активировать модуль ip_nat_pptp.

Все просто, как обычно в /etc/rc.local нужно добавить еще одну строку

перед

И наш VPN работает на внешнем IP или домене.