Все о Linux. LinuxRSP.Ru


Cвежие новости Linux и BSD, анонсы статей и книг прямо в почтовый ящик!
Подписаться письмом


 Сегодняшние новости:

25 лет исполнилось ядру Linux

Релиз KDevelop 5.0

Oracle открывает код JDK9 для ARM

Выпущен Timewarrior 1.0.0

Релиз Android 7.0

Percona Memory Engine для MongoDB на базе WiredTiger

PowerShell открыт и доступен для Linux

Форк TrueCrypt: VeraCrypt 1.18

Релиз Snapcraft 2.14

Релиз Go 1.7

Стабильный выпуск рабочего стола Lumina

Вышла первая версия аналога OpenCV - DCV 0.1

Выпуск минималистичной программы для мониторинга jsonmon 3

В MIT разработали новый язык программирования

Первый релиз Qt5Gtk2

Godot 2.1 - новая версия открытого игрового движка

Свободная цифровая станция звукозаписи: Ardour 5.0

Обновление SkypeWeb Plugin for Pidgin

Вышла версия 3.0 Android File Transfer для Linux (и для OS X)

Программный аналог MIDI-контроллера для создания музыки: Launchpadd v1.3

Mozilla спонсирует поддержку Python 3.5 в PyPy

Ef 0.08 - программа для моделирования динамики заряженных частиц

Обновление текстового редактора TEA до версии 42.0.0

Релиз OpenOrienteering Mapper 0.6.4

Вышли Guix и GuixSD 0.11

Релиз Opera 39

Выпуск LibreOffice 5.2

В OpenSSH обнаружены и устранены некоторые уязвимости

Эмулятор FCEUX 2.2.3

Компания Билайн переходит на российскую СУБД с открытым исходным кодом Tarantool

Google

 Новые статьи :

Утилиты для восстановления потерянных данных в Linux

Лучшие файловые менеджеры для Android

20 лучших бесплатных книг о Linux

Как сгенерировать открытый/закрытый SSH-ключ в Linux

Grive - клиент Google Drive для Linux с открытым исходным кодом

Протокол IPv6: варианты подключения

Сервер из образа: DHCP + TFTP + Initrd + OpenVZ

Обзор веб-панелей управления хостингом

Приёмы работы с Vim

Nginx как Reverse Proxy для сайта, использующего SSL

Разработка модулей ядра Linux

Мониторинг нагрузки http-сервера Apache 2

Перевод комментариев к файлу конфигурации Squid

Решение проблем при использовании "1c предприятие" 8.2 в Linux

Advanced Bash-Scripting Guide Искусство программирования на языке сценариев командной оболочки







Rambler's Top100





 
 

Настройка gateway для подключения локальной сети к internet

В статье описана настройка Linux для подключения локальной сети к Internet

Сначала определим функции, которые должен выполнять шлюз:

  1. Поддержка связи с провайдером
  2. Маршрутизация IP-пакетов между локальной сетью и Internet для выхода пользователей локальной сети в Internet
  3. Обеспечение IP-сервиса
  4. Защита локальной сети от несанкционированного доступа из Internet
Конфигурирование шлюза состоит из следующих этапов:
  1. настройка ядра
  2. настройка сети
  3. конфигурирование IpChains
  4. настройка DNS
  5. настройка 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


      

Связь | О проекте LinuxRSP | Реклама | О Linux
© 1999-2017 LinuxRSP