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

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

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

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

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

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

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

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

auto eth1
iface eth1 inet static
address 172.19.1.147
netmask 255.255.252.0
gateway 172.19.0.1

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

auto eth0
iface eth0 inet static
address 192.168.0.1
netmask 255.255.255.0

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

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

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

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

INTERFACES="eth0"

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

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

ddns-update-style none;
option domain-name-servers 192.168.0.1;
authoritative;
option ip-forwarding false; # No IP forwarding
option mask-supplier false; # Don't respond to ICMP Mask req
subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.32 192.168.0.255;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.0.255;
option routers 192.168.0.1;
option ntp-servers 192.168.0.1;
server-name "192.168.0.1";
}

#Можно «жёстко» привязать адрес (к МАК-адресу)
host Notebook {
hardware ethernet 70:F3:95:E7:0A:42;
fixed-address 192.168.0.33;
}

Тут в целом все логично 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 имя_устройства_1{
hardware ethernet  MAC-адрес_1;
fixed-address IP-адрес_1;
}

.................................................................

host имя_устройства_10{
hardware ethernet  MAC-адрес_10;
fixed-address IP-адрес_10;
}

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

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

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

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

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

echo 1 > /proc/sys/net/ipv4/ip_forward

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

net.ipv4.ip_forward = 1

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

iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

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

exit 0

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

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

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

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

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

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

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

localip 192.168.0.1
remoteip 192.168.0.80-99

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

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

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

# Требовать от клиента обязательное аутентификации:
auth

# Укажем файл, в который писать лог:
logfile /var/log/pptpd.log

name pptpd

refuse-pap
refuse-chap
refuse-mschap

require-mschap-v2
require-mppe-128

ms-dns 8.8.8.8
ms-dns 8.8.4.4

proxyarp
lock
nobsdcomp
novj
novjccomp

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

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

# client    server           secret             IP addresses              , например:

user1         pptpd         password1                *

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

user2         pptpd        password2       192.168.0.70

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

# Разрешаем протокол GRE для всех;
iptables -A INPUT -p gre -j ACCEPT

# Разрешаем соединение с PPTP-сервером для всех;
iptables -A INPUT -m tcp -p tcp —dport 1723 -j ACCEPT

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

iptables -t mangle -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

перед

exit 0

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

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

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

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

modprobe ip_nat_pptp

перед

exit 0

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

Записи созданы 119

Похожие записи

Начните вводить, то что вы ищите выше и нажмите кнопку Enter для поиска. Нажмите кнопку ESC для отмены.

Вернуться наверх