При наличии более одного компьютера возникает потребность в организации совместного доступа в интернет. В условиях небольшого офиса или домашней сети подойдут стандартные решения SOHO, но как только количество компьютеров переваливает за 5-10 уже необходимо находить другие решения. Один из вариантов программный роутер с возможностью расширения функций (таких как кэширование, учет трафика, разграничение доступа, резка рекламы и банеров и т.д.). Установка и настройка программного роутера задача не такая уж и сложная, если иметь представление из чего он состоит и как работает. Рассмотрим простейший вариант реализации шлюза.
Для начала определимся с тем, что имеется и чего необходимо, а также некоторым параметрами, которых будем придерживаться:
- операционная система — Debian
- набор железа — подойдет любой старенький компьютер 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 aptitude install dnsmasq
После установки dnsmasq уже настроен (нам пока этого хватит) и работает. Далее сообщим нашей системе о том, что она работает в режиме роутера и должна раздавать в сеть интернет. Для этого необходимо создать файл, в который будем впоследствии писать правила фильтрации трафика на сетевых интерфейсах.
user$ sudo touch /usr/local/bin/set_firewall user$ sudo nano /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 nano /etc/network/if-up.d/firewall
#!/bin/sh /usr/local/bin/set_firewall
user$ sudo chmod +x /etc/network/if-up.d/firewall
Стоит предупредить, что это самый минимум для раздачи интернета в сеть в таком виде это использовать нельзя! Обязательно нужно защитить порты снаружи, об этом поговорим позже.