1. Поддержка связи с провайдером.
2. Маршрутизация IP-пакетов между локальной сетью и сетью Интернет для выхода пользователей локальной сети в Интернет.
3. Обеспечение IP-сервиса.
4. Защита локальной сети от несанкционированного доступа из Интернет.
Конфигурирование шлюза в операционной системе Linux состоит из следующих этапов:
1. Настройка ядра.
2. Настройка сети.
3. Конфигурирование IpChains.
4. Настройка DNS.
5. Настройка Squid.
Для определенности будет использоваться два сетевых интерфейса — eth0, идущий к провайдеру, и eth1 — во внутренней сети. Пусть интерфейсу eth0 назначен IP-адрес 111.111.111.111, a eth1 — 192.168.1.1
Скорее всего, вам придется перекомпилировать ядро. При этом должны быть активизированы следующие опции:
Networking support (CONFIG_NET) [у]
TCP/IP networking (CONFIG_INET) [у]
IP forwarding/gatewaying (CONFIG_IP_FORWARD) [y]
IP multicasting (CONFIG_IP_MULTICAST) [у]
IP firewalling (CONFIG_IP_FIREWALL) [у]
IP accounting (CONFIG_IP_ACCT) [y]
Можно также поэкспериментировать с набором опций Advanced Router, если данные функции есть в вашем ядре. Более подробно о процессе компилирования ядра вы можете прочитать в следующей главе.
После перекомпилирования ядра нужно включить IP-forwarding. Сделайте это при помощи следующей команды:
# echo "1" > /proc/net/ip_forward
Настройку сетевых карт произведите с помощью программы netconf. О том, как это сделать, было рассказано в гл. 8.
Теперь приступим к настройке IPChains. Создайте цепочку, через которую пойдет весь трафик от провайдера:
ipchains –N prov
ipchains –A input –i eth0 –j prov
Запретите ip-spoofing:
ipchains –A prov –s 192.168.1.1/16 –1 –j DENY
ipchains –A prov –s 127.0.0.1/8 –1 –j
DENY Запретите Telnet снаружи:
ipchains –A prov –p tcp –destination-port 23 –j REJECT
Если вы не хотите, чтобы samba «светилась» наружу, запретите порты 137-139:
ipchains –A prov –p tcp –destination-port 137 –j REJECT
ipchains –A prov –p udp –destination-port 137 –j REJECT
To же самое проделайте для портов 138 и 129.
О настройке samba вы можете прочитать в Samba-HOWTO.
Создайте цепочку для подсчета трафика:
ipchains –N trafin
ipchains –I input –i eth0 –s ! 123.123.123.0/24 –p all –j trafin
ipchains –A trafin –d 123.123.123.123
Для того, чтобы ваши правила были постоянными (при перезагрузке машины правила IpChains теряются), используйте скрипты ipchains-save и ipchains-restore. Настройте свои правила, а затем выполните команду:
# ipchains-save > /etc/ipchains.rules
Далее создайте скрипт, подобный тому, что приведен в листинге 17.1.
#!/bin/sh
# Скрипт управления пакетной фильтрацией.
# Если правил нет, то ничего не делать.
[-f /etc/ipchains. rules] || exit 0
case "$1" in
start)
echo –n "Включение пакетной фильтрации:"
/sbin/ipchains-restore
echo 1 > /proc/sys/net/ipv4/ip_forward
echo "." ;;
stop)
echo –n "Отключение пакетной фильтрации:"
echo 0 >/proc/sys/net/ipv4/ip_forward
/sbin/ipchains –X
/sbin/ipchains –F
/sbin/ipchains –P input ACCEPT
/sbin/ipchains –P output ACCEPT
/sbin/ipchains –P forward ACCEPT
echo "." ;;
*)
echo "Использование: /etc/init.d/packetfilter {start|stop}"
exit 1 ;;
esac
exit 0
Этот скрипт добавьте в сценарии загрузки системы.
Напомню, что основной задачей сервера доменных имен (Domain Name System) является преобразование мнемонических имен машин в IP-адреса и обратно. Обычно сервер DNS устанавливается на шлюзе, который используется для выхода в Интернет.
Прежде чем приступить к настройке сервера, нужно определить, запущен ли он:
# ps –ax | grep named