Настройка gateway для подключения локальной сети к internet
В статье описана настройка Linux для подключения локальной сети к Internet
Сначала определим функции, которые должен выполнять шлюз:
-
Поддержка связи с провайдером
-
Маршрутизация IP-пакетов между локальной сетью и Internet для выхода пользователей
локальной сети в Internet
-
Обеспечение IP-сервиса
-
Защита локальной сети от несанкционированного доступа из Internet
Конфигурирование шлюза состоит из следующих этапов:
-
настройка ядра
-
настройка сети
-
конфигурирование IpChains
-
настройка DNS
-
настройка Squid
Для определенности будем использовать два сетевых интерфейса - eth0, идущий
к провайдеру
(IP 111.111.111.111), и eth1 - во внутренней сети (IP 192.168.1.1)
Скорее всего, вам придется перекомпилировать
ядро. При этом следующие опции должны
быть включены:
Networking support (CONFIG_NET) [y]
TCP/IP networking (CONFIG_INET) [y]
IP forwarding/gatewaying (CONFIG_IP_FORWARD) [y]
IP multicasting (CONFIG_IP_MULTICAST) [y]
IP firewalling (CONFIG_IP_FIREWALL) [y]
IP accounting (CONFIG_IP_ACCT) [y]
Можно также поэкспериментировать с набором опций Advanced Router, если
данные функции есть в вашем ядре (я использую 2.2.17). Более подробно о процессе
компилирования ядра вы можете прочитать в моей статье Конфигурирование
ядра
После перекомпилирования ядра включить IP-forwarding вы можете командой
# echo "1" > /proc/net/ip_forward
Настроить сетевые платы вы сможете с помощью программы netconf. О настройке
сети вы можете прочитать в статье "Настройка
сети" и NET3-HOWTO.
Теперь приступим к настройке IPChains
Создадим цепочку, через которую пойдет весь трафик от провайдера:
ipchains -N prov
ipchains -A input -i eth0 -j prov
Можно запретить ip-spoofing:
ipchains -A prov -s 192.168.1.1/16 -l -j DENY
ipchains -A prov -s 127.0.0.1/8 -l -j DENY
Запретим телнет снаружи:
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
то же с портами 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
Трафик можно считать программами
IpTraf
Bandmin
Для того, чтобы ваши правила были постоянными (при перезагрузке машины
правила IpChains теряются), используйте скрипты ipchains-save и ipchains-restore.
Настройте свои правила, затем выполните команду:
# ipchains-save > /etc/ipchains.rules
Создайте примерно такой скрипт:
#! /bin/sh
# Скрипт управления пакетной фильтрацией.
# Если правил нет, то ничего не делать.
#! /bin/sh
# Скрипт управления пакетной фильтрацией.
# Если правил нет, то ничего не делать.
[ -f /etc/ipchains.rules ] || exit 0
case "$1" in
start)
echo -n "Включение пакетной фильтрации:"
/sbin/ipchains-restore < /etc/ipchains.rules || exit 1
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
Этот скрипт нужно добавить в сценарии загрузки системы.
Настройка DNS (named)
Напомню, что основной задачей сервера доменных имен (Domain Name System)
является преобразование мнемонических имен машин в IP-адреса и обратно.
Обычно сервер DNS устанавливается на шлюзе, который используется для
выхода в Internet.
Прежде чем приступить к настройке сервера, нужно определить запущен
ли он
# ps -ax | grep named
Если он запущен, его нужно остановить (или с помощью команды kill или
ndc), а если он вообще не установлен, то вам придется установить пакет bind. Обратите внимание,
что исполнимый файл называется named, а сам пакет - bind
Для работы сервера должен быть активизирован сервис network.
Теперь приступим к непосредственной настройке сервера
В файле /etc/named.conf содержится основная информация о параметрах
сервера
logging {
category cname {null; };
};
options {
directory "/var/named";
};
zone "." {
type hint;
file "named.ca";
};
zone "dhsilabs.com" {
type master;
file "dhsilabs.com";
notify no;
};
zone "0.0.127.in-addr.arpa" {
type master;
file "named.local";
};
zone "1.168.192.in-addr.arpa" {
type master;
file "192.168.1";
notify yes;
};
Основной каталог сервера - /var/named. В нем сервер будет искать файлы
named.ca, dhsilabs.com, named.local,
192.168.1
Обслуживаемая нашим сервером зона (домен) - dhsilabs.com
Файл named.ca - корневой кэш - содержит информацию о корневых серверах
DNS. Позже мы займемся его обновлением.
Файл dhsilabs.com (для преобразования имен в IP-адреса)
@ IN SOA den.dhsilabs.com. hostmaster.dhsilabs.com. (
93011120 ; серийный номер
10800 ; обновление каждые 3 часа
3600 ; повтор каждый час
3600000 ; хранить информацию 1000 часов
86400 ) ; TTL записи - 24 часа
IN NS den.dhsilabs.com.
IN A 192.168.1.1
IN MX 150 den.dhsilabs.com.
den IN A 192.168.1.1
IN HINFO INTEL CELERON (LINUX)
IN MX 100 den
IN MX 150 evg.dhsilabs.com.
ns IN CNAME den.dhsilabs.com.
www IN CNAME den.dhsilabs.com.
ftp IN CNAME den.dhsilabs.com.
mail IN CNAME den.dhsilabs.com.
evg IN A 192.168.1.2
IN MX 100 den.dhsilabs.com.
localhost IN A 127.0.0.1
Запись NS обозначает name server.
A - IP - адрес
MX - почтовик <приоритет> Чем ниже, тем выше приоритет
HINFO - сведения об аппаратном обеспечении (заполнять не рекомендую)
TXT - прочие сведения
CNAME - каноническое имя, т.е. если вы в окне броузера введете http://www.dhsilabs.com,
то
обращение будет произведено к den.dhsilabs.com
Обратите внимание на точку в конце
@ IN SOA den.dhsilabs.com.
hostmaster.dhsilabs.com. (
Если точка не указана, то к имени будет добавлено имя домена (т.е.
dhsilabs.com)
Файл 192.168.1 или файл обратного соответствия
@ IN SOA den.dhsilabs.com. hostmaster.dhsilabs.com. (
93011120 ; серийный номер
10800 ; обновление каждые 3 часа
3600 ; повтор каждый час
3600000 ; хранить информацию 1000 часов
86400 ) ; TTL записи - 24 часа
@ IN NS den.dhsilabs.com
1 IN PTR den.dhsilabs.com
2.1.168.192 IN PTR evg.dhsilabs.com
Запись PTR используется для преобразования IP-адреса в имя.
Если указан не весь IP
1
IN PTR den.dhsilabs.com
то к нему будет добавлен адрес подсети 1.168.192
IP-адреса указываются в обратном порядке!
Еще о настройке DNS можно прочитать в статье "Настройка
сети", DNS-HOWTO
Настройка Proxy (Squid)
Установите пакет squid
Осталось настроить и запустить его. Для этого нужно отредактировать
файл конфигурации
/etc/squid/squid.conf
Сначала укажем адрес прокси провайдера
cach_peer proxy.your_isp.com
Устанавливаем объем ОЗУ, который будет использовать прокси
cache_mem
Если вы планируете использовать этот компьютер еще и для других целей,
кроме прокси, не устанавливайте здесь более трети физического объема
ОЗУ
Теперь укажем, где будет располагаться кэш. Если у вас несколько жестких
дисков, разместите кэш на самом быстром из них
cache_dir /usr/local/squid 2048 16 256
Первое число - это количество Мб для кэша
Укажем хосты, из которых разрешен доступ к прокси
acl allowed_hosts src 192.168.1.0/255.255.255.0
acl localhost src 127.0.0.1/255.255.255.255
разрешенные SSL порты:
acl SSL_ports port 443 563
запретим метод CONNECT для всех портов, кроме указанных в acl SSL_ports:
http_access deny CONNECT !SSL_ports
и запретим доступ всем, кроме тех, кому можно:
http_access allow localhost
http_access allow allowed_hosts
http_access allow SSL_ports http_access deny all
пропишем пользователей, которым разрешено пользоваться squid (den, admin,
developer):
ident_lookup on
acl allowed_users user den admin developer
http_access allow allowed_users
http_access deny all
Тэги maxium_object_size и maxium_object устанавливают ограничения на
размер передаваемых объектов.
Ниже приведен пример запрета доступа к любому URL, который соответствует шаблону games и разрешения доступа ко всем остальным
acl GaMS url_regex games
http_access deny GaMS
http_access allow all
Из соображений безопасности я рекомендую отредактировать ваши
/etc/services и /etc/inetd.conf и отключить неиспользуемые сервисы
- это уменьшит
возможность взлома вашей системы.
Оригинал на: www.softerra.ru