Gentoo Linux как роутер

Post Reply
User avatar
Hellfireson
Администратор
Posts: 62
Joined: 14 Oct 2017, 14:03

Gentoo Linux как роутер

Post by Hellfireson »

Когда-то давно в семьях было по одному компьютеру и проблем с распределением интернета по дому обычно не возникало. С увеличением потребности в ПК для граждан, в семьях начали появляться 2 и более персональных компьютеров. Так же в нашу жизнь плотной стеной вошли беспроводные технологии, самой распространённой для домашних и офисных сетей стал стандарт IEEE 802.11, более известный как Wi-Fi. И тогда появилась потребность в домашней сети, как проводной так и без проводной. Сначала народ стал использовать SOHO-роутеры, готовые к работе, но страдающие проблемами с производительностью, гибкостью настройки (по сравнению с полноценным сервером), тепловыделением и т.д. Но сейчас я всё чаще слышу, что IT-энтузиасты и прочие смышлёные люди стали использовать полноценный ПК (сервер) для этих целей.

В рамках этой маленькой статейки я расскажу как настроить простейший роутер для домашней сети.

Начнём с ТЗ:

Есть интернет, раздаваемый по протоколу PPPoE.

Требуется построить проводную сеть для 2 пользователей и раздачу беспроводного интернета, с раздачей IP-адресов по DHCP.

Для этого потребуется:
Старый компьютер (старый конечно в пределах разумного).
3 гигабитные сетевые карты (1 на вход, 2 для пользователей).
1 беспроводной адаптер (Wi-Fi карта).
Установка и настройка iptables, dhcpd, hostapd и bind.

Ну как сетевушки пихать в материнку я думаю рассказывать не требуется, будем думать что всё уже готово.

Для начала надо посмотреть ifconfig -a чтобы убедится что все сетевушки нашлись. Если какой-то из 4 нету, придётся ковырять и пересобирать ядро, опять же это тема для другой статьи, погуглите и всё у вас получится. Проблема номер два это понять как имена связаны с физическими картами, с Wi-Fi адаптером всё просто, гента обычно его называет wlan0, если он один в сервере. А вот сетевые карты получатся eth0, eth1 и eth2 и теперь требуется выяснить какая из них какая физически. Для этого потребуется какое-нибудь сетевое устройства и патчкорд. Соединяем сервер с тем же SOHO-роутером и смотри какая из карт поднялась, набрав ifconfig. Отмечаем это и втыкаем в следующую сетевушку и так далее.

Далее мы втыкаем кабель идущий от провайдера, например в eth0. 2 компа соединяем с сервером качественными патч-кордами, желательно самодельными, из экранированной витой пары, соответственно с eth1 и eth2.

На этом физические действия почти закончились и началась установка и настройка ПО.

Установим необходимое программное обеспечение:

emerge -v dhcpd iptables hostapd bind

Настройка DHCPd:

Открываем /etc/conf.d/dhcpd и меняем там параметр DHCPD_IFACE="wlan0", указываем интерфейс потребителям которого будут выдаваться адреса динамически, в нашем случае это пользователи беспроводной связи.
Далее открываем /etc/dhcp/dhcpd.conf и прописываем туда:

Code: Select all

ddns-update-style ad-hoc;
default-lease-time 3600;
max-lease-time 9000;
authoritative;
log-facility local7;
subnet 192.168.3.0 netmask 255.255.255.0 {
interface wlan0;
range 192.168.3.2 192.168.3.255;
option domain-name-servers 192.168.1.1;
option routers 192.168.1.1;
option broadcast-address 192.168.3.0;
}
Добавляем dchpd в автозагрузку rc-update add dhcpd default и запускаем /etc/ini.d/dhcpd start.

Настройка iptables:

Есть конечно всякие iptables-save и iptables-restore, но советую создать свой скрипт touch /etc/init.d/iprules, потом chmod +x /etc/init.d/iprules и вписываем туда:

Code: Select all

#/bin/bash

# чистим всё
iptables -F INPUT
iptables -F OUTPUT
iptables -F FORWARD
iptables -t nat -F

# включаем нат
iptables -t nat -A POSTROUTING ! -p igmp -s 192.168.1.0/24 ! -d 192.168.1.0/24 -j MASQUERADE
iptables -t nat -A POSTROUTING ! -p igmp -s 192.168.2.0/24 ! -d 192.168.2.0/24 -j MASQUERADE
iptables -t nat -A POSTROUTING ! -p igmp -s 192.168.3.0/24 ! -d 192.168.3.0/24 -j MASQUERADE

# разрешаем порты на сервер
iptables -A INPUT -i eth0 -p tcp --dport 53 -j ACCEPT # 53 порт открывает для named
iptables -A INPUT -i ppp0 -p tcp --dport 53 -j ACCEPT
iptables -A INPUT -i eth0 -p udp --dport 53 -j ACCEPT
iptables -A INPUT -i ppp0 -p udp --dport 53 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT # 80 порт открываем для httpd
iptables -A INPUT -i ppp0 -p tcp --dport 80 -j ACCEPT

# прокидываем порты на компы
iptables -t nat -A PREROUTING -p tcp -i ppp0 --dport 27333 -j DNAT --to-destination 192.168.1.2:27333 # порт для торрента компа №1
iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 27333 -j DNAT --to-destination 192.168.1.2:27333
iptables -t nat -A PREROUTING -p tcp -i ppp0 --dport 27444 -j DNAT --to-destination 192.168.2.2:27444 # порт для торрента компа №2
iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 27444 -j DNAT --to-destination 192.168.2.2:27444
Добавляем этот скрипт в автозагрузку rc-update add iprules default и запускаем /etc/ini.d/iprules start.

Настройка hostapd:

Открываем /etc/conf.d/hostapd и указываем там:

Code: Select all

INTERFACES="wlan0"
CONFIGS="/etc/hostapd/hostapd.conf"
OPTIONS=""

Остальное напишу завтра.........

АКТУАЛИЗИРОВАТЬ!
Post Reply