Пошаговая настройка роутера на Debian. Роутер на дебиан


Настройка интернет шлюза на Debian

Ранее я уже рассматривал настройку программных роутеров на операционных системах freebsd и centos. Сегодня я хочу настроить интернет шлюз для локальной сети на основе популярного linux дистрибутива Debian. Выполним подготовку сервера и реализуем основной функционал, необходимый для выхода в интернет из локальной сети.

Введение

Я буду работать со следующим сервером:

# uname -a Linux debian 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt20-1+deb8u3 (2016-01-17) x86_64 GNU/Linux # cat /etc/debian_version 8.3

Если у вас еще нет готового сервера, то рекомендую статью на тему установки debian. Там подробно описан весь процесс от и до.

На сервере имеются 2 сетевых интерфейса:

Описание сетевых интерфейсов
Интерфейс Описание IP
eth0 внешний интерфейс, подключен к провайдеру, настройки получает по dhcp автоматически 192.168.1.24
eth2 внутренний интерфейс, смотрит в локальную сеть, статический ip адрес 10.0.15.1

Файл конфигурации сетевых интерфейсов выглядит следующим образом:

# cat /etc/network/interfaces source /etc/network/interfaces.d/* auto lo iface lo inet loopback allow-hotplug eth0 iface eth0 inet dhcp allow-hotplug eth2 iface eth2 inet static address 10.0.15.1 netmask 255.255.255.0

Как настроить сеть в debian я подробно рассказал отдельно. Если вы еще не сделали это и не выполнили предварительную настройку debian, то рекомендую ознакомиться с материалами.

Если у вас недостаточно опыта и вы не чувствуете в себе сил разобраться с настройкой шлюза самому с помощью консоли сервера — попробуйте дистрибутив на основе centos для организации шлюза и прокси сервера в локальной сети — clearos. С его помощью можно через браузер настроить весь необходимый функционал. В отдельной статье я подробно рассказал об установке clearos.

Подготовка шлюза

Выше я привел ссылку на подробную статью с описанием настройки сервера общего назначения. Сейчас мы выполним некоторые подготовительные действия без подробностей и описания. Их вы можете почитать отдельно. Сейчас просто необходимые команды.

Сеть на будущем программном роутере настроили, доступ в интернет на сервере есть. Обновим его:

# apt-get update # apt-get upgrade

Установим MC, мне в нем удобнее всего работать, в том числе в редакторе mcedit:

# apt-get -y install mc

Настроим часовой пояс, если раньше не сделали это:

# dpkg-reconfigure tzdata

Устанавливаем сервис ntp для автоматического обновления времени:

# apt-get -y install ntp

На этом основные подготовительные действия закончены. Приступаем к настройке шлюза.

Настройка маршрутизации, firewall и nat

Первым делом включим маршрутизацию пакетов между сетевыми интерфейсами. Для этого редактируем конфиг /etc/sysctl.conf:

# mcedit /etc/sysctl.conf net.ipv4.ip_forward=1

Либо раскомментируйте эту строку, либо добавьте, если ее нет. Но она по-умолчанию быть должна, закомментированная со значением 1. Применяем эту настройку:

# sysctl -p

На выходе работы команды в консоли будет выведен измененный параметр со значением 1.

Теперь приступаем к самому главному — настройке фаервола iptables и nat в нем для обеспечения выхода в интернет из локальной сети. Я очень подробно рассмотрел эту тему в отдельной статье. Хотя там речь идет о другом дистрибутиве, сами правила iptables абсолютно одинаковые с точностью до строчки, за исключением маленького нюанса, связанного с тем, что правила нужно сохранять в другой файл для применения их после перезагрузки.

Я приведу здесь сразу готовый вариант файла с правилами iptables, необходимых для работы интернет шлюза в debian. В файле даны подробные комментарии ко всем значениям, так что вы без проблем разберетесь и закомментируете или наоборот раскомментируете необходимые вам значения. Качаем скрипт правил iptables — iptables-debian.sh

Копируем содержимое файла и создаем скрипт с правилами на сервере:

# mcedit /etc/iptables.sh

Вставляем в редактор правила. Редактируем их под свои нужды, обязательно заменяя переменные WAN и LAN на свои. Сохраняем файл.

Прежде чем двигаться дальше предупреждаю, что все работы по настройке фаервола должны производиться только если у вас есть доступ к консоли сервера, чтобы в случае ошибки и потери удаленного доступа вы смогли откатить изменения. Даже если вы абсолютно уверены в своих знаниях, вас может подвести банальная ошибка или опечатка. Я сам, к сожалению, сталкивался с такими ситуациями, поэтому считаю необходимым предупредить об этом вас.

Делаем файл с правилами исполняемым:

# chmod 0740 /etc/iptables.sh

Прежде чем применить новые правила, посмотрим на текущие:

# iptables -L -v -n

Видим, что на настраиваемом роутере firewall полностью открыт. Теперь применим новые правила и посмотрим на результат:

# /etc/iptables.sh

Все в порядке, правила применились, доступ к серверу я не потерял. Теперь сделаем так, чтобы новые правила применялись после перезагрузки. В последней строчке скрипта есть команда:

/sbin/iptables-save  > /etc/iptables.rules

С ее помощью готовый набор правил iptables выгружаются в файл. Нам нужно сделать так, чтобы эти правила применялись при включении сетевого интерфейса во время загрузки сервера. Для этого открываем файл interfaces на редактирование и добавляем в самый конец строчку:

# mcedit /etc/network/interfaces post-up iptables-restore < /etc/iptables.rules

Для проверки перезагружаем шлюз и проверяем, все ли в порядке. По сути основная настройка программного роутера на debian завершена. Осталось сделать небольшое дополнение и настроить dhcp и dns сервер в локальной сети. Я для этих целей использую простой и легкий в настройке dnsmasq.

Установка и настройка dnsmasq в Debian

Выполним установку dnsmasq на дебиан:

# apt-get install -y dnsmasq

Сделаем минимальную настройку программы. Нам нужно просто выдавать сетевые настройки пользователям. Для этого приводим конфигурационный файл dnsmasq к следующему виду:

# mcedit /etc/dnsmasq.conf domain-needed bogus-priv interface=eth2 dhcp-range=eth2,10.0.15.50,10.0.15.150,24h

В данном случае мы будем выдавать пользователям ip адреса в диапазоне от 10.0.15.50 до 150. Сохраняем конфиг, добавляем программу в автозагрузку и запускаем.

# insserv dnsmasq # /etc/init.d/dnsmasq start

Теперь можно запускать компьютер пользователя локальной сети, получать сетевые настройки по dhcp и проверять работу интернет шлюза.

Посмотреть выданные leases можно в файле /var/lib/misc/dnsmasq.leases. На этом настройка интернет шлюза на debian 8 закончена. Все что нужно для обеспечения доступа в интернет из локальной сети сделано. Получился программный роутер с широкими возможностями по наращиванию функционала.

Просмотр загрузки сети с помощью iftop

Теперь представим ситуацию, что кто-то забил весь интернет канал и вам надо быстро выяснить, кто это сделал. По-умолчанию, никаких подручных и удобных средств на шлюзе для этого нету. Установим одно из таких средств — программу iftop. Это простая консольная утилита, которая дает возможность оперативно посмотреть статистику загруженности сетевого интерфейса в реальном времени.

Устанавливаем iftop на debian:

# apt-get install -y iftop

Для просмотра активности сетевого интерфейса, запускаем утилиту, указывая необходимый ключ:

# iftop -i eth2

Чтобы увидеть порты, по которым идет трафик, добавляем ключ -P:

# iftop -i eth2 -P

На основе этой картинки уже можно сделать определенные выводы по использованию интернет канала. Обращаю внимание, что я смотрю загрузку локального интерфейса eth2. Если смотреть на eth0, то мы увидим только исходящие соединения сервера.

Заключение

Вот так легко и быстро можно настроить роутер, маршрутизатор или шлюз в интернет. Названия разные, а суть одна. В данном случае я использовал операционную систему Debian, но схожий функционал легко организовать на Freebsd или CentOS. Для решения текущей задачи разница в работе не будет заметна. Каждый выбирает то, что больше нравится и к чему привык.

Пройдемся быстренько по этапам того, что сделали:

  1. Подготовили сервер Debian к настройке шлюза.
  2. Настроили маршрутизацию, iptables, нат. Проверили, что весь функционал восстанавливается после перезагрузки.
  3. Установили и настроили простой dhcp сервер и кэширующий dns сервер — dnsmasq. С его помощью автоматизировали поучение сетевых настроек пользователями.
  4. Установили простое средство мониторинга сетевой активности в консоли в режиме реального времени с помощью утилиты iftop.

На этом мы закончили настройку. Как продолжение развития темы интернет шлюза можно заняться настройкой прокси сервера для управления доступам к ресурсам интернета, или сервера openvpn для подключения филиалов или удаленных сотрудников. Для примера привел ссылки на другие дистрибутивы. Со временем планирую описать реализацию этого функционала на debian. Принципиальных отличий нет, только нюансы разных дистрибутивов.

Помогла статья? Есть возможность отблагодарить автора

Дополнительные материалы по Debian

Настройки системы Настройка программных комплексов Разное
Рекомендую полезные материалы по Debian:
  • Установка
  • Базовая настройка
  • Настройка сети
  • Обновление 8 до 9
  • Обновление 7 до 8
  • Включение логов cron
Подробная установка Debian 9 Stratch с помощью графического инсталлятора со скриншотами и пояснениями к каждому пункту установщика. Базовая настройка сервера Debian. Приведены практические советы по улучшению безопасности и удобства администрирования. Подробное описание настройки сети в Debian - задать ip адрес, dhcp, отключить ipv6, dns, hostname, статические маршруты и др.
 
  • Proxmox
  • Шлюз в интернет
  • Установка Asterisk
  • Asterisk+Freepbx
  • PostgreSQL для 1С
  • Настройка pptp
Подробное описание установки гипервизора proxmox на raid1 mdadm на базе операционной системы Debian 8. Приведены практические советы по настройке. Чистая установка Asterisk 13 на сервер под управлением Debian 8. Никаких дополнений и GUI, только vanilla asterisk. Рассказ об установке и небольшой настройке сервера бд postgresql для работы с базами 1С. Задача не сложная, но есть небольшие нюансы как по настройке, так и по выбору дистрибутива. Описание установки и настройки pptp сервера в Debian с передачей статических маршрутов клиенту для организации доступа к ресурсам сети.
  • Бэкап с помощью rsync
  • Тюнинг postgresl для 1C

serveradmin.ru

MarsBoard. Debian. Роутер. HOWTO / Хабрахабр

Доброго времени суток, сообщество! Я уже писал по поводу замечательной платы на чипе Allwinner A10 — MarsBoard. Тот пост был чем-то вроде «Getting Started», этот же будет посвящён целиком и полностью превращению этого чуда враждебной техники в полноценную точку доступа WiFi и роутер по совместительству. Для создания точки мне поможет сборка Debian Server (кстати, ядро мы тоже будем собирать:)) и USB-адаптер TP-Link TL7200ND. Тип соединения с провайдером — PPPoE. Заинтересовались? Добро пожаловать под кат.
Вместо предисловия
Если честно, как только мне пришла в голову такая идея, я даже и не думал, что придётся встретиться с таким количеством подводных камней. Ну на то он наверное и Linux… К слову, все манипуляции в статье будут производиться с помощью компьютера под управлением ОС Ubuntu и кардридера для SD-карточки. И сразу советую выполнить sudo su в том сеансе терминала, из под которого будем производить все действия.
Система
Для своих опытов я таки решил отказаться от того приносящего тапочки в постель бульдозера, который предлагает нам офсайт. Удалось найти готовую сборку Debian Server, но пришлось пошаманить с ядром. Но об этом позже. По сути, установка сводится к записи образа на 2(или больше)GB SDCard и установке bootloader'a (с офсайта платы).

Итак, поехали. Подключаем SDCard к компьютеру и командой fdisk -l узнаём имя устройства карточки. У меня /dev/sdc. Далее устройство карточки в статье буду обозначать как sdX. Вместо X подставляете свою букву. Качаем всё необходимое. Систему (рассмотрю действия со сборкой 2013-Sep-20 10:32:33), uboot.bin, sunxi-spl.bin. Далее:

  1. Переходим в папку со скачанными файлами
  2. Пишем систему на карту: bzip2 -dc a10-debian-server-2gb.2013-09-20.img.bz2 > /dev/sdX
  3. Пишем bootloader: dd if=spl/sunxi-spl.bin of=/dev/sdX bs=1024 seek=8 dd if=u-boot.bin of=/dev/sdX bs=1024 seek=32
Систему поставили, отлично, идём дальше.
Начало танцев — драйвера
Собственно, с этого и началась вся эпопея запинок о те самые подводные камни. Оказалось, что драйверов для чипов Ralink, на коем работает на адаптер, существует 2 типа — «старые» и «новые». Старые драйвера ставятся автоматом через apt-get и работают «из коробки», но работают только в Managed-режиме, т.е. адаптер может только подключаться к уже существующей точке, но не может сам эту точку создать. Для создания точки требуется перевести адаптер в режим Master, а для этого нужны те самые «новые» драйвера. Только вот эти новые крутые дровишки надо… собирать. Ну что, собирать так собирать.

Идём сюда: www.ralinktech.com/support.php?s=2 и скачиваем RT2870_Firmware_V22. Распаковываем и пишем в /lib/firmware в файловую систему на SDcard. Далее качаем compat-wireless: www.orbit-lab.org/kernel/compat-wireless-2.6. Это собственно то, что нам нужно скомпилировать.

Но не всё так просто. Так как я ещё только разбираюсь с Linux, я очень удивился, когда обнаружил, что для компиляции драйверов мне понадобятся исходники моего текущего ядра. И ещё более удивился, когда не нашёл их в системе. Благо автор сборки любезно предоставил конфигурацию ядра, там используемого. Её мы и возьмём, чтобы собрать исходники. Итак, немного отвлечёмся от драйверов и посозерцаем пересборку ядра.

Ядро
Как я уже сказал, для сборки дров нам нужны исходники ядра, а для сборки специфичных исходников нам нужны… универсальные исходники linux-sunxi. Также нам нужно будет немного поправить конфигурацию, чтобы вынести встроенные в ядро версии драйверов в модули. Так мы их сможем заменить на compat-wireless.

Первым делом, ставим на компьютер всё необходимое:

apt-get install git build-essential fakeroot kernel-package u-boot-tools zlib1g-dev libncurses5-dev И добавляем этот репозиторий в файл /etc/apt/sources.list:deb http://www.emdebian.org/debian/ unstable main Далее обновляем apt и ставим кросс-компилятор:apt-get update apt-get install emdebian-archive-keyring apt-get install gcc-4.7-arm-linux-gnueabihf ln -sf `which arm-linux-gnueabihf-gcc-4.7 ` /usr/local/bin/arm-linux-gnueabihf-gcc Далее нам необходимо скачать с гитхаба исходный код ядра. Клонируем репозиторий себе, переходим в папку с исходниками и переключаемся на версию 3.4:git clone https://github.com/linux-sunxi/linux-sunxi linux-sunxi cd linux-sunxi git checkout sunxi-3.4 Дальше качаем базовый файл конфигурации ядра, переименовываем в .config и кладём в корневую папку исходников. Теперь немного конфигурации. Нам нужно выставить всё, что связано с «80211» в режим модуля. Для этого выполняем:ARCH=arm make menuconfig Этой командой собирается псевдографическая утилита конфигурации ядра. Выбираем в ней Networking, потом Wireless. Выбираем следующие строки одна за одной и нажимаем клавишу M на клавиатуре:cfg80211 - wireless configuration API Common routines for IEEE802.11 drivers Generic IEEE 802.11 Networking Stack (mac80211) В итоге должна быть примерно такая картина: Далее жмём Exit и ещё раз Exit. Попадаем в главное меню, проматываем вниз и жмём Save an Alternate Configuration File. Подтверждаем и выходим из утилиты. Всё, ядро мы настроили, теперь можно собирать. Выполняем следующие команды:export ARCH=arm export DEB_HOST_ARCH=armhf export CONCURRENCY_LEVEL=`grep -m1 cpu\ cores /proc/cpuinfo | cut -d : -f 2` fakeroot make-kpkg --arch arm --cross-compile arm-linux-gnueabihf- --initrd --append-to-version=-mykernel kernel_image kernel_headers make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- EXTRAVERSION=-mykernel uImage cp arch/arm/boot/uImage ../uImage В итоге после компиляции в каталоге уровнем выше будут лежать 3 файла: пакет с ядром, пакет с исходниками и uImage. Флешку с образом ещё не отключили? Идём туда, заливаем все 3 файла куда-нибудь в корень root. Далее вставляем флешку в плату, с помощью SSH ставим пакеты ядра и исходников. Отключаем, втыкаем обратно в комп. Далее идём в раздел с ядром (там лежат файлы script.bin, uImage и т.д.) и копируем туда с заменой новый uImage из корня второго раздела. Загружаемся с новым ядром и опять же в SSH-терминале прописываем команды:ln -s /usr/src/linux-headers-$(uname -r) /lib/modules/$(uname -r)/source ln -s /usr/src/linux-headers-$(uname -r) /lib/modules/$(uname -r)/build Всё, теперь система готова к компиляции драйверов.
Продолжаем собирать драйвера
Переходим в папку к распакованному compat-wireless (помните скачивали?). Выполняем:./scripts/driver-select rt2x00 make make install Далее нужно записать в блэклист «старые» драйвера. Дописываем в файл /etc/modprobe.d/blacklist.conf следующие строки:blacklist rt2870sta blacklist rt5370sta Перегружаемся.
Настройка самого роутера
Итак, пришло время установить всё, что нужно для раздачи интернета и организации локальной сети. В качестве DHCP-сервера я выбрал dnsmasq, точкой доступа будет управлять hostapd, а соединение с провайдером будет обеспечено утилитой pppoeconf. Я не буду здесь рассматривать настройку firewall с помощью Iptables, так как информации по этому делу достаточно много в интернете, а покажу лишь базовый проброс. Он нам жизненно необходим. Итак, погнали. Соединяемся опять же по SSH и ставим всё, что нужно:apt-get install hostapd dnsmasq pppoeconf
1. Настраиваем hostapd
hostapd — утилита для создания и управление программной точкой доступа WiFi. Имеет 2 места, из которых можно её настроить. Первое — /etc/default/hostapd. Настройка автозапуска. Заменяем всю писанину там на следующие строчки:RUN_DAEMON = yes DAEMON_CONF="/etc/hostapd/hostapd.conf" Второе место — /etc/hostapd/hostapd.conf. Основные настройки. Настроить тут можно достаточно много параметров, но я лишь приведу свою конфигурацию и объясню, что и зачем я туда вписал:# интерфейс, на котором висит адаптер: interface=wlan0 # имя драйвера адаптера: driver=nl80211 # имя точки доступа: ssid=MyAP # код страны, влияет на список доступных мощностей и частот: country_code=RU # стандарт передачи: hw_mode=g # канал, на котором будет висеть точка: channel=8 # это всё нужно для корректной настройки защиты: macaddr_acl=0 auth_algs=1 wpa=2 wpa_key_mgmt=WPA-PSK wpa_pairwise=TKIP rsn_pairwise=CCMP # пароль к точке: wpa_passphrase=superpass
2. Настройка dnsmasq
dnsmasq — DHCP-DNS-TFTP-сервер с интуитивно понятным файлом конфигурации и рядом печенек. У него тоже есть файл конфигурации в /etc/default/, но мы его трогать не будем, ибо ничего интересного там нет. Займёмся основным конфигом — /etc/dnsmasq.conf. Как и с hostapd, я покажу и расскажу про свой вариант конфигурации:# интерфейс, который НАДО слушать: interface=wlan0 # интерфейс, который НИ В КОЕМ СЛУЧАЕ НЕ НАДО слушать (это наше окно в сеть, о нём чуть позже): except-interface=ppp0 # улучшалки производительности: bind-interfaces cache-size=1000 domain-needed bogus-priv # конкретно эта улучшалка делает наш сервер главным в локальной сети: dhcp-authoritative # макс. кол-во доступных для аренды адресов: dhcp-lease-max=100 # диапазон раздачи адресов (c, по, время аренды): dhcp-range=192.168.1.5,192.168.1.100,12h

3. Настройка интерфейсов Следующим шагом будет настройка интерфейсов, так как их конфигурация нужна для правильной настройки PPPoE-соединения. Как известно, интерфейсы настраиваются в файле /etc/network/interfaces. Приводим его к такому виду:

# локальная петля, не интересует: auto lo iface lo inet loopback # эзернет, оставляем автоконфигурацию: auto eth0 iface eth0 inet dhcp # интерфейс адаптера: auto wlan0 iface wlan0 inet static # адрес самого роутера в локалке: address 192.168.1.1 # маска подсети: netmask 255.255.255.0 # широковещательный адрес: broadcast 192.168.1.255
4. Настройка PPPoE
Утилита pppoeconf предоставляет псевдографический интерфейс для полуавтоматического конфигурирования соединения с провайдером. Делается это путём набора одноимённой команды в терминале:pppoeconf Далее там всё интуитивно понятно, после успешной конфигурации в файл настройки сетевых интерфейсов добавится примерно такая запись:auto ppp0 iface ppp0 inet ppp pre-up /sbin/ifconfig eth0 up provider dsl-provider
5. Базовый проброс
Последним шагом будет настройка проброса пакетов из локальной сети во внешнюю и обратно (маскарадинг) Выполняем следующее для установки этого самого MASQUERADE и автозагрузки конфигурации в iptables при запуске системы:iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE iptables -A FORWARD -o eth0 -j ACCEPT iptables -A FORWARD -o ppp0 -j ACCEPT iptables-save > /etc/wifi-iptables.conf echo '#!/bin/sh' > /etc/network/if-up.d/iptables echo 'iptables-restore < /etc/wifi-iptables.conf' >> /etc/network/if-up.d/iptables chmod +x /etc/network/if-up.d/iptables Перезагружаемся…
Вместо заключения
Фуууххх, ну вот вроде и всё. Устали? Зато теперь у нас есть рабочий роутер на базе довольно шустрой платы, да ещё и с таким хорошим адаптером. По моим тестам, пинг в онлайн-играх не превышает 15-25ms, а за 2 недели аптайма вся система заглючила один раз, что вылечилось передёргиванием питания. Кстати, о питании. Выяснилось, что для стабильной работы устройства вместе с адаптером требуется блок питания, расчитанный на мощность как минимум в 1000mA. Обратите внимание, импульсные зарядники от нокий не подходят! Не ведитесь на совпадение штекеров!

Напоследок, хочу выразить благодарность:

  • Интернет-магазину DONT.RU за обеспечение необходимым железом
  • Человеку с ником RM и его замечательному ресурсу
P.S.: буду очень признателен за конструктивную критику, но подчеркну, что пеной здесь плеваться совершенно не обязательно. Если вы знаете, как сократить кол-во шагов или сделать что-то лучше, поделитесь, я буду обновлять статью.

habrahabr.ru

Роутер на Debian (2WAN) - Debian и коты

http://www.lartc.org/howto/lartc.rpdb.multiple-links.htmlНазначение сетевых интерфейсовИмеем сетевые интерфейсы в количестве 3шт.При установке интерфейсы отображаются как eth0, eth2 и eth3 (ip addr). Основным интерфейсом, очевидно, является eth0, каким образом ОС сопоставит физическим интерфейсам логические имена предсказать мы не можем. Поэтому на этапе установки по сети методом научного тыка выясняем, какой сетевой карте ОС назначила имя eth0. После установки, к примеру, мы захотели сделать, чтобы eth0 - была верхней сетевой картой.Итак, система установлена, переназначим eth0 для самой верхней сетевой карты. Данная карта будет смотреть на LAN(делаем это из соображений получения практического опыта и из чувства прекрасного: сверху  линк встроенной сетевухи, 2 внешних сетевухи - внизу)

Открываем файл с сетевыми интерфейсами /etc/network/interfaces

iface lo inet loopback

# The primary network interface

allow-hotplug eth0

iface eth0 inet dhcp

опишем 2 сетевых интерфейса в этом файле:

allow-hotplug eth2

iface eth2 inet dhcp

allow-hotplug eth3

iface eth3 inet dhcp

Выключаем наш сетевой интерфейс eth0: #ifdown eth0

Втыкаем сетевой кабель в верхнюю сетевую карту, пытаемся включить линк при помощи команды ifup

#ifup eth2 - fail#ifup eth3 - ура, линк включился

Таким образом, мы выяснили, что нам нужно eth3 "поменять местами" с eth0Открываем файлик/etc/udev/rules.d/70-persistent-net.rules

# This file was automatically generated by the /lib/udev/write_net_rules

# program, run by the persistent-net-generator.rules rules file.

#

# You can modify it, as long as you keep each rule on a single

# line, and change only the value of the NAME= key.

# PCI device 0x10ec:0x8139 (8139too)

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:80:48:4d:b5:8e", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth2"

# PCI device 0x10ec:0x8139 (8139too)

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:15:f2:e6:ce:eb", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

# PCI device 0x10ec:0x8139 (8139too)

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:80:48:27:29:4d", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth3"

редактируем соответствующие ключи NAME

После редактирования перезагружаем систему #reboot

После перезагрузки проверяем, что все наши сетевые интерфейсы имеют соответствующие имена в соответствии с нашим замыслом. #ip addr - смотрим, какие интерфейсы имеют статус UP, 

при помощи команд #ifdown ethXXX и #ifup ethXXX последовательно включаем и выключаем сетевые карты таким образом, чтобы включенным оставался лишь один проверяемый интерфейс, соединяя сетевой кабель с проверяемым интерфейсом.

Зададим статические адреса для 3х наших сетевых карт:

#WAN1auto eth2

iface eth2 inet static

        address 192.168.0.101

        netmask 255.255.255.0

        broadcast 192.168.0.255

        network 192.168.0.0

        gateway 192.168.0.1

#WAN2

auto eth3

iface eth3 inet static

        address 192.168.0.102

        netmask 255.255.255.0

        broadcast 192.168.0.255

        network 192.168.0.0

#LAN

auto eth0

iface eth0 inet static

        address 192.168.77.1

        netmask 255.255.255.0

        broadcast 192.168.77.255

        network 192.168.77.0

        

Для интерфейсов eth2 и eth3 broadcast и network можно не задавать.

Перезагрузим машину и убедимся, что все 3 интерфейса пингуются при подключенном eth2.

Пересылка пакетов между интерфейсами

Важно!!

Включаем форвардинг IP-пакетов, чтобы разрешить пересылку пакетов между интерфейсами:

в файле /etc/sysctl.conf  нужно раскомментировать(вписать, если ее почему-то нет) строчку:  

net.ipv4.ip_forward=1

далее выполняем команду:/etc/init.d/networking restart

sites.google.com

Debian. Настройка роутера (NAT + DHCP + Squid)

Наиболее частым применением Linux серверов является организация общего доступа в интернет. Это обусловлено низкой стоимостью такого решения и невысокими требованиями к железу. Во многих случаях это бывает первый Linux сервер в организации, что способно вызвать у администраторов определенные сложности. В данной статье мы пошагово рассмотрим настройку роутера (NAT + DHCP + Squid) на базе Debian Wheezy 7.0

Установка и первоначальная настройка

Установка Debian Wheezy 7.0 происходит в текстовом режиме на русском языке и, как правило, не  вызывает сложностей. Отдельно стоит только остановится на списке ролей: из предложенного нас, пожалуй, может заинтересовать только OpenSSH, для удаленного доступа, однако воспользовавшись пунктом Manual package selection опытный пользователь может сразу установить необходимые ему пакеты.

Если же это ваш первый сервер, то лучше всего продолжить не выбирая никакого варианта, все необходимые пакеты мы доустановим позже. Это позволит иметь более четкое представлении о назначении того или иного пакета и позволит успешно справляться с возможными неполадками. По окончании установки система перезагрузится и встретит нас черным экраном командной строки. Непривычного к консоли Windows-администратора это может неприятно удивить, однако ситуация на сегодняшний день такова, что все серверные роли Linux настраиваются исключительно через консоль и файлы конфигурации.

В первую очередь настроим сетевые соединения. Вводим в консоли:

nano /etc/network/interfaces

Эта команда откроет в консольном редакторе nano конфигурационный файл с сетевыми интерфейсами, аналогичный рисунку ниже. 

Пока там прописан единственный интерфейс eth0, настроенный на работу по DHCP. К eth0 у нас подключен ADSL модем (или любая сеть провайдера), а eth2 смотрит во внутреннюю сеть. IP адрес на внешнем интерфейсе 192.168.1.2, шлюз (ADSL модем) 192.168.1.1, внутренняя сеть лежит в диапазоне 192.168.3.1 - 254. Тогда настройки будут выглядеть следующим образом:

auto eth0 iface eth0 inet static address 192.168.1.2 netmask 255.255.255.0 gateway 192.168.1.1 auto eth2 iface eth2 inet static address 192.168.3.1 netmask 255.255.255.0

Сохраняем изменения Ctrl+O и выходим Ctrl+X. Теперь нужно настроить DNS, для этого выполняем: 

nano /etc/resolv.conf

В этом файле необходимо указать адреса DNS серверов, лучше всего указать DNS провайдера или, как в нашем случае, Google DNS.

#Google DNS nameserver 8.8.8.8 nameserver 8.8.4.4

Сохраняем. Теперь нужно перезапустить сетевые службы (либо перезагрузиться):

/etc/init.d/networking restart

Собственно сеть настроена, можно переходить к следующему этапу, однако мы рекомендуем установить еще несколько пакетов для удобства администрирования.  Сначала обновим список доступных пакетов:

aptitude update

Также рекомендуем обновить версии пакетов до актуальных:

aptitude upgrade

Теперь установим Midnight Commander (mc), файловый менеджер по образу и подобию Norton Commander или Far:

aptitude install mc

Для запуска Midnight Commander достаточно набрать в консоли его краткое имя: mc. Сразу рекомендуем включить встроенный редактор, более удобный чем nano: F9 - Настройки - Конфигурация - Встроенный редактор. 

Для удаленного управления сервером (не бегать же к нему каждый раз) установим OpenSSH, что позволит подключаться к нему из любого места, даже из дома, по защищенному протоколу:

aptitude install ssh

Для подключения с Windows станций можно использовать программу PuTTY (скачать), для корректного отображения символов перед подключением необходимо на закладке Window - Translation выбрать кодировку UTF8. 

Для ограничения доступа к серверу можно дописать в файл /etc/ssh/sshd_config параметр AllowUsers с указанием пользователя имеющего доступ по SSH, например для пользователя admin:

AllowUsers admin

Также можно разрешить доступ определенной группе пользователей используя параметр AllowGroups, либо запретить доступ определенным пользователям / группам использовав DenyUsers и DenyGroups.

Настраиваем NAT

Для организации общего доступа к интернет необходимо настроить трансляцию сетевых адресов (NAT), что позволит сетевым службам внутренней сети получать доступ к внешней сети. Для этого достаточно выполнить всего одну команду, но есть одна тонкость: все будет работать только для перезагрузки. На настоящий момент в Linux нет механизма, который бы сохранял настойки iptables при перезагрузке сервера или сети.  Поэтому мы пойдем другим путем и вынесем эти настройки в отдельный скрипт, запускаемый при загрузке системы.  Сначала создадим файл скрипта:

touch /etc/nat

Потом откроем его в редакторе Midnight Commander (F4) и внесем  следующий текст:

#!/bin/sh # Включаем форвардинг пакетов echo 1 > /proc/sys/net/ipv4/ip_forward # Разрешаем трафик на loopback-интерфейсе iptables -A INPUT -i lo -j ACCEPT # Разрешаем доступ из внутренней сети наружу iptables -A FORWARD -i eth2 -o eth0 -j ACCEPT # Включаем NAT iptables -t nat -A POSTROUTING -o eth0 -s 192.168.3.0/24 -j MASQUERADE # Разрешаем ответы из внешней сети iptables -A FORWARD -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT # Запрещаем доступ снаружи во внутреннюю сеть iptables -A FORWARD -i eth0 -o eth2 -j REJECT

Сохраняем (F2), для автоматического запуска скрипта снова открываем /etc/network/interfaces и в самый конец файла дописываем:

post-up /etc/nat

Также не забываем дать нашему скрипту права на исполнение:

chmod +x /etc/nat

Перезапускаем сеть:

/etc/init.d/networking restart

Если нигде не допущено ошибок все должно работать. Для проверки укажем на машинах внутренней сети в качестве шлюза и DNS адрес нашего роутера: 192.168.3.1 и пропингуем любой внешний адрес, например один из Google DNS серверов: 8.8.8.8. Но интернет пока работать не будет. Почему? Да потому, что мы указали в качестве DNS сервера наш роутер, который пока таковым не является. Можно конечно явно прописать DNS на клиентской машине,однако, это не наш метод, если вдруг DNS сервера изменятся, нам что, бегать перепрописывать?

Одно из решений: поднять на нашем роутере полноценный DNS сервер, но в большинстве случаев это избыточно, поэтому мы ограничимся простым кэширующим DNS (а также и DHCP) сервером Dnsmasq.

aptitude install dnsmasq

После установки открываем /etc/dnsmasq.conf, находим, раскомментируем и изменяем следующим образом строку, чтобы разрешить серверу принимать DNS запросы из внутренней сети.:

listen-address=127.0.0.1, 192.168.3.1

Перезапускаем DNS сервер:

/etc/init.d/dnsmasq restart

После чего на клиентских машинах должен заработать интернет.

Настраиваем DHCP

Теперь, когда наш сервер работает, нужно настроить клиентские машины. Можно, конечно, прописать все параметры вручную, но как быть если клиентских машин много и расположены они по всему зданию?  Здесь нам на выручку приходит протокол DHCP, который позволяет клиентским машинам получать сетевые настройки автоматически. В качестве DHCP сервера выступит уже установленный Dnsmasq. Настроить его не просто, а очень просто, для чего снова открываем /etc/dnsmasq.conf.

Все что нам надо, это задать диапазон выдаваемых адресов (в нашем случае 192.168.3.10-150), сетевую маску и время, на которое выдается IP адрес:

dhcp-range=192.168.3.10,192.168.3.150,255.255.255.0,72h

Адреса DNS сервера и шлюза сервер берет автоматически из системных настроек. Еще раз перезапускаем Dnsmasq:

/etc/init.d/dnsmasq restart

Теперь можно выставить на клиенте автоматическое получение IP адреса и убедиться, что все работает нормально. 

Просмотреть выданные адреса можно командой:

cat /var/log/syslog | grep DHCPOFFER

В выдаче будут перечислены выданные IP адреса и MAC адреса которым они выданы. 

Настраиваем кэширующий прокси-сервер Squid

В любой большой сети определенная часть трафика повторяется от пользователя к пользователю и порой его доля доходит до 50%. Логично бы было кэшировать наиболее повторяющиеся запросы и тем самым снизить нагрузку на канал, сэкономить входящий трафик и ускорить выдачу страниц конечному пользователю. Для этих задач мы используем Squid -  кэширующий прокси с широчайшими возможностями.

aptitude install squid

Останавливаем прокси-сервер и приступаем к настройке:

/etc/init.d/squid stop

Открываем /etc/squid/squid.conf, находим и корректируем следующие строки, не забыв их раскомменитровать:

Указываем порт и адрес на котором squid будет принимать соединения:

http_port 192.168.3.1:3128 transparent

Настраиваем кэш:

cache_dir ufs /var/spool/squid 4096 32 256

Указываем внутренние сети, лишние комментируем:

acl localnet src 192.168.3.0/24 # RFC1918 possible internal network #acl localnet src 172.16.0.0/12 # RFC1918 possible internal network #acl localnet src 192.168.0.0/16 # RFC1918 possible internal network

Разрешаем доступ из внутренних сетей (найти и раскомменитровать):

http_access allow localnet

Устанавливаем лимит использования памяти:

memory_pools on memory_pools_limit 50 MB

Задаем язык вывода ошибок для пользователя

error_directory /usr/share/squid/errors/Russian-koi8-r

Сохраняем файл конфигурации. Теперь строим кэш и запускаем:

/usr/sbin/squid -z /etc/init.d/squid start

Для проверки указываем в браузере на клиентской машине использование прокси-сервера с адресом 192.168.3.1 и портом 3128, убеждаемся что все работает. Остается настроить прозрачную работу прокси-сервера, чтобы http трафик заворачивался на Squid  автоматически, без прописывания прокси на клиенте. Для этого открываем  /etc/nat и дописываем в конец строку:

# Заворачиваем http на прокси iptables -t nat -A PREROUTING -i eth2 ! -d 192.168.3.0/24 -p tcp -m multiport \ --dport 80,8080 -j DNAT --to 192.168.3.1:3128

Перезапускаем сеть:

/etc/init.d/networking restart

Все. В нашем распоряжении рабочий сервер, позволяющий организовать общий доступ к интернет, кешируюший http трафик и DNS запросы, а также умеющий раздавать клиентским машинам необходимые для работы в сети настройки.

По материалам компании "Интерфейс": http://interface31.ru/tech_it/2009/11/linux-nastrojka-routera-nat-dhcp-squid.html

www.alexsey-smirnov.ru

Настройка Linux роутера на базе дистрибутива Debian GNU/Linux 4.0 r3

Published on Март 30, 2009 by Support   ·   Комментариев нет

Задача.

1.Доступ в интернет(квотирование трафика) для офиса (~до 300 человек возможно больше, зависит от железа) 2.ВПН канал для обеспечения доступа к ресурсам локальной сети с удаленного компьютера, подключенного к сети интернет 3.APlusServer — сервер для обмена информацией 1С бухгалтерии с удалеными КПК, подключенными к интернет, установленным на комьютере под управлением MS WINDOWS. 1. Доступ в интернет Для выполнения задач было выбрано: iptables,прокси сервер SQUID,SAMS(SQUID Account Management System, http://sams.perm.ru) v1.0.1. Все кроме SAMS входит в дистрибутив, причем для установки потребуются пакеты со всех 3-х DVD дистрибутива.(в 4.0 r3) Далее настройка, все с нуля: Настоятельно рекомендую перед установкой хорошенько разобраться с Линукс, а так же погонять на виртуальных машинах будущую конфигурацию. Скорее всего на реальном железе глюков из-за незнания мат.части будет очень много. Копипаст сводит к нулю возможности администрирования системы в нештатных ситуациях. УСТАНОВКА СИСТЕМЫ: Celeron 2.4, 256 MB, IDE 20GB HDD, 2 сетевых интерфейса (один для инета — ADSL, другой смотрит в локалку) Разбиение диска: Можно выбрать один из вариантов, который предлагает система, т.е. создать разделы для «всех» каталогов(без LVM, далее самый последний вариант), Потом немного поправить размеры разделов, а именно: т.к. у нас роутер с билингом, то нам потребуются большие разделы для логов(/var) и для устанавливаемого ПО(/usr), для раздела /home не нужно много места, т.к. не будет пользователей, использующих роутер как свалку для своих файлов, все остальное оставляем как рекомендует программа установки. Например, изменяем на

 /usr 8 Gb /home 1 Gb /Var 10 Gb

При установке системы очень удобно, если в первую очередь будет сконфигурирован интерфейс, подключенный к интернету(IP адрес, ДНС сервера провайдера и шлюз), т.к. сразу же будут установлены и настроены обновления безопастности системы. asics gel lyte 3 vente Сетевые интерфейсы называются ethX, где X — номер интерфейса, у нас 2 карточки, значит будет два интерфрйса eth0 и eth2. — устанавливаем только базовую систему, все звездочки вырубаем. — никакого интернет сервера, баз данных и тем более рабочего стола, — нужна девственно не грязная система После инсталляции установим пакет mc (Midnight Commander), можно конечно использовать ТОЛЬКО командную строку, но это не только не удобно, это также не эффективно, т.к. повышает время настройки сервера, особенно для тех, кто никогда не видел линукс, но «жызнь» заставила. Сначала добавляем все 3 DVD дистрибутива «в базу» системы установки apt, для того чтобы «она» знала, какое ПО доступно, и где оно находится. Добавление DVD дистрибутива в базу(набираем в командной строке, ессно нужно войти в систему под суперпользователем т.е. root):

После вставляем наш DVD в DVD-дисковод и нажимаем ввод. Повторяем для всех 3-х DVD. Установка пакета mc:

Далее для удобства копипаста готовых конфигурационных файлов, файрвола, и для будущего удаленного администрирования устанавливаем пакет ssh. Toronto Raptors

Пакет ssh сводит к минимуму необходимость работать за консолью сервера и позволяет удаленно логиниться на роутер. Для того чтобы подконектиться к нашему серверу из MS Windows необходима программа putty. В putty: пишем адрес сервера(небходимо сконфигурировать 2й сетевой интерфейс, который смотрит в локалку, об этом ниже), а так же меняем кодировку(Window-Trancelation) на UTF-8, иначе/если наш миднайт командир будет очень «красивым». Nike Air Max 2018 femme Конфигурируем 2-ю сетевую карточку, для этого нужно отредактровать следующий конфиг: /etc/network/interfaces, примерно так:

 # This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). # The loopback network interface auto lo iface lo inet loopback # The primary network interface allow-hotplug eth2 iface eth2 inet static address IP адресс провайдера netmask 255.255.255.X network Х.Х.Х.0 broadcast Х.Х.Х.255 gateway Х.Х.Х.Х dns-nameservers Х.Х.Х.X Х.Х.Х.Х auto eth2 iface eth0 inet static address 192.168.Х.Х netmask 255.255.255.0 auto eth0

После необходимо перезапустить «сеть», чтобы ОС установила новые IP адреса. Для упрощения будущей жизни конфигурирование сетевых интерфейсов лучше проводить ДО установки ПО, чтобы потом не искать в конфигах, например, апача, где же он берет старый IP адрес:

 /etc/init.d/networking restart

Вводим команду ifconfig и проверяем установленную конфигурацию сетевых интерфейсов. И команду route -N, в маршрутах должен быть адрес шлюза провайдера, который указан в файле /etc/network/interfaces. Адреса ДНС серверов находятся в файле /etc/resolf.conf:

 nameserver X.X.X.X nameserver X.X.X.X

Теперь необходимо проверить, как работает «сеть», пробуем пингануть локалку и шлюз провайдера… Сначала пишем скрипт, чтобы «запустить» НАТ. С помощью, например, MC назовем скрип goinet и установим права на запуск (должна появиться звездочка перед именем файла), запускаем:

 #!/bin/sh INET="eth2" INETIP="X.X.X.X" 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 -j SNAT --to-source $INETIP echo "1" > /proc/sys/net/ipv4/ip_forward

Файрвол с комментариями будет ниже — просто даем интернет. После запуска этого скрипта на одной из рабочих станций под управлением MS Windows(вся офисная сеть построена на базе домена Windows 2003 Server и рабочих станций на базе ОС MS Windows XP SP2) устанавливаем адрес шлюза = адресу нашего Линукс роутера в локальной сети, так же адреса ДНС серверов провайдера и пробуем пингануть шлюз провайдера и зайти в интернет. Von Miller Broncos Jersey Если все работает, значит можно приступать к установке системы «раздачи» интернета. Настройку файрвола нужно проводить после установки и конфигурирования системы учета трафика и ВПН, т.к. помимо глюков с инетом и ВПН возникнут глюки с файрволом и разобраться, какой глюк где, будет очень сложно. В случае дублирования IP адреса в локальной сети нашего интернет сервера с одной из рабочих станций, будут очень жесткие и непредсказуемые ошибки во всей сети. Интернет будет то работать, то нет, пинг то проходит, то нет. Если при пинговании одного из IP адресов локальной сети с роутера возникают потери пакетов, то одна из возможных ошибок — это дублирование IP адреса. Установка и настройка SQUID+SAMS. NIKE ROSHE ONE Сначала необходимо установить все пакеты, необходимые для работы этой связки. Пишем скрипт, например go-SAMS-DEB:

 #!/bin/sh aptitude install apache2 apache2-mpm-prefork aptitude install libapache2-mod-php5 php5-cgi php5-common php5-mysql aptitude install mysql-server mysql-client libmysqlclient15off aptitude install squid aptitude install libpcre3 apt-get install php5-gd apt-get install libpcre3-dev apt-get install libmysqlclient15-dev apt-get install gcc apt-get install make

Собираем и устанавливаем SAMS из исходников, работает корректней, чем из deb пакетов, которые были доступны на момент написания этой статьи. Для более подробной информации читаем документацию для SAMS. Будем использовать класическую авторизацию на прокси сервере SQUID, то есть NCSA авторизацию. Изменяем один из конфигов апача /etc/httpd.conf, сейчас он пустой, пишем в конфиг следующее:

 AddType application/x-httpd-php .php .phtml Options ExecCGI

Если у вас возникли проблемы с кодировкой веб интерфейса, надо в конфиге апача(/etc/apache2/apache2.conf) задать параметр

В конфиге SAMSa /etc/sams.conf в поле MYSQLPASSWORD= указываем пароль, он и будет использоваться при создании базы в Web интрефейсе. Так же проверяем путь SAMSPATH=/usr/local, в каталоге /usr/local/bin должны находиться бинарники SAMSa. В конфиг SQUIDa /etc/squid/squid.conf в поле тега TAG: auth_param (после комментариев) добаляем параметры ncsa авторизации(не в конец файла!):

 auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/ncsa.sams auth_param basic children 5 auth_param basic realm Squid proxy-caching web server auth_param basic credentialsttl 2 hours

На всякий случай нада проверить наличие файла /usr/lib/squid/ncsa_auth Конфигурирование файла /etc/php5/apache2/php.ini: раскомментируйте вызов библиотеки поддержки mysql:

C версии 1.0 SAMS работает в safe_mode php Настриваем php для работы в режиме safe mode включаем режим safe mode. Для этого выставляем параметр safe_mode:

SAMS для некоторых функций WEB интерфейса использует системные команды, например wbinfo. В режиме safe_mode php блокирует доступ к системным командам. Php позволяет выполнять системные команды, расположенные в каталоге, заданном параметром safe_mode_exec_dir. Изменяем этот параметр:

 safe_mode_exec_dir = "/usr/local/share/sams/bin"

Далее разрешаем исполнение системных скриптов из кода php. Ищем в файле конфигурации параметр

 disable_functions = "chdir,dl,ini_get_all,phpinfo,system,shell_exec,popen,proc_open,exec,passthru,pcntl_exec"

и если он не пустой, убираем из него запрет вызова функций phpinfo system shell_exec exec Также убираем запрет вызова функций phpinfo system shell_exec exec в параметре

 hphp.executor.func.blacklist = chdir,dl,ini_get_all,popen,proc_open,passthru,pcntl_exec

Копируем скрипт samsd.debian (находится в исходных текстах /sams-1.0.1/etc/) в /etc/init.d/ переименовываем его в samsd и выполняем команду добавления запуска демона при автозагрузке ОС:

 update-rc.d samsd defaults

Меняем владельца каталога /usr/local/share/sams на наш интернет сервер apache2 (Можно использовать миднайт командер):

 chown -R www-data:www-data /usr/local/share/sams

Так же меняем владельца конфигурационного файла /etc/sams.conf:

 chown www-data:www-data /etc/sams.conf

Изменяем права на /usr/local/share/sams и на все, что в нем есть:

 chmod 700 -R /usr/local/share/sams

Устанавливаем полный доступ на файлы в каталоге /usr/local/share/sams/data:

 chmod 777 /usr/local/share/sams/data -R

Создаем символическую ссылку из корневой директории сервера APACHE2 на директорию, в которой находятся файлы SAMS:

 ln -s /usr/local/share/sams /var/www

Переименовываем файл(если нужно) /usr/local/share/sams/lang/lang.en в lang.EN, также, если нужно переименовываем каталоги /usr/local/share/sams/doc/en и ru в EN и RU. Перезагружаем веб сервер и прокси сервер:

 /etc/init.d/apache2 restart /etc/init.d/squid restart

Права на каталоги SAMSa(/usr/local/share/sams, и на линк /var/www/sams), в случае если SAMS не захочет работать, можно выставить позже, сначала поставить 777 на все, а уже при шлифовке конфигурации выставить как положено. Веб интерфейс SAMS готов к работе. adidas zx flux femme В браузере заходим на /X.X.X.X/sams, где Х.Х.Х.Х IP адрес нашего роутера в локальной сети. Жмем кнопку создать базы. asics lyte 3 bianco uomo Вводим пароль для юзера sams, который указан в конфиге /etc/sams.conf. Создаем базы. Запускаем Web интерфейс SAMS. Для добавления пользователей логинимся под юзером admin пароль по умолчанию qwerty. Для юзера auditor, пароль по умолчанию audit. Необходимо выставить авторизацию NCSA в администрировании SAMS и в шаблонах, а так же выставить чтение логов SQUID через равные промежутки времени. При непрерывном способе падает лог SQUIDa access.log. В случае, если это произошло необходимо удалить этот файл и создать новый с правами как у старого, предварительно изменив непрерывный способ чтения логов на дискретный, например раз в 1 минуту. Позже можно установить параметры чтения логов раз в 10 минут например, и и проверять наличие команды на реконфигурирование squid каждые 5 секунд, вообщем как можно реже, без ущерба для контроля за трафиком. Это необходимо, чтобы оптимально использовать ресурсы интеренет сервера. если в файле /var/log/squid/caсhe.log:

 2004/11/01 10:34:19| Rebuilding storage in /usr/local/squid/cache (DIRTY) 2004/11/01 10:34:20| Store rebuilding is 2.8% complete 2004/11/01 10:34:21| WARNING: newer swaplog entry for dirno 0, fileno 00002098 2004/11/01 10:34:34| WARNING: Disk space over limit: 1251072 KB > 1048576 KB

Места еще навалом, df показывает что свободно еще больше 50% возможно запортился файл swap.state из-за сбоев системы или пропадания электроэнергии, попробуй сделать так: 1 — останови сквид 2 — убей файл swap.state (обычно в каталоге /usr/local/squid/cache ) 3 — запусти сквид, он пересоздаст swap.state, правда это займет некоторое время. А размер кэша для диска в конфиге сквида случаем не менял ? если менял, возможно придется пересоздать дисковый кэш. при сохранении и загрузке конфигурации SAMSa через вэб интерфейс падают пароли пользователей, т.е. прописываются в файл ncsa.sams в незашифрованном виде После добавления пользователя при его будущем редактировании(когда пароль уже был введен, нужно, например, изменить ФИО пользователя) возможны глюки с паролем. Если при сохранении параметров поле пароля осталось пустым, то возможно пароль для этого юзера будет падать и станет невозможным залогиниться на прокси сервер. Лечиться так: Проблема в файле src/userbuttom_1_prob.php Когда редактировал юзера, на форме в поле пароль было пусто. Не знаю почему, видимо так и должно быть — типа если пароль меняешь, то введешь новый, а если не меняешь то и нечего его вообще показывать, но вот в описанном файле было сравнение старого пароля с тем что передан в форме, но проверки на его «пустоту» не было. Вставил проверку, если пароль пустой то и не менять его.

 if($auth=="ncsa"||$auth=="ip") { if(isset($_GET["passwd"])) $passwd=$_GET["passwd"]; else $passwd=""; $passwd=trim($passwd); ........ if ($passwd!="") { if($password!=$defpassw) $passwd=$password; } else { $passwd=$defpassw; }

Вместо:

 if($auth=="ncsa"||$auth=="ip") { if(isset($_GET["passwd"])) $passwd=$_GET["passwd"]; ........ if($password!=$defpassw) $passwd=$password;

PS ncsa.sams менялся всегда, когда редактировал пользователя, даже если пароль не трогал. Установка и настройка VPN. Для VPN будем использовать PoPToP. Он есть в дистрибутиве Debian. Устанавливаем командой:

Далее «идем в конфиг» /etc/pptpd.conf и правим в нем например так:

 #IP адрес, который будет дан роутеру "на" VPN соединении localip 192.168.1.1 #диапазон IP адресов, который будет дан клиенту remoteip 192.168.1.234-238

Перезагружаем сервис(демона) pptpd, чтобы изменения вступили в силу:

 /etc/init.d/pptpd restart

Добавляем пользователя нашего VPN сервера в файле /etc/ppp/chap-secrets ( pptpd ):

Пробуем подключиться через создание ВПН соединения к роутеру из MS Windows. В каталоге /etc/ppp/ip-up.d создаем файл, например, go_vpn_log с правами 755, и пишем в него следуюшие:

 #!/bin/sh echo "------------------------------------------------" >> /var/log/vpn.log date >> /var/log/vpn.log echo "from IP $6 with speed $3">> /var/log/vpn.log echo "------------------------------------------------" >> /var/log/vpn.log

Теперь при подключении VPN-клиента информация о подключении будет записываться в наш лог файл /var/log/vpn.log Файрвол iptables. Deion Sanders Jerseys Теперь наша задача разрешить доступ к интернету из локальной сети только так, как нужно, и запретить все из вне, кроме того, что нам нужно, используя iptables. И так первое правило: все, что окружает наш роутер — это зло. Для обеспечения безопастности не будем делать разницы между компьютерами в локальной сети и компьютерами во внешней сети(интернет), и в файрволе явно пропишем правила для каждого обращения через/на наш интернет сервер. Немнога теории: когда пакет попадает на наш роутер, сначала он попадает в таблицу mangle цепочка PREROUTING, далее он идет в таблицу nat-PREROUTING, далее, в зависимости от того куда направлен пакет, он идет либо:

 1.mangle-INPUT..filter-INPUT..local_routing..mangle-OUTPUT..nat-OUTPUT..filter-OUTPUT..выход

либо:

 2.mangle-FORWARD..filter-FORWARD..выход

потом на выход: mangle-POSTROUTING..nat-POSTROUTING. Вывод можно сделать такой: нас интересуют только 2 цепочки таблицы filter: это INPUT — то есть все то, что ломится непосредственно на наш сервер и цепочка FORWARD, то есть все то, что идет через роутер как в локальную сеть так и из нее. Политика такая, все вообщем изначально бан, и далее: INPUT: Запрещаем все, что непосредственно долбится на наш cервер, кроме: VPN из вне и SSH+SQUID из локалки, то есть: можно подключиться к нашему серверу(зная пароль) ТОЛЬКО по VPN из интернета(порт 1723), все остальное запрещено (нет фильтрации по IP адресу, тк заранее не известен диапозон IP адресов, с которых будет подключение, т.е. например, ноутбук из любой точки России). И на прокси сервер(порт 3128) + SSH(порт 22), опять же зная пароли доступа, из локальной сети. Разрешаем выходить любым пакетам из нашего роутера(OUTPUT), т.к. в этом случае инициатором подключения является наш сервер(SQUID, обновления безопастности, например). Так же разрешаем уже установленные входящие подключения, инициированные интернет сервером. FOWRWARD: Пользователям локальной сети(помимо SQUID) разрешаем DNS запросы(почта, чтоб не «мусорить» циферками серверов в настройках TheBat). Аська убрана, и будет подключаться через SQUID(HTTPS), в файрволе просто закомментирована. А так же разрешаем установленные соединения из локальной сети, которые были разрешены. Для коннекта аськи через SQUID необходимо просто в ее настройках указать, что подключение будет HTTPS, указать адрес и порт 3128 нашего прокси сервера и задать логин и пароль доступа на прокси сервер. И так еще раз обрисуем более подробно, чтоже нам нужно обеспечить: 1. Доступ в интернет пользователям локальной сети через прокси сервер SQUID. 2. Доступ на БЕСПЛАТНЫЕ и «БУХГАЛТЕРСКИЕ»(эл. отчетность) почтовые сервера, минуя прокси сервер, напрямую (если упадет SQUID, то по крайней мере основная артерия документооборота организации будет работать). 3. Доступ из вне по VPN, а так же! используя VPN подключение, доступ на сервер терминалов организации (например, удаленное администрирование 1С бухгалтерии) 4. Доступ к APlusServer(порт 5555), который установлен на сервере терминалов, для обмена данными 1С с КПК сотрудников организации, подключенными(КПК :) ) к интеренет. Для написания файрвола принципиально важно понимать как идет пакет, который мы хотим обработать. Без знания теории максимум, что может получиться — это хороший копипаст. Оставляю чтение документации и изучения синтаксиса iptables на совести администратора, хотя в подробном разборе файрвола будет все описано достаточно точно. И так, файрвол(/etc/fw):

 #!/bin/sh #Закоментированно, все что касается аськи, кто хочет может пустить ее напрямую из локалки, #но не рекомендую, накачают трафика юзеры. #Описываем переменные. Так файрвол будет более компактный, читаемый #и масштабируемый: SERVER1C="192.168.х.х" INET="eth2" NET="eth0" NET_NET="192.168.х.х/24" INETIP="х.х.х.х" LANIP="192.168.х.х" ELCOM_SMTP="х.х.х.х" ELCOM_POP="х.х.х.х" IRIDAN="х.х.х.х" UNPRIVPORTS="1024:65535" DNS_SERVER1="х.х.х.х" DNS_SERVER2="х.х.х.х" #ICQ_SERVER1="64.12.0.0/16" #ICQ_SERVER2="205.188.0.0/16" SYSADMIN="192.168.х.х" #Сбрасываем все правила. #Таблицы nat и mangle засоряются #при отладке файрвола, когда его нужно запускать #несколько раз для тестирования, например сервера APlusServer #и в случае, если это не учесть, будут сильные глюки #при обмене КПК с сервером. iptables -F INPUT iptables -F FORWARD iptables -F OUTPUT iptables -t nat -F PREROUTING iptables -t nat -F POSTROUTING iptables -t mangle -F #Политика по умолчанию, запретить все нах iptables -P FORWARD DROP iptables -P INPUT DROP iptables -P OUTPUT DROP #Прямо дропаем пакеты NEW, но без флага --syn(запрос на установку соединения) iptables -A INPUT -p TCP ! --syn -m state --state NEW -j DROP #Явный бан всех запросов на соединение из инета, #кроме тех, которые нужны, а нам нужен только VPN(порт 1723) iptables -A INPUT -d $INETIP -p TCP --syn --dport ! 1723 -j DROP #ДАем VPN для PoPToPа #разрешаем порт 1723 и протокол 47(используется при авторизации) iptables -A INPUT -p TCP -d $INETIP --dport 1723 -j ACCEPT iptables -A INPUT -p 47 -j ACCEPT #Даем сервер терминалов для VPN подключений порт 3389 iptables -A FORWARD -p TCP -s $NET_NET -d $SERVER1C --dport 3389 \ -j ACCEPT #Порт форвардинг, перенапрявляем запросы на наш APlusServer, #который установлен на сервере терминалов. #После разрешаем в цепочке FORWARD ходить туда клиентам iptables -t nat -A PREROUTING -d $INETIP -p TCP --dport 5555 \ -j DNAT --to-destination $SERVER1C:5555 iptables -A FORWARD -p TCP -d $SERVER1C --dport 5555 -j ACCEPT #Открываем TCP порты каторые слушать только из локалки #SQUID+SSH iptables -A INPUT -s $NET_NET -p TCP -d $LANIP -m multiport \ --dport 22,3128 -j ACCEPT #Даем инет юзерам, ессно через SQUID #То есть разрешаем уже установленные входящие подключения #на незарезервированные порты(смотрим матчасть, как устанавливается *соединение, например, при запросе клиента на www.ya.ru) iptables -A INPUT -d $INETIP -p TCP --dport $UNPRIVPORTS \ -m state --state ESTABLISHED,RELATED -j ACCEPT #Разрешить DNS для сквида и для локалки(почта, аська). #Чтобы злой умышленник не смог подменить свой IP адрес и закосить #под наш ДНС сервер, разрешаем ТОЛЬКО ответы на нашы ДНС запросы #В протокле UDP, если пакет не первый, то он получает статус ESTABLISHED #Так же обрабатываем протокол TCP. Очень редко, когда это может понадобиться, #т.к. в основном он используется при обмене данными ДНС серверов, но все же... iptables -A INPUT -p UDP -s $DNS_SERVER1 -m state --state ESTABLISHED \ --sport 53 -j ACCEPT iptables -A INPUT -p TCP -s $DNS_SERVER1 --sport 53 --dport $UNPRIVPORTS \ -m state --state ESTABLISHED -j ACCEPT iptables -A INPUT -p UDP -s $DNS_SERVER2 -m state --state ESTABLISHED \ --sport 53 -j ACCEPT iptables -A INPUT -p TCP -s $DNS_SERVER2 --sport 53 --dport $UNPRIVPORTS \ -m state --state ESTABLISHED -j ACCEPT iptables -A FORWARD -p UDP -s $NET_NET -d $DNS_SERVER1 --dport 53 -j ACCEPT iptables -A FORWARD -p UDP -s $DNS_SERVER1 -d $NET_NET --sport 53 \ -m state --state ESTABLISHED -j ACCEPT iptables -A FORWARD -p TCP -s $NET_NET -d $DNS_SERVER1 --dport 53 -j ACCEPT iptables -A FORWARD -p UDP -s $NET_NET -d $DNS_SERVER2 --dport 53 -j ACCEPT iptables -A FORWARD -p UDP -s $DNS_SERVER2 -d $NET_NET --sport 53 \ -m state --state ESTABLISHED -j ACCEPT iptables -A FORWARD -p TCP -s $NET_NET -d $DNS_SERVER2 --dport 53 -j ACCEPT #Почта только провайдерная и электронная отчетность, #остальная бан, ибо нех iptables -A FORWARD -s $NET_NET -d $ELCOM_POP -p TCP --dport 110 -j ACCEPT iptables -A FORWARD -s $NET_NET -d $ELCOM_SMTP -p TCP --dport 25 -j ACCEPT iptables -A FORWARD -s $NET_NET -d $IRIDAN -p TCP --dport 110 -j ACCEPT iptables -A FORWARD -s $NET_NET -d $IRIDAN -p TCP --dport 25 -j ACCEPT #ICQ, разрешаем авторизацию аське, кому нада раскомментируйте #iptables -A FORWARD -p TCP -s $NET_NET -d $ICQ_SERVER1 --dport 5190 -j ACCEPT #iptables -A FORWARD -p TCP -s $ICQ_SERVER1 -d $NET_NET --sport 5190 \ #-m state --state ESTABLISHED -j ACCEPT #Разрешаем ICQ отправлять сообщения и все что с этим связано #нет нормальной спецификации на ICQ, все со снифера #iptables -A FORWARD -p TCP -s $NET_NET -d $ICQ_SERVER2 --dport 5190 -j ACCEPT #iptables -A FORWARD -p TCP -s $ICQ_SERVER2 -d $NET_NET --sport 5190 \ #-m state --state ESTABLISHED -j ACCEPT #Разрешаем уже установленные соединения, выше было разрешено #только обращаться во вне из локальной сети, но надо же чтобы и ответы #на запросы доходили, то есть даем в локалку #кпк сервер, днс, почту и терминал, все остальное либо через сквид #либо никаГ iptables -A FORWARD -p TCP -m state --state ESTABLISHED,RELATED \ -m multiport --sport 5555,53,110,25,3389 -j ACCEPT #Внутри дИмакратия, то есть разрешаем нашему серверу устанавливать соединения, #а так же чтоб "внутри все ходило" iptables -A INPUT -p ALL -s 127.0.0.1 -i lo -j ACCEPT iptables -A INPUT -p ALL -s $LANIP -i lo -j ACCEPT iptables -A INPUT -p ALL -s $INETIP -i lo -j ACCEPT iptables -A OUTPUT -p ALL -d 127.0.0.1 -o lo -j ACCEPT iptables -A OUTPUT -p ALL -s $INETIP -j ACCEPT iptables -A OUTPUT -p ALL -s $LANIP -j ACCEPT iptables -A OUTPUT -p ALL -s 127.0.0.1 -j ACCEPT #Дырочка для сисадмина :) #ну это святое, малоли взгрустнется, и нада будет развеять скуку, #поубивав зомби и в очередной раз спасти все человечество от злой гнили #накрайняк скачать новый фильмец с трекера, и под пиво его посмотреть iptables -A FORWARD -p TCP -d $SYSADMIN --dport $UNPRIVPORTS -j ACCEPT iptables -A FORWARD -p TCP -s $SYSADMIN --sport $UNPRIVPORTS -j ACCEPT iptables -A FORWARD -p UDP -d $SYSADMIN --dport $UNPRIVPORTS -j ACCEPT iptables -A FORWARD -p UDP -s $SYSADMIN --sport $UNPRIVPORTS -j ACCEPT #копипаст, пусть будет, мат.часть не помешает: #Есть некоторые провайдеры, которые очень не любят, когда одним #подключением пользуется несколько компьютеров, если мы начинаем #устанавливать на все пакеты одно и то же значение TTL, то тем #самым мы лишаем провайдера одного из критериев определения того, #что подключение к Интернету разделяется несколькими компьютерами.  <a href="http://www.cardinalsfanszone.com/authentic/adam-wainwright-authentic-jersey.html">Adam Wainwright Authentic Jersey</a> #Для примера можно привести число TTL = 64, которое является стандартным #для ядра Linux. iptables -t mangle -A PREROUTING -i $INET -j TTL --ttl-set 64 #Включаем НАТ iptables -t nat -A POSTROUTING -o $INET -j SNAT --to-source $INETIP echo "1" > /proc/sys/net/ipv4/ip_forward

Добавляем после отладки наш файрвол в автозагрузку, есть скрипт, который запускается последним при загрузке системы /etc/rc.local, вот туда и пишем команду /etc/fw(/полный путь/fw) и не забываем установить права на fw: chmod 711 /etc/fw (полный доступ ТОЛЬКО! для владельца и запуск для всех остальных).

Смотрите также:

faqman.ru


Смотрите также