Простой шлюз на Debian/Ubuntu
При наличии более одного компьютера возникает потребность в организации совместного доступа в интернет. В условиях небольшого офиса или домашней сети подойдут стандартные решения SOHO, но как только количество компьютеров переваливает за 5-10 уже необходимо находить другие решения. Один из вариантов программный роутер с возможностью расширения функций (таких как кэширование, учет трафика, разграничение доступа, резка рекламы и банеров и т.д.). Установка и настройка программного роутера задача не такая уж и сложная, если иметь представление из чего он состоит и как работает. Рассмотрим простейший вариант реализации шлюза.
Для начала определимся с тем, что имеется и чего необходимо, а также некоторым параметрами, которых будем придерживаться:
* операционная система - Ubuntu 10.04 LTS Server x64 (у вас может быть и x32 не принципиально);
* набор железа - подойдет любой старенький компьютер PIII и выше с двумя сетевыми картами;
* данные на имеющуюся сеть (провайдер, поставьте свои данные) eth0:
IP адрес: 192.168.10.5
шлюз: 192.168.10.254
DNS: 192.168.10.1
* данные на внутреннюю локальную сеть (куда будем раздавать интернет) eth1:
IP адрес: 10.0.60.254 (наш новый шлюз)
С параметрами определились, можно начинать устанавливать. Систему ставим минимальную, из задач на сервере нам понадобится только OpenSSH, остальное нет необходимости ставить. Первым делом настроим сетевые интерфейсы, чтоб не сидеть за косолью, а подключиться с рабочей машины и все делать удаленно. Настройки сетевых интерфейсов находятся в файле /etc/network/interfaces, приводим примерно в такой вид, напоминаю, данные необходимо подставить свои.
user$ sudo nano /etc/network/interfaces
# Сетевая петля
auto lo
iface lo inet loopback
# Основной интерфейс от провайдера
auto eth0 eth1
iface eth0 inet static
address 192.168.10.5
netmask 255.255.255.0
network 192.168.10.0
broadcast 192.168.10.255
gateway 192.168.10.254
dns-nameservers 192.168.10.1
dns-search localdomain.lan
# Дополнительный интерфейс локальная сеть
iface eth1 inet static
address 10.0.60.254
netmask 255.255.255.0
Перезапускаем сеть, чтоб сделанные изменения вступили в силу.
user$ sudo /etc/init.d/networking restart
Немного отредактируем некоторые файлы, чтоб потом все заработало без лишних "танцов с бубнами"
user$ sudo nano /etc/resolv.conf
search localdomain.lan
nameserver 192.168.10.1
С этого файла кэширующий сервер DNS будет брать настройки. Осталось совсем немного, настроить NAT и DNS. Это только слышать страшно, а делать просто. Для этого установим волшебный пакет - dnsmasq. Dnsmasq является простым в настройке кеширующим DNS и DHCP(опционально) сервером. Разработан специально для применения в небольших, в том числе и домашних сетях, использующих NAT и соединяющихся с Интернет посредством модема, ADSL и прочих вариантов.
user$ sudo apt-get install dnsmasq
После установки dnsmasq уже настроен (нам пока этого хватит) и работает. Далее сообщим нашей системе о том, что она работает в режиме роутера и должна раздавать в сеть интернет. Для этого необходимо создать файл, в который будем впоследствии писать правила фильтрации трафика на сетевых интерфейсах.
user$ sudo touch /usr/local/bin/set_firewall
user$ sudo gedit /usr/local/bin/set_firewall
#!/bin/sh
#
# Константы
# Интерфейс смотрящий в интернет
INET_IFACE="eth0"
#
# Сброс всех правил
iptables -F INPUT
iptables -F FORWARD
iptables -F OUTPUT
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
#
# Включаем режим прозрачности
iptables -t nat -A POSTROUTING -o $INET_IFACE -j MASQUERADE
#
# Включаем режим пересылки пакетов
echo "1" > /proc/sys/net/ipv4/ip_forward
user$ sudo chmod +x /usr/local/bin/set_firewall
user$ sudo /usr/local/bin/set_firewall
Это самый минимум для раздачи интернета в сеть. Интернет должен быть и на роутере, и в сети. Для того, чтобы режим роутера включался автоматически, необходимо добавить запуск нашего файла после запуска сетевых интерфейсов.
user$ sudo touch /etc/network/if-up.d/firewall
user$ sudo gedit /etc/network/if-up.d/firewall
#!/bin/sh
/usr/local/bin/set_firewall
user$ sudo chmod +x /etc/network/if-up.d/firewall
Стоит предупредить, что это самый минимум для раздачи интернета в сеть в таком виде это использовать нельзя! Обязательно нужно защитить порты снаружи, об этом поговорим позже.
2012 © kulaef
Все права на статьи принадлежат их владельцам. Если вдруг сюда затесался ваш материал - готов поставить ссылку на источник. Все статьи выкладываю исключительно для себя, ну может кому еще пригодятся. Чтобы в интернете не искать все это на разных сайтах.