Пошаговая настройка роутера на Debian

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

Углубленный онлайн-курс по MikroTik

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном онлайн-курcе по администрированию MikroTik. Автор курcа – сертифицированный тренер MikroTik Дмитрий Скоромнов. Более 40 лабораторных работ по которым дается обратная связь. В три раза больше информации, чем в MTCNA.

Данная статья является частью единого цикла статьей про сервер 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
eth1 внутренний интерфейс, смотрит в локальную сеть, статический 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 eth1
iface eth1 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

список правил iptables в debian

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

# /etc/iptables.sh

применение новых правил iptables на шлюзе

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

/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=eth1
dhcp-range=eth1,10.0.15.50,10.0.15.150,24h

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

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

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

получение сетевых настроек по dhcp

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

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

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

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

# apt-get install -y iftop

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

# iftop -i eth1

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

# iftop -i eth1 -P

анализ сетевой активности на сервере

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

Заключение

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

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

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

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

Напоминаю, что данная статья является частью единого цикла статьей про сервер Debian.

Углубленный онлайн-курс по MikroTik.

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном онлайн-курcе по администрированию MikroTik. Автор курcа – сертифицированный тренер MikroTik Дмитрий Скоромнов. Более 40 лабораторных работ по которым дается обратная связь. В три раза больше информации, чем в MTCNA.

Помогла статья? Подписывайся на telegram канал автора

Анонсы всех статей, плюс много другой полезной и интересной информации, которая не попадает на сайт.

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

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

Автор Zerox

Владимир, системный администратор, автор сайта. Люблю настраивать сервера, изучать что-то новое, делиться знаниями, писать интересные и полезные статьи. Открыт к диалогу и сотрудничеству. Если вам интересно узнать обо мне побольше, то можете послушать интервью. Запись на моем канале - https://t.me/srv_admin/425 или на сайте в контактах.

59 комментариев

  1. доброго времени суток, конфиг хороший и рабочий, вот только у меня с wireguard эта вся схема не работает, я отключил всё что блокирует соеденения пока не настроил всё, и даже при этом у меня при попытке подключения к пиру(тот который роутер) через стороннего пира(клиент или пир в роли сервера с белым ip) выходит ошибка не открытого порта, проверял на разных портах и tcp и udp, использывал правила"$IPT -t nat -A PREROUTING -p tcp --dport 222 -i ${WAN} -j DNAT --to 10.0.0.20:222" "$IPT -A FORWARD -i $WAN -d 10.0.0.20 -p tcp -m tcp --dport 222 -j ACCEPT", а так же включил "$IPT -A INPUT -i $WAN -j ACCEPT", но без разницы, ничего не помогает, в локалной сети всё ок, но в wireguard сети ничего не работает, проблема не со стороны wireguard, проблема со стороны роутера

    роутер работает под VM в proxmox, подключено два бриджа (один который идёт в интернет, другой соответсвенно в локальную сет), ранее делал такое же на хосте proxmox, однако при малейшей ошибке с моей стороны я отключаю хоста от инета, потому перенёс в ВМ

    • кхм, извините за оффтоп, однако я нашёл решение проблемы, я случайно сделал export WAN=wg1 export WAN_IP=10.66.66.3/32 и всё стало работать, когда я делал всё на хосте proxmox подобная настройка не работало, но на моё удивление тут, на ВМ с debian 12 это работает, как говориться век жики век учись

  2. Можете помочь, есть внешний интерфейс hyper-v с адресом 192.168.80.22, крутится виртуалка centos в ней два интерфейса eth0 192.168.80.88 есть интернет и второй интерфейс eth1 192.168.50.44, как сделать что бы eth0 раздавал интернет интерфейсу eth1, так как в centos крутится еще два контейнера один по адресу 192.168.80.х второй 192.168.5.х, получается на одном контейнере есть инет на втором нету.

  3. дмитрий

    а можете переделать скрипт с iptables на nftables? :)

    • В современных системах из коробки есть утилита, которая автоматом все правила iptables переделывает в nftables. Мне особо не надо, поэтому лично не занимался.

  4. Александр

    Добрый день, спасибо за статью, по ней все настроил. Все работает.
    Вопрос как настроить маршрутизацию?
    Есть 2 сети:

    # Внешний интерфейс
    export WAN=enp0s3
    export WAN_IP=192.168.1.2

    # Локальная сеть
    export LAN1=enp0s8
    export LAN1_IP_RANGE=10.0.1.0/24

    Как сделать что бы из сети 192.168.1.0/24 можно было обращаться к компьютерам в 10.0.1.0/24?
    По вашим статьям настроил, что из 10.0.1.0/24 в 192.168.1.0/24, можно пинговать.
    Вот мой конфиг /etc/network/interfaces:

    # This file describes the network interfaces available on your system
    # and how to activate them. For more information, see interfaces(5).

    source /etc/network/interfaces.d/*

    # The loopback network interface
    auto lo
    iface lo inet loopback

    # WAN
    allow-hotplug enp0s3
    iface enp0s3 inet dhcp

    post-up route add -net 10.0.0.0 netmask 255.255.255.0 gw 192.168.1.70
    post-up route add -net 10.1.0.0 netmask 255.255.255.0 gw 192.168.1.60
    pre-down route del -net 10.0.0.0 netmask 255.255.255.0 gw 192.168.1.70
    pre-down route del -net 10.1.0.0 netmask 255.255.255.0 gw 192.168.1.60

    # LAN
    allow-hotplug enp0s8
    iface enp0s8 inet static
    address 10.0.1.1
    netmask 255.255.255.0

    pre-up iptables-restore < /etc/iptables_rules

    • Не совсем понял, в чем конкретно проблема? Что не получается настроить? Если шлюз имеет доступ в обе подсети, он будет маршрутизировать трафик между ними.

    • Александр

      Шлюз находится на виртуалке, за шлюзом и находится сеть 10.0.1.0/24, сам шлюз получает ip от роутера. Я хотел бы подключаться к сети на виртуалке из любого устройства в доме.

  5. Скачал скрипт с помощью wget
    Замучался с ошибкой "#!/bin/bash: Нет такого файла или каталога"
    Оказалось связано с символом BOM
    Решение нашел тут https://debianforum.ru/index.php?topic=1100.0

  6. Вообщим для тех кто не мог понять почему инет работает, ssh работает, а проброс портов никак не хочет. Удалите строку (которую я так и не понял зачем написанную) Следом запрещаем доступ из инета в локальную сеть: $IPT -A FORWARD -i $WAN -o $LAN1 -j REJECT. Она бессмысленна по причине DROP INPUT FORWARD OUTPUT и жесткого прописывания открытых портов.

    • Она не бессмысленна. Просто для проброса нужно было разрешающее правило с forward сделать для пробрасываемого порта и адреса.

    • В статье про настройку iptables я об этом рассказываю https://serveradmin.ru/nastroyka-iptables-v-centos-7/#_forward

      • В том то и дело что forward на порт прописан.
        $IPT -t nat -A PREROUTING -p tcp --dport 8002 -i ${WAN} -j DNAT --to 192.168.100.33:37777
        $IPT -A FORWARD -i $WAN -d 192.168.100.33/32 -p tcp --dport 37777 -j ACCEPT
        И пока не убрал строку $IPT -A FORWARD -i $WAN -o $LAN1 -j REJECT правила не срабатывали. Хотя, пока это писал, можно было попробовать перенести эту строку в конец правил forward.

        А вообще спасибо за статьи! Кратко и все по делу.

        • Блокирующее правило для всех запросов должно быть в конце, а перед ним отдельные разрешения. Это общее правило в настройке iptables для всех цепочек.

          • а это не опечатка в строке: $IPT -t nat -A PREROUTING -p tcp --dport 8002 -i ${WAN} -j DNAT --to 192.168.100.33:37777
            WAN в фигурных скобках {}. Так и должно быть?

            • В целом, это допустимый вариант, причем даже желательно писать именно так. Это лучше экранирует все, что есть в переменной. Но обычно для краткости скобки не пишут, так как в большинстве случаев что с ними, что без разницы нет.

  7. константин

    у меня по вашим настройкам после перезапуска interfaces вылетает ошибка filed я настаивал у себя по другому в файле
    /etc/network/interfaces прописывал в конце прописал post-up /opt/scripts/gate.up

    а файле gate.up прописал
    #!/bin/sh
    LAN_IP_RANGE="10.0.0.2/3"

    iptables -F
    iptables -t nat -F

    echo 2 > /proc/sys/net/ipv4/ip_forward

    iptables -A INPUT -i lo -j ACCEPT
    iptables -t nat -A POSTROUTING -o eno1 -s $LAN_IP_RANGE -j MASQUERADE
    iptables -P FORWARD DROP
    iptables -A FORWARD -s $LAN_IP_RANGE -j ACCEPT
    iptables -A FORWARD -d $LAN_IP_RANGE -j ACCEPT

    раньше все работало до этого момента как я решил заново установить debian 9.5
    сервер раздает ip адрес войти по ssh могу, сервер видит интернет а внутренние пк не, но есть одна странная особенность открывается один яндекс и то только главная страница

    3-и сутки мучаюсь, всю голову сломал, куда копать куда рыть

  8. Николай

    Никак до меня не дойдёт, как объединить две подсети. У меня две подсети с адресами, Lan №1 192.168.8.*, netmask 255.255.255.0, шлюз 192.168.8.1, Lan №2 192.168.0.*, netmask 255.255.255.0, шлюз 192.168.0.1. Есть сервер с двумя сетевыми картами. Как ни старался, понять не могу, как их между собой связать. Чувствую, что решение простое, но найти его не могу. Подскажите, пожалуйста, как это сделать на моём примере.

  9. source /etc/network/interfaces.d/*

    auto lo
    iface lo inet loopback

    allow-hotplug eth0
    iface eth0 inet dhcp

    allow-hotplug eth1
    iface eth1 inet static
    address 10.0.15.1
    netmask 255.255.255.0
    Прописываю это после перезагрузки отваливаются сетевые и интернет, что делаю не так?

  10. Доброго времени суток. Отличная статья! Я очень Вам благодарен. Успехов Вам и процветания в новом году.
    В
    mcedit /etc/network/interfaces
    пришлось прописывать после каждого интерфейса строку:
    post-up iptables-restore < /etc/iptables.rules
    если прописывал в конце правила не применялись после перезагрузки.

    • "В конце" хоть и простой но не совсем правильный совет, так как последним может стоять неактивный интерфейс и тогда правила не применятся. Достаточно прописать данную настройку только один раз, но у гарантированно активного интерфейса, который поднимется после загрузки.

  11. хм )) какой же это шлюз - культяпка

  12. они клянутся что все открыто

  13. Уже не первую неделю маюсь с перенастройкой шлюза. Сделал по вашей инструкции. В итоге ни один порт из внешней сети не видны. в правилах все есть. поверяю через netstat -at нет открытых портов. та же история есди делаю nmap внешний_ip. в чем может быть проблема.

    • Проблема тут может быть только одна - iptables. Если снаружи ничего не видно, значит firewall блокирует соединения. Либо может с настройками внешнего ip что-то не так. Для проверки можно полностью отключить iptables и посмотреть на открытые порты снаружи. Если по прежнему не будет доступа, то разбираться дальше.

      • Сначала я делала на openSUSE_leap 42.3. вырубил там firewall2. прописал правила - не работает. но там немного замороченно с firewall2. В результате решил чтоб меньше с этим делом проблем решил развернуть на Debian 9. установку сделал минимальную - консоль. остальное все как у вас. чистил правила и смотрел снаружи какие порты покажет. но ничего не увидел. как пример смотрел порт 22. если запускаю сервис ssh то порт всегда открыт. так что сижу и недоумеваю в чем проблема. ранее с таким не сталкивался. версия iptables 1.6. Что еще можно посмотреть?

        • Не знаю, что посоветовать, но тут налицо какая-то явная проблема. Может быть провайдер блокирует все входящие соединения на данный ip. Внешний ip не всегда означает, что к нему можно подключиться. У меня, к примеру, домашний провайдер блокирует 25-й порт на вход.

          • с провайдера уже давно трясу инфу. но проверить их не могу.

          • проверил все что можно. не могу найти причину. у провайдера все открыто.

          • долго мучился. в итоге если перенаправить 25 порт, следующим образом:
            iptables -t nat -A PREROUTING -d wan_ip -p tcp -m tcp --dport 25 -j NAT --to-destination lan_ip:port то при проверке через nmap говорит что порт фильтруется, что делать далее не знаю не выходит полностью открыть порт

            • Я сейчас настраивал шлюз по этой статье и заметил одну неточность, а точнее упущение. Для проброса порта не хватает одного правила, которое разрешит перенаправление пакета с внешнего ip на внутренний. Корректно работающий проброс будет такой:

              $IPT -t nat -A PREROUTING -p tcp --dport 23543 -i ${WAN} -j DNAT --to 10.1.3.50:3389
              $IPT -A FORWARD -i $WAN -d 10.1.3.50 -j ACCEPT

              Добавляется второе правило. Его не нужно ставить, если нет общего запрета на форвард пакетов снаружи внутрь. Но в моем конфиге он есть. В статье я уже сделал исправления.

              • Я подобным образом пробовал, но указывал еще и порт по которому разрешаю форвардить $IPT -A FORWARD -i $WAN -p tcp --dport 443 -d 10.1.3.50:443 -j ACCEPT не помогает, только полное открытие форвардинга работает нормально. Сразу поясню, мне надо максимально закрыть сеть из вне.

                • Значит у тебя какая-то другая, локальная проблема. Я буквально вчера на новый шлюз закинул эти правила и все получилось.

  14. Подскажите по настройке nat?

  15. Пинги проходят с клиента.

  16. Автор помоги пожалуйста разобраться, не могу понять где накосячил. Настраиваю шлюз с авторизацией по смс. iptables настраивал по вашему мануалу. ip получаю все ок. пингую серваки гугла, сайты все ок, а вот с браузера не пускает.

    • Пинги откуда проходят? С сервера или с клиентов, на которых браузер не работает? Могу предположить, что либо NAT на шлюзе не настроен, либо не включен роутинг пакетов между сетевыми интерфейсами на сервере. В обоих случаях на самом шлюзе интернет будет, а на клиентах - нет.

  17. Добрый день! Спасибо за отличную статью! Столкнулся с небольшой проблемой. Имеется внешний адрес WAN и машина за nat с внутренним адресом LAN. На машине за nat, есть некий сервис, который при запуске создаёт web socket. На вход этому сервису должны поступать данные в виде ws://WAN:111. Порты проброшенны по той схеме которая описана у Вас в статье (на LAN), на локальной машине (за nat) порты тоже открыты, но сервис не запускается. Если ему дать команду в виде ws://LAN:111 или ws://localhost:111, то всё работает. Не подскажете в чем может быть проблема? Т.е. ситуация когда машина за nat не может подключится сама к себе по внешнему адресу.

    Заранее спасибо!

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

  18. Виктор

    Спасибо за статью.
    А какие доп. решения посоветуете использовать для настройки фильтра сайтов или других запретов доступа к "нежелательным" ресурсам?

    • Для этого нужно настраивать прокси сервер squid. У меня есть один пример, правда не для debian, а centos. Полностью у меня эта тема еще не раскрыта на сайте.

  19. Евгений

    Доброго времени суток!
    Благодаря вашей статье, настроил шлюз. Но возникли вопросы.

    Если честно до настройки правил iptables не добрался, пока все открыто пока. Только на одном из компьютеров не создается впн соединение. Доходит до проверки пользователя а там ошибка сервер не отвечает, хотя когда вернул обратно на windows просто поменял загрузочный диск, все работает. Что может быть?

    Все же какие минимальные требования для него? (у меня: в локальной сети 40 пользователей, RAM 1GB, процессор не помню интел селерон какой-то 1,7 ГГц, hdd40gb)

    Спасибо за внимание.

    • Vpn какой не работает? Если pptp, то ему надо протокол GRE, возможно он закрыт.

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

  20. Добрый день, есть ли в дебиане какой нить шейпер? Что бы ограничить скорость например eth1 до 20 мбит

    • Думаю iptables умеют это делать. Но я никогда не занимался такой настройкой.

      • А можно ли к 22 порту из внешки ограничить доступ по ip?

        • Конечно можно. Вместо правила:
          $IPT -A INPUT -i $WAN -p tcp --dport 22 -j ACCEPT
          нужно использовать вот это:
          $IPT -A INPUT -s 117.21.51.12 -p tcp --dport 22 -j ACCEPT

          117.21.51.12 - адрес, с которого можно подключаться. Только аккуратно с этими настройками. Без доступа к консоли сервера лучше не экспериментировать.

  21. Спасибо, буду пробовать.

  22. Добрый день. Подскажите начинающему.
    1. Могу ли я по аналогии с настройкой шлюза в интернет настроить выход в другую сеть? Т.е. имеем сеть 222.22.222.0 и за пределами здания имеем шлюз (вышестоящая организация) 222.22.1.1 через который попадаем в сети 222.22.ххх.ххх.
    2. Какие настройки из описанных Вами для шлюза в интернет необходимо оставить, а какими можно пренебречь?
    3. Какие IP присвоить сетевым картам сервера исходя из первых двух пунктов и необходимости наличия DHCP во внутренней сети.
    Если я некорректно поставил вопросы поправьте пожалуйста.
    Большое спасибо.

    • Я так не готов ответить по пунктам. Настройка шлюза для выхода в интернет и ваш случай это разные ситуации. Надо настраивать по-другому. Как минимум NAT вам не нужен. Правила нужно написать в зависимости от задач, маршруты нужно будет сделать соответствующие. Зачем вам вообще в данном случае программный маршрутизатор? Какие задачи он должен решать?

      • Задачи на данный момент простые. Нужно попадать на несколько ftp в разных сетях. Так получилось, что сети эти организовывались разными организациями и разными людьми. В какой-то момент пришла команда объединить их и тут начались непонятки. Два рядом стоящих компа пингуют один адрес во внешней сети и один стучится нормально, а второй не видит ничего. На следующий день всё с точностью до наоборот. Бардак в сети страшный.
        Вот и хотелось как-то отгородиться но не наглухо и управлять бардаком на сколько это возможно.

        • Тут надо разбираться с iptables и аккуратно писать нужные правила, закрывать лишнее. Если вам нужен доступ на сторонние ftp, то откройте весь ftp трафик на выход для простоты, а на вход все закройте. В принципе, это очень просто сделать. Материала по iptables в инете полно. Можно у меня почитать отдельную статью по iptables.

          • Много ваших статей прочитал. Debian поставил и настроил. Оказалось всё не так сложно, учитывая, что видел его впервые. С правилами буду разбираться.
            Вопрос еще по железу. Серверок у меня откопался допотопный, на нём собственно и эксперементирую (два Xeon 2,66Ghz, 2Gb оперативки и два малюсеньких винта по 37Gb в рэйде) Справится ли старичок с означенными выше задачами?

          • Для вашего случая подойдет любой сервер, на который можно установить debian. От траффика, конечно зависит, но думаю в вашем случае нагрузки не будет практически никакой.

      • Аноним

        В общем настроил все как написано. Инет на сервере есть, локалка есть, айпи раздаются. А вот инета все нет

        • Значит либо NAT не настроили, либо net.ipv4.ip_forward=1 не включили.

          • Аноним

            net.ipv4.ip_forward=1 включен. в /etc/sysctl.conf строка раскомментирована. Настройка nat этой командой iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE??

            • Аноним

              и еще при запуске insserv dnsmasq выдает вот это
              "insserv: FATAL: service mountkernfs has to exists for service udev
              insserv: FATAL: service urandom has to exists for service networking
              insserv: FATAL: service mountdevsubfs has to exists for service hwclock
              insserv: exiting now!"

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Нажимая кнопку "Отправить комментарий" Я даю согласие на обработку персональных данных.
Используешь Telegram? Подпишись на канал автора →
This is default text for notification bar