Debian.pro

Блог для пользователей и администраторов Debian


Debian, nat. Раздаём интернет с debian. Шлюз на debian — часть 2.

Мы уже настроили в своей сети dhcp сервер.
Теперь самое время раздать интернет компьютерам в нашей сети. Условимся, что eth0 у нас — внешний интерфейс, через который наш шлюз получает инет. eth1 — интерфейс, которым шлюз смотрит в нашу сеть.
Если ваш сервер подключается к инету через pppoe — то eth0 следует заменить на ppp0. Ну и так далее.

Первым делом настроим систему так, чтобы она «умела» работать шлюзом. Для этого в файле /etc/sysctl.conf заменим строку net.ipv4.ip_forward=0 на net.ipv4.ip_forward=1
Если строчка закомментирована — то раскомментируйте её.

Ну и применим новый конфиг, чтобы не перезагружаться:
root@debian-gateway:~# sysctl -p

Как вариант — выполнить команду (будет работать только без перезагрузки):
root@debian-gateway:~# sysctl -w net.ipv4.ip_forward="1"

Теперь расскажем нашему серверу, куда собственно направлять трафик, который прилетает на наш сервер, как на шлюз (вместо eth0 укажите тот интерфейс, которым шлюз смотрит в инет):
root@debian-gateway:~# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Ну и теперь нам нужно поправить файл /etc/rc.local, для того, чтобы сервер сразу после загрузки «узнавал», куда ему бедному пинать пакетики.
Нужно привести файл к примерно следующему виду (только подумайте повнимательнее):
# если используется pppoe (в другом случае эта строчка не нужна):
pon your-ppp-name
# включаем nat:
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
# дефолтная строчка, её удалять нельзя:
exit 0

Напоминаю, что компы-клиенты должны находиться в той же подсети, что и шлюз (если вы настраивали dhcp по первому мануалу — вам даже думать об этом ненадо). IP адрес нашего сервера-шлюза должен быть указан в качестве шлюза в настройках сетевого подключения у клиентов.

Диагностика проблем. Проблемы тут могут быть по двум причинам. Первая — вы не настроили sysctl. Возвращаемся в начало мануала и перечитываем. Вторая — iptables. Чтобы попробовать решить эту проблему — добавьте iptables -F в файл /etc/rc.local первой строчкой.
Если ничего не получается — пишите мне, помогу.


Комментарии (110):

  1. technomaniak1 :

    На 1 пк стоит дебиан с настроенным интернетом (pptp) и настроенным iptables по вашему мануалу
    На 2 пк семерка работает только скайп и ничего больше)
    хотя и пишет в свойствах подключение ИНТЕРНЕТ уже и не знаю че делать…
    Заранее спасибо

  2. Попробуйте
    iptables -I FORWARD -p tcp —tcp-flags SYN,RST SYN -m tcpmss —mss 1400:1500 -j TCPMSS —clamp-mss-to-pmtu -o $IFACE

  3. technomaniak1 :

    Вставил строчку в /etc/rc.local но увф все по прежнему(

  4. iface какой указывал, вставил ли строчку после того, как поднимается NAT, учел ли, что /etc/rc.local отрабатывает только при ребуте?

    Стучись в общем в Jabber, будем диагностировать что именно не работает.

  5. Dert :

    Спасибо, все работает! Но. Вместо sysctl -w надо прописывать sysctl -p . Долго удивлялся в чем проблема пока не нашел как проверить включен ли ипв4.айпи_форвардинг командой sysctl -a | grep forward . Сейчас буду dns делать.

  6. technomaniak1 :

    все сам разобрался) оасталось тока с wifi помучиться

  7. Чего было то? добавлю в мануал.

  8. Поправил, про dns — поищите dnsmasq в поиске, я писал про него.

  9. Dert :

    Спасибо. Кстати, ваша статья уже хорошо просматривается через гугл (так и попал на нее). Очень простая и дельная статья в отличие от большинства встречающегося бреда, который пугает неуверенностью в нем и громоздкостью.
    Еще добавлю, что мой провайдер использует статические, а не динамические адреса, поэтому вместо «… MASQUERADE» я прописывал «… SNAT —to-source 1.2.3.4″, где 1.2.3.4 — адрес сервера провайдера, его айпи постоянный, поэтому не обязательно каждый раз его определять. Впрочем, это не суть важно, не думаю что это как-то повлияет на производительность, и даже думаю это не стоит добавлять в статью, т.к. ухучшит читаемость.

  10. Спасибо за замечание. Вписывать в статью не буду, действительно, но тут пусть обязательно живет)

  11. technomaniak1 :

    да удали dhcp, удалил файервод, сброчилс все правила iptables и заработало)
    еще вопрос остался можно ли несколько правил типо
    iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
    iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
    ?

  12. ERT :

    Сделал все по выше описанному, но не хочет сервер раздавать инет на локальные машины (16 компьютеров, dhcp не устанавливал, т.к. мне нужны статические IP адреса). Максимально, чего я добился, так это работоспособность ICQ, а дальше ни в какую не хочет. При попытке что-либо изменить, вообще ничего не работает.

  13. dns проверь, с клиента nslookup yandex.ru

  14. dns проверь, с клиента nslookup yandex.ru. Также проверь на сервере

  15. ERT :

    dns я прописывал во время установки debian (dns провайдера). Самое интересное, что на одной машине, которая сейчас раздает инет — все нормально, быстро получилось настроить и работает. А вот на второй — никак (хочу сменить серверную машину).

  16. ERT :

    Помогло пока не помогли вот тут
    http://linuxforum.ru/viewtopic.php?id=13140

  17. 1pp :

    # включаем nat:
    iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

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

  18. Влад :

    В MTU, скорее всего.

  19. 1pp :

    можно поточнее

  20. 1pp :

    че делать то?

  21. Влад :

    iptables -I FORWARD -p tcp —tcp-flags SYN,RST SYN -j TCPMSS —clamp-mss-to-pmtu
    как-то так примерно.

  22. 1pp :

    root@1pp:~# iptables -I FORWARD -p tcp .tcp-flags SYN,RST SYN -j TCPMSS .clamp-mss-to-pmtu
    Bad argument `.tcp-flags’
    Try `iptables -h’ or ‘iptables —help’ for more information.

  23. Влад :

    http://hastebin.com/kuhofanofe.hs
    Никогда ничего не копируйте бездумно.

  24. 1pp :

    ну наконецто) спасибо)!!! скорость 70/70мб ее)

  25. Taz :

    # дефолтная строчка, её удалять нельзя:
    exit 0

    Можно!

  26. Хым. Вообще да, уже можно. legacy старое.

  27. Имя :

    как раз таки -w нужно в
    »
    Как вариант — выполнить команду (будет работать только без перезагрузки):
    root@debian-gateway:~# sysctl -p net.ipv4.ip_forward=»1″
    «

  28. BeginnerAdmin :

    Подскажите, если мне нужно форвардинг портов сделать это все тоже прописывать в /etc/rc.local (как у меня сейчас) или можно все это засунуть в какой-нить файл, а в /etc/rc.local прописать путь к файлу и заведется? Если так возможно, какой должен быть формат файла, какие права на него?

  29. В sh-скрипт это вполне себе запихать можно.
    Как то так:
    sudo editor /usr/bin/blah.sh
    sudo chmod +x /usr/bin/blah.sh

    И /usr/bin/blah.sh пишите в rc.local.

    В шапке sh-скрипта должен быть шабанг. Для баша — #/bin/bash.

  30. RomanS :

    господа хорошие, поясните, пожалуйста, как правильно настроить раздачу…
    ПРобывал данным методом и не выходит…
    что сейчас: Кабель от провайдера идет к роутеру (wl500Pv2) а с него на 2 сервера, на одном видеозапись, на 2м(основном) работает сайт и несколько серверов…В основном сервере стоит 2 сетевые и debian 6…
    что хочу: интернет от провайдера подключался к основному серверу, тот брал на свои нужды и раздавал остаток на роутер, а тот в свою очереднь отдавал на 2й сервер и несколько компьютеров…
    интернет напрямую на основном сервере настроить удалось…подключение к 2й сетевой проверял с помощь роутера…пинговалось и заходило на ип открывая дефолтную статическую страничку вебинтерфейса с сайта осного сервера, но интернет не работает…скорее всего это из-за того, что на основном сервере поднят вебхостинг и 80 порт перекрыт…
    подскажите,пожалуйста, как быть. Просто роутер клеит ласты при большем количестве подключений…сначала перестает отдавать на wifi, потом страдает lan

  31. @RomanS
    Напишите, что конкретно делали после «интернет напрямую на основном сервере настроить удалось». В какие порты что подключили, какие настройки где меняли.

  32. Water :

    Ув.Товарищ инквизитор, у меня следующая схема: в eth1 шлюза (192,168,10,254) от vdsl модема(192.168.10.253) переведенного в режим бридж воткнут кабель, на шлюзе поднял pppoe соединение, прошелся по инструкции на этой странице инет есть только на шлюзе.
    Уточните пожалуйста как все должно выглядеть (и поправьте меня если я не прав)
    модем 192,168,10,253
    шлюз 192,168,10,254 eth1
    eth0 которая воткнута в коммутатор общей сети не присвоен вообще айпи, но сеть работает его из локалки видно и он видит, и если этот интерфейс вытащить, то пинг пропадает.

    Должна ли сработать эта инструкция в моей схеме? или есть какието особенности? машина из внутренней сети (linux crunch) говорит по англицки про недоступность СЕТИ, а если выключить выключить шлюз то недоступность УЗЛА.

  33. Настройте сначала внутреннюю сеть. Там вы сами вольны делать что угодно, главное, чтобы у всех хостов внутри сети появился доступ по L2 к eth0 сервера (т.е., адрес eth0 сервера и ip-адреса всех хостов внутри сети должны входить в одну подсеть).
    Инструкция актуальна, раздавать через MASQUERADE вам нужно интерфейс ppp0 (или какой у вас там поднимается), а не eth1.
    Адрес eth0 сервера на всех хостах внутри сети должнен быть прописан в качестве default gateway.

    Дальше рассуждать без конкретики бессмысленно. Давайте ifconfig, ip ro sh, пинги, трейсы со всех хостов, если не разберетесь.

  34. Water :

    Не разобрался, вчера, опять. Жаль не проверил ваш ответ, вчера вечером. Сегодня вечером доберусь до объекта «стрительства», выложу вам все конфиги. Спасибо.

  35. svida :

    inkvizitor68sl, возьметесь ли Вы за удаленную настройку через TeamViewer с благодарностью через wm?

  36. > inkvizitor68sl, возьметесь ли Вы за удаленную настройку через TeamViewer с благодарностью через wm?
    Кидайте подробности в почту (root@vlad.pro) — там видно будет.

  37. Water :


    gateway#ifconfig
    eth0 Link encap:Ethernet HWaddr f8:d1:11:00:6e:92
    inet addr:192.168.10.254 Bcast:19
    root@gw:/home/master# 2.168.10.255 Mask:255.255.255.0
    inet6 addr: fe80::fad1:11ff:fe00:6e92/64 Scope:Link
    UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
    RX packets:98 errors:0 dropped:0 overruns:0 frame:0
    TX packets:42 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:1000
    RX bytes:11628 (11.3 KiB) TX bytes:6450 (6.2 KiB)
    Interrupt:26 Base address:0x8000

    eth1 Link encap:Ethernet HWaddr 8c:89:a5:11:09:9c
    inet addr:192.168.100.1 Bcast:192.168.100.255 Mask:255.255.255.0
    inet6 addr: fe80::8e89:a5ff:fe11:99c/64 Scope:Link
    UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1
    RX packets:136 errors:0 dropped:0 overruns:0 frame:0
    TX packets:281 errors:0 dropped:0 overruns:0 carrier:4
    collisions:0 txqueuelen:1000
    RX bytes:21387 (20.8 KiB) TX bytes:28474 (27.8 KiB)
    Interrupt:27

    lo Link encap:Local Loopback
    inet addr:127.0.0.1 Mask:255.0.0.0
    inet6 addr: ::1/128 Scope:Host
    UP LOOPBACK RUNNING MTU:16436 Metric:1
    RX packets:0 errors:0 dropped:0 overruns:0 frame:0
    TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:0
    RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)

    ppp0 Link encap:Point-to-Point Protocol
    ...skipped....
    RX packets:109 errors:0 dropped:0 overruns:0 frame:0
    TX packets:211 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:3
    RX bytes:17245 (16.8 KiB) TX bytes:15536 (15.1 KiB)

    user
    root@comp1:/home/jenny# ifconfig
    eth0 Link encap:Ethernet HWaddr 00:25:22:1c:f6:07
    inet addr:192.168.10.101 Bcast:192.168.10.255 Mask:255.255.255.0
    inet6 addr: fe80::225:22ff:fe1c:f607/64 Scope:Link
    UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
    RX packets:710 errors:0 dropped:0 overruns:0 frame:0
    TX packets:617 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:1000
    RX bytes:188098 (183.6 KiB) TX bytes:59491 (58.0 KiB)
    Interrupt:26 Base address:0xe000

    lo Link encap:Local Loopback
    inet addr:127.0.0.1 Mask:255.0.0.0
    inet6 addr: ::1/128 Scope:Host
    UP LOOPBACK RUNNING MTU:16436 Metric:1
    RX packets:40 errors:0 dropped:0 overruns:0 frame:0
    TX packets:40 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:0
    RX bytes:3808 (3.7 KiB) TX bytes:3808 (3.7 KiB)

    root@comp1:/home/jenny# ping ya.ru
    ping: unknown host ya.ru
    root@comp1:/home/jenny#

  38. Water :

    у юзера 192,168,10,254 как шлюз прописан, на шлюзе eth1 смотрит в инет eth0 в сеть. почему пакеты не ходят не пойму. на шлюзе инет есть

  39. Water :

    ДОрогой товарищ, инквизитор, спасибо. Я перечитал внимательно ваш коммент и нашел свою ошибку (в том, что указывал на раздачу через маскарадинг не тот интерфейс. Сеть работает.) еще раз спасибо. Linux way — true way

  40. Water :

    и еще, затрите пожалуйста мой коммент с конфигом, я по тупости и поспешности показал айпи, спасибо.

  41. Стер адрес внешний.

    Не за что. Удачи)

  42. danil :

    Скажите мне обязательно писать строчки
    # если используется pppoe (в другом случае эта строчка не нужна):
    pon your-ppp-name
    # включаем nat:
    iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
    # дефолтная строчка, её удалять нельзя:
    exit 0

    Использую PPPOE. и если вписывать. то интерфейс мне указывать тот на котором весит модем или же тот с которого интернет раздается уже пользователям?

  43. > Теперь расскажем нашему серверу, куда собственно направлять трафик, который прилетает на наш сервер, как на шлюз (вместо eth0 укажите тот интерфейс, которым шлюз смотрит в инет):

  44. danil :

    Хорошо. Указал я это. после того как применил правила в айпитаблес, интернет работать перестал. подскажите с правилами? Вот конфиг
    #!/bin/sh

    /sbin/depmod -a
    /sbin/modprobe ip_tables
    /sbin/modprobe ip_conntrack
    /sbin/modprobe iptable_filter
    /sbin/modprobe iptable_nat

    echo «1″ > /proc/sys/net/ipv4/ip_forward

    iptables -P INPUT ACCEPT
    iptables -P FORWARD ACCEPT
    iptables -P OUTPUT ACCEPT
    iptables -t nat -P PREROUTING ACCEPT
    iptables -t nat -P POSTROUTING ACCEPT
    iptables -t nat -P OUTPUT ACCEPT
    iptables -t mangle -P PREROUTING ACCEPT
    iptables -t mangle -P OUTPUT ACCEPT

    iptables -F
    iptables -t nat -F
    iptables -t mangle -F

    iptables -X
    iptables -t nat -X
    iptables -t mangle -X

    iptables -A INPUT -i eth0 -j ACCEPT
    iptables -A FORWARD -i ppp0 -j ACCEPT
    #iptables -A FORWARD -i ppp1 -j ACCEPT
    #iptables -t nat -A POSTROUTING -s 10.10.10.2 -o ppp0 -j MASQUERADE
    iptables -t nat -A POSTROUTING -s 10.10.10.10 -o ppp0 -j MASQUERADE
    #iptables -t mangle -A FORWARD -s 10.10.10.7 -j MARK —set-mark 103
    iptables -t nat -A POSTROUTING -s 10.10.10.3 -o ppp0 -j MASQUERADE
    #iptables -t mangle -A FORWARD -s 10.10.10.3 -j MARK —set-mark 106
    iptables -t nat -A POSTROUTING -s 10.10.10.4 -o ppp0 -j MASQUERADE
    iptables -t nat -A POSTROUTING -s 10.10.10.5 -o ppp0 -j MASQUERADE
    iptables -t nat -A POSTROUTING -s 10.10.10.6 -o ppp0 -j MASQUERADE
    iptables -t nat -A POSTROUTING -s 10.10.10.7 -o ppp0 -j MASQUERADE
    #iptables -t mangle -A FORWARD -s 10.10.10.9 -j MARK —set-mark 105
    #iptables -t mangle -A FORWARD -s 10.10.10.6 -j MARK —set-mark 101
    iptables -t nat -A POSTROUTING -s 10.10.10.8 -o ppp0 -j MASQUERADE
    #iptables -t mangle -A FORWARD -s 10.10.10.8 -j MARK —set-mark 102
    iptables -t nat -A POSTROUTING -s 10.10.10.9 -o ppp0 -j MASQUERADE
    iptables -t nat -A POSTROUTING -s 10.10.10.11 -o ppp0 -j MASQUERADE
    iptables -t nat -A POSTROUTING -s 10.10.10.12 -o ppp0 -j MASQUERADE
    iptables -t nat -A POSTROUTING -s 10.10.10.13 -o ppp0 -j MASQUERADE

  45. Долго-долго силился понеять, что вы сделать пытаетесь.

    Так и не понял смысла во всей писанине. Расскажите, зачем всё это?

  46. danil :

    уже все решил. Правила немного изменил

  47. Влад :

    Ооок.. О_о

  48. NurDus :

    Доброго времени суток.

    А у меня ругнулся вот так:

    root@hs-php:~# iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
    WARNING: Deprecated config file /etc/modprobe.conf, all config files belong into /etc/modprobe.d/.
    FATAL: Module ip_tables not found.
    iptables v1.4.8: can’t initialize iptables table `nat’: Table does not exist (do you need to insmod?)
    Perhaps iptables or your kernel needs to be upgraded.

    Попробовал:
    apt-get upgrade iptables

    Но ошибка повторилась.
    Не подскажите в чем может быть проблема?!

  49. Что за ядро то?

  50. NurDus :

    Debain 6, если вы про это..

  51. Мхм. Версию ядра смотрите командой uname -a
    Ну и сразу dpkg -l | grep " linux-" покажите.

    Не в виртуалке делаете всё это, случаем?

  52. NurDus :

    Linux hs-php 2.6.32-042stab081.5 #1 SMP Mon Sep 30 16:52:24 MSK 2013 x86_64 GNU/Linux
    и
    ii syslinux-common 2:4.02+dfsg-7 collection of boot loaders (common files)
    Да, на виртуалке, доступа к управлению ядром нет.

  53. У вас openvz — внутри неё просто так nat не получится поднять.
    В конфиге виртуалки строчку нужно поправить:
    IPTABLES=»ip_tables iptable_filter iptable_mangle ipt_limit ipt_multiport ipt_tos ipt_TOS ipt_REJECT ipt_TCPMSS ipt_tcpmss ipt_ttl ipt_LOG ipt_length ip_conntrack ip_conntrack_ftp ipt_state iptable_nat ip_nat_ftp»

    И в man vzctl почитать про то, как разрешить виртуалке iptables использовать.

  54. NurDus :

    Ок, спасиб. =)

  55. ign :

    настроил раздачу с адсл-модема, все ок, но не могу настроить доступ к странице настройки модема, как это сделать? модем в режиме моста: 192.168.1.1, pppoe на шлюзе пдключается, 3 сетевых на нем для локальных компов. инет есть, все хосты на шлюзе пингуются, а вот на локальных — все кроме 192.168.1.1. Чувствую надо маршрут прописать, но не пойму какой.

  56. Влад :

    ip ro add 192.168.1.1 via dev
    Вы их скорее всего загнали все в 192.168.1.*

    Если они всё же в разных подсетях C — то на шлюзе нужно что-то в духе:
    iptables -t nat -A POSTROUTING -o ethX-j MASQUERADE
    где ethX — сетевой интерфейс, к которому модем подключен.

  57. ign :

    iptables -t nat -A POSTROUTING -o ppo0 -j MASQUERADE — для инета такое есть. Да, подсети на сетевых такие: 192.168.10.0/24, 192.168.20.0/24 и 192.168.30.0/24

  58. ign :

    Добавил iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE и все заработало. Спасибо, Влад.

  59. Не за что

  60. Erhon :

    Здравствуйте можете проверить мой Iptables тоже не могу дать нат
    вот Iptables.up.rules
    # Generated by iptables-save v1.4.14 on Sat May 10 14:22:05 2014
    *nat
    :PREROUTING ACCEPT [215:22000]
    :INPUT ACCEPT [41:5617]
    :OUTPUT ACCEPT [10:955]
    :POSTROUTING ACCEPT [7:420]
    -A PREROUTING -i eth1 -p tcp -m tcp —dport 3216 -j DNAT —to-destination 192.168.100.16:3389
    -A PREROUTING -i eth1 -p tcp -m tcp —dport 3501 -j DNAT —to-destination 192.168.100.10:3389
    -A POSTROUTING -s 192.168.100.16/32 -o eth1 -j MASQUERADE
    -A POSTROUTING -s 192.168.100.10/32 -o eth1 -j MASQUERADE
    -A POSTROUTING -o eth0 -j MASQUERADE
    COMMIT
    # Completed on Sat May 10 14:22:05 2014
    # Generated by iptables-save v1.4.14 on Sat May 10 14:22:05 2014
    *mangle
    :PREROUTING ACCEPT [13163704:8564550282]
    :INPUT ACCEPT [12603801:8502275800]
    :FORWARD ACCEPT [474453:51120198]
    :OUTPUT ACCEPT [12830558:8585643500]
    :POSTROUTING ACCEPT [12847255:8588164346]
    COMMIT
    # Completed on Sat May 10 14:22:05 2014
    # Generated by iptables-save v1.4.14 on Sat May 10 14:22:05 2014
    *filter
    :INPUT DROP [108334:7714915]
    :FORWARD DROP [474453:51120198]
    :OUTPUT ACCEPT [12830557:8585643388]
    -A INPUT -p icmp -f -j DROP
    -A INPUT -p tcp -m conntrack —ctstate NEW -m tcp ! —tcp-flags FIN,SYN,RST,ACK SYN -j DROP
    -A INPUT -p tcp -m conntrack —ctstate INVALID,NEW -m tcp —tcp-flags SYN,ACK SYN,ACK -j REJECT —reject-with tcp-reset
    -A INPUT -p tcp -m tcp —dport 22 -j ACCEPT
    -A INPUT -p tcp -m tcp —dport 8080 -j ACCEPT
    -A INPUT -p tcp -m tcp —dport 10000 -j ACCEPT
    -A INPUT -p tcp -m tcp —dport 901 -j ACCEPT
    -A INPUT -p icmp -m icmp —icmp-type 8 -j ACCEPT
    -A INPUT -m state —state RELATED,ESTABLISHED -j ACCEPT
    -A INPUT -p tcp -m tcp —dport 110 -j ACCEPT
    -A INPUT -p tcp -m tcp —dport 995 -j ACCEPT
    -A INPUT -p tcp -m tcp —tcp-flags FIN,SYN,RST,ACK RST -m limit —limit 1/sec -j ACCEPT
    -A INPUT -p tcp -m state —state RELATED,ESTABLISHED -j ACCEPT
    -A INPUT -p udp -m state —state RELATED,ESTABLISHED -j ACCEPT
    -A INPUT -p tcp -m tcp —dport 22 —tcp-flags FIN,SYN,RST,ACK SYN -m recent —update —seconds 30 —hitcount 3 —name dmitro —rsource -j DROP
    -A INPUT -p tcp -m tcp —dport 20 -j ACCEPT
    -A INPUT -p tcp -m tcp —dport 21 -j ACCEPT
    -A INPUT -p tcp -m tcp —dport 25 -j ACCEPT
    -A INPUT -p udp -m udp —sport 53 -j ACCEPT
    -A INPUT -p tcp -m tcp —dport 80 -j ACCEPT
    -A INPUT -p tcp -m tcp —dport 110 -j ACCEPT
    -A INPUT -p tcp -m tcp —dport 143 -j ACCEPT
    -A INPUT -p tcp -m tcp —dport 443 -j ACCEPT
    -A INPUT -p tcp -m tcp —dport 13000 -j ACCEPT
    -A INPUT -p tcp -m tcp —dport 13001 -j ACCEPT
    -A INPUT -p tcp -m tcp —dport 14001 -j ACCEPT
    -A INPUT -p tcp -m tcp —dport 14000 -j ACCEPT
    -A INPUT -p tcp -m tcp —dport 9080 -j ACCEPT
    -A INPUT -p icmp -m icmp —icmp-type 3 -j ACCEPT
    -A INPUT -p icmp -m icmp —icmp-type 11 -j ACCEPT
    -A INPUT -p icmp -m icmp —icmp-type 12 -j ACCEPT
    -A INPUT -i eth0 -p tcp -m tcp —dport 53 -j ACCEPT
    -A INPUT -i lo -j ACCEPT
    -A INPUT -p tcp -m tcp —dport 5901 -j ACCEPT
    -A INPUT -p tcp -m tcp —dport 5900 -j ACCEPT
    -A INPUT -i eth0 -p udp -m multiport —ports 135,136,137,138,139,445 -j ACCEPT
    -A INPUT -i eth0 -p tcp -m multiport —ports 135,136,137,138,139,445 -j ACCEPT
    -A INPUT -s 192.168.100.0/24 -p udp -m udp —sport 123 —dport 123 -m state —state NEW -j ACCEPT
    COMMIT
    # Completed on Sat May 10 14:22:05 2014

    Вот ifconfig

    eth0 Link encap:Ethernet HWaddr 00:15:17:12:21:2c
    inet addr:192.168.100.3 Bcast:192.168.100.255 Mask:255.255.254.0
    UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
    RX packets:8087263 errors:0 dropped:12223 overruns:0 frame:0
    TX packets:8427180 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:1000
    RX bytes:941299779 (897.6 MiB) TX bytes:8220386452 (7.6 GiB)
    Interrupt:18 Memory:b8820000-b8840000

    eth1 Link encap:Ethernet HWaddr 00:15:17:12:21:2d
    inet addr:89.218.196.195 Bcast:89.218.196.207 Mask:255.255.255.240
    UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
    RX packets:6364370 errors:0 dropped:0 overruns:0 frame:0
    TX packets:4872712 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:1000
    RX bytes:8002488559 (7.4 GiB) TX bytes:663066312 (632.3 MiB)
    Interrupt:19 Memory:b8800000-b8820000

    lo Link encap:Local Loopback
    inet addr:127.0.0.1 Mask:255.0.0.0
    UP LOOPBACK RUNNING MTU:16436 Metric:1
    RX packets:957 errors:0 dropped:0 overruns:0 frame:0
    TX packets:957 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:0
    RX bytes:52515 (51.2 KiB) TX bytes:52515 (51.2 KiB)
    Заранее спасибо

  61. Откуда опус этот скачали?
    Пишите правила сами. Те, которые нужны.

  62. Andrey :

    Добрый день. Пробую настроить офисную сеть на Vmware Workstation 10. итого:
    1. Debian + nat + dhcp — должна раздавать ip адреса и работать как шлюз в интернет.
    2. Windows 8 — динамически получает ip адрес от dhcp (Debian) и должна выходить в интернет.
    На данный момент DHCP работает отлично, сам Debian выходит в интернет и пинги проходят на ya.ru
    Но вот Windows 8 получает ip но не может выходить в интернет — настройки Debian такие:
    /etc/resolv.conf # DNS
    domain localdomain
    search localdomain
    nameserver 192.168.182.2
    nameserver 192.168.182.100
    nameserver 8.8.8.8
    /etc/rc.local # FIREWALL
    iptables -t nat -A POSTROUTING -0 eth0 -j MASQUERADE
    exit 0
    /etc/network/interfaces # ИНТЕРФЕСЫ: eth0 мир-инет, eth1 lan dhcp
    auto lo
    iface lo inet loopback
    auto eth0
    iface eth0 inet static
    address 192.168.182.100
    netmask 255.255.255.0
    network 192.168.182.0
    broadcast 192.168.182.255
    gateway 192.168.182.2
    auto eth1
    iface eth1 inet static
    address 192.168.109.7
    netmask 255.255.255.0
    network 192.168.109.0
    broadcast 192.168.109.255
    gateway 192.168.182.100
    /etc/dhcp/dhcpd.conf # DHCP
    authoritative;
    option domain-name «honey.in.ua»;
    option domain-name-servers 192.168.182.2, 192.168.182.100, 8.8.8.8;
    default-lease-time 259200;
    max-lease-time 518400;
    Server-identifier 192.168.109.7;
    ddns-update-style none;
    log-facility local7;
    subnet 127.0.0.1 netmask 255.255.255.255 {
    }
    subnet 192.168.100.0 netmask 255.255.255.0 {
    }
    subnet 192.168.109.0 netmask 255.255.255.0 {
    option routers 192.168.182.100; # Шлюз по умолчанию
    option broadcast-address 192.168.109.255; # Широковещательный адрес
    range 192.168.109.20 192.168.109.50;
    }
    Windows 8 получает такие настройки для своей сетевой:
    ip: 192.168.109.20
    mask: 255.255.255.0
    gw: 192.168.182.100
    dhcp: 192.168.109.7
    dns: 192.168.182.2 , 192.168.182.100, 8.8.8.8
    Прошу помощи в настройке, что я где не так сделал.
    Вроде бы всё как в этой статье — но инет на Windows 8
    не проходит, а это значит что в Debian шлюз не работает.

    P/S я по ошибке постнул вопрос свой на первую часть по dhcp — можно его от туда удалить, а тут оставить?

  63. Andrey :

    Нашёл трабл — iptables -t nat -A POSTROUTING -0 eth0 -j MASQUERADE должно быть -o а не -0 в этой строчке и всё инет стал бегать на Windows 8

  64. там и стоит буква о..

  65. Andrey :

    Там 0 стоит а не буква о )))

  66. Влад :

    ctrl-f думает по-другому.
    Настройте себе шрифты =)

  67. «Ну и теперь нам нужно поправить файл /etc/rc.local»
    Зачем изобретать костыль? Нельзя всё сделать правильно? vpn подключение настроить как положено через /etc/network/interfaces, а правило для nat просто сохранить в iptables.

  68. Max :

    Так, НАТ настроен, пакеты бегают. А как теперь разделить канал поровну, скажем между 10-ю клиентами?
    Да так, чтобы динамически всё изменялось раз в 2 секунды (чтобы канал не пропадал зря)

  69. > Зачем изобретать костыль?
    Затем, чтобы статья была универсальной. Те, кто могут настроить своё подключение через /etc/network/interfaces — welcome. А отвечать 100500 раз «у вас pptp, оно в interfaces по другому настраивается, мой пример не подходит» — глупо.
    К тому же, rc.local — вполне себе штатное место, куда нужно вписывать то, что хочется запускать после старта машины.
    Всякие iptables-persistense — не то, чтобы меньшие костыли. Да ещё и нередко непонятные человеку новому.

  70. > А как теперь разделить канал поровну, скажем между 10-ю клиентами?
    Что-то в районе man tc читать нужно.
    http://linux.die.net/man/8/tc — но вообще про это лучше у NOC спросить.

  71. Доброго времени суток.
    Выручайте ребят.
    В общем на сервере стоит Ubuntu с 2 сетевыми картами:
    1) Карта 1 eth1 со статическим ip:192.168.10.200 — принимает интернет
    2) Карта 2 eth0 раздает через dhcp адреса (10.2.10.15+x), все успешно, все хорошо.
    Интернет ни в какую не хочет. Прописывал все по мануалу на компьютерах в локальной сети инернет не появился…что может быть нет так.
    Выручайте, спасибо.

  72. iptables-save покажи сюда

  73. *nat
    :PREROUTING ACCEPT [140:11487]
    :INPUT ACCEPT [38:6267]
    :OUTPUT ACCEPT [119:9877]
    :POSTROUTING ACCEPT [12:2038]
    -A POSTROUTING -o eth1 -j MASQUERADE
    COMMIT

  74. На машинах в локалке тазик шлюзом прописан, я надеюсь?

  75. На локальных машинах получение адресов автоматом прописано…и dns и ip…или я не так Вас понял?

  76. Шлюзом на локальных машинах что выдаётся?

  77. Шлюз выдает 10.2.10.1

  78. А этот адрес — это адрес сетевухи на шлюзе?
    forwarding в sysctl включен?

    И define «интернет не работает» — пинги вообще не ходят?

  79. Адрес сетевухи 10.2.10.10, пакеты гуляют хорошо.

  80. Или адрес сетевухи, должен быть шлюзом?

  81. > Шлюз выдает 10.2.10.1
    > Адрес сетевухи 10.2.10.10, пакеты гуляют хорошо.

    %)

  82. :-D Смешно, понятное дело, но просто первый раз с этим столкнулся…От этого и вот так получается :-)

  83. Поэтому как котенок слепой не могу врубиться, что да как…

  84. В общем настроил, все замечательно…правда вот по каким причинам не пойму, если выдает адрес dhcp — интернет пропадает, необходимо задавать ручками, тогда все хорошо, в чем может быть причина?

  85. В конфиге dhcpd gateway смените на правильный

  86. В общем все решил спасибо большое. Дело было в dns адресах прописанных в resolv.conf .

  87. София :

    День добрый. Такая проблема. Есть интернет на сервере, там реализован прокси, к серверу подключается 2 маршрутизатора, каждый со своей подсетью. На маршрутизаторах интернет появляется, а на клиентах никак не получается настроить) Хелп

  88. В jabber лучше.
    В общих чертах ответ — «нужно каждый из роутеров настроить так, как описано в посте». Но вообще это гадание на кофейной гуще, нужен или доступ или вся конфигурация и нормальное описание проблемы.

  89. Константин :

    Здравствуйте,
    Настроил себе интернет-шлюз на Debian. Поднял L2TP-клиент и пропустил траффик на другие компы с помощью Вашей статьи. Download-скорость на компьютере такая же, как и на шлюзе, а вот с Upload-скоростью непонятно. На компьютере через шлюз она вдвое меньше, чем в реальности. На самом шлюзе проверить ее никак не получается. Пробовал speedtest-cli, но он показывает совершенно далекие от реальности цифры. Локальная скорость между шлюзом и компьютером равняется пропускной способности канала. Что можете посоветовать в данной ситуации? Речь идет о разности в 200 мбит/c.

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

  90. С нагрузкой на CPU на обоих железках что происходит?

  91. Константин :

    Нагрузка никая. На шлюзе 0.00, 0.03, 0.05, если смотреть через uptime.

  92. Константин :

    Проверил еще раз скорость через iperf на публичный сервер. Получается, что я ошибся и скорость Download-а также в два раза ниже на компьютере, чем на шлюзе.
    Посмотрел также загрузку процессора с помощью ps aux на шлюзе.
    root 2343 1.9 0.0 12592 892 pts/0 Ss+ Apr18 48:50 /usr/sbin/xl2tpd
    Есть еще пару kworker-ов с 1.6%. Процессор стоит i7, поэтому проблем таких не ожидал. На компьютере тоже все тихо.

    ethtool и ifconfig залил сюда — http://pastebin.com/DNukm0Cr
    eth1 — интерфейс, который смотрит в локальную сеть, а он по сути и нужен, так как скорость на шлюзе соответствует заданной.
    Заметил dropped пакеты на интерфейсе.

  93. В общем, такие проблемы удаленно анализировать я не возьмусь. Там 100500 причин может быть на любом уровне.

  94. Константин :

    Если несложно, опишите хотя бы самые частые из проблем.

  95. Физика, xl2tp уперся в свою логику/не успевает шифровать трафик/накрутили бредовых правил в iptables/conntrack забился/свичи не успевают/меряете скорость по wifi.

  96. Константин :

    Физика. Передача файлов в локальной сети проходит на скорости 111 мбайт/c в обе стороны, что примерно 888 мбит/c, а значит отпадает.
    xl2tpd. Шлюз тянет данную скорость. Мерил нагрузку процессора несколькими командами. Везде нагрузка не превышает пары процентов. Когда происходит тест компьютера, шлюз полностью свободен. Получается это тоже отпадает.
    iptables. Мои правила: -A POSTROUTING -o ppp0 -j MASQUERADE и -A FORWARD -p tcp -m tcp —tcp-flags SYN,RST SYN -j TCPMSS —clamp-mss-to-pmtu
    conntrack. Его у меня вообще нет.
    Свитч. Также отпадает по причинам из физики.
    Wi-Fi. Компьютер подключен в неуправляемый гигабитный свитч, в который также воткнут шлюз.

  97. lsmod | grep conntrack
    что говорит?

    > Мерил нагрузку процессора несколькими командами.
    xl2tp может упереться не в cpu, а в свою логику.

  98. Константин :

    Вроде что-то нашел:
    nf_conntrack_ipv4 14078 3 nf_nat,iptable_nat
    nf_defrag_ipv4 12483 1 nf_conntrack_ipv4
    nf_conntrack 52720 4 nf_conntrack_ipv4,nf_nat,iptable_nat,ipt_MASQUERADE

    Ну ведь, если упирается в логику, то это же должно где-то писаться в логи?

  99. Не должно.
    conntrack включен, кстати.

  100. Константин :

    Все равно не понимаю, каким боком тут xl2tpd, если скорость на самом шлюзе (wget) соответствует заявленной, а на компе нет.
    Не найду никак, как conntrack очистить.

    Спасибо за потраченное время.

  101. Да не за что

  102. Krafft :

    Привет. Уже неделю бьюсь с шлюзом, не могу почту пропустить может подскажиш где читать, в какую сторону копать? Выглядит это по моему как-то так (
    #!/bin/sh
    iptables -F
    iptables -t nat -F
    iptables -A INPUT -i lo -j ACCEPT
    iptables -A FORWARD -i eth2 -o eth0 -j ACCEPT
    #

    MAIL=mail1.ru.com
    LOCALNET=192.168.10.0/24
    LOCALNET1=192.168.2.0/24
    #MAIL
    iptables -A FORWARD -p tcp -s $LOCALNET -d $MAIL —dport 25 -j ACCEPT
    iptables -A FORWARD -p tcp -s $MAIL -d $LOCALNET —sport 25 -j ACCEPT
    iptables -A FORWARD -p tcp -s $LOCALNET -d $MAIL —dport 110 -j ACCEPT
    iptables -A FORWARD -p tcp -s $MAIL -d $LOCALNET —sport 110 -j ACCEPT
    #nat
    iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
    #iptables -t nat -A POSTROUTING -o eth0 -s $LOCALNET1 -j MASQUERADE
    #iptables -t nat -A POSTROUTING -o eth0 -s $LOCALNET -j MASQUERADE
    iptables -t nat -A POSTROUTING -p tcp -s $LOCALNET —dport 110 -j MASQUERADE
    iptables -t nat -A POSTROUTING -p tcp -s $LOCALNET —dport 25 -j MASQUERADE
    ) но из локалки бат не отправляет не принимает. почту. Нет главное везде есть да шлюз еще делит сеть на две логики через дшсп .

  103. А зачем вся эта конструкция, расскажи?
    А вообще, судя по всему, ты просто накопипастил что-то из рандомных мест. Предлагаю для начала понять, что делает каждая из строчек, потом наложить это на свою задачу, потом будет видно, где ошибка.

  104. Krafft :

    Все нашол скрипту вменяемую на понятном языке ка для меня мал правки и вуаляп
    делюсь не корысти раде
    #!/bin/sh
    # Закрываем изначально ВСЁ (т.е. изначально все что не разрешено — запрещено):
    #iptables -P INPUT DROP
    #iptables -P OUTPUT DROP
    #iptables -P FORWARD DROP
    # Состояние ESTABLISHED говорит о том, что это не первый пакет в соединении.
    # Пропускать все уже инициированные соединения, а также дочерние от них
    iptables -A INPUT -p all -m state —state ESTABLISHED,RELATED -j ACCEPT
    # Пропускать новые, а так же уже инициированные и их дочерние соединения
    iptables -A OUTPUT -p all -m state —state NEW,ESTABLISHED,RELATED -j ACCEPT
    # Разрешить форвардинг для новых, а так же уже инициированных и их дочерних соединений
    iptables -A FORWARD -p all -m state —state NEW,ESTABLISHED,RELATED -j ACCEPT
    ###
    iptables -P INPUT DROP
    iptables -P OUTPUT DROP
    ####
    iptables -P FORWARD DROP

    ##*********************************************************************
    # Тут в принципе может и не надо этого всего но не помеха
    # вдруг какой модуль не подгружен или форвардинг не включен
    #echo «1″ > /proc/sys/net/ipv4/ip_forward
    echo «1″ > /proc/sys/net/ipv4/ip_dynaddr
    #modprobe iptable_nat
    #modprobe ip_conntrack_ftp
    #modprobe ip_nat_ftp

    # Объявление переменных
    IPT=»iptables»

    # Интерфейс который смотрит в интернет
    WAN=eth0

    # Локальная сеть
    LAN=eth1
    LAN_IP_RANGE=192.168.10.0/24
    LAN_IP2_RANGE=192.168.2.0/24

    # Очистка всех цепочек iptables
    $IPT -F
    $IPT -F -t nat
    $IPT -F -t mangle
    $IPT -X
    $IPT -t nat -X
    $IPT -t mangle -X

    # Закрываем изначально ВСЁ (т.е. изначально все что не разрешено — запрещено):
    $IPT -P INPUT DROP
    $IPT -P OUTPUT DROP
    $IPT -P FORWARD DROP

    # разрешаем локальный траффик для loopback и внутренней сети
    $IPT -A INPUT -i lo -j ACCEPT
    $IPT -A INPUT -i $LAN -j ACCEPT
    $IPT -A OUTPUT -o lo -j ACCEPT
    $IPT -A OUTPUT -o $LAN -j ACCEPT

    # Состояние ESTABLISHED говорит о том, что это не первый пакет в соединении.
    # Пропускать все уже инициированные соединения, а также дочерние от них
    $IPT -A INPUT -p all -m state —state ESTABLISHED,RELATED -j ACCEPT
    # Пропускать новые, а так же уже инициированные и их дочерние соединения
    $IPT -A OUTPUT -p all -m state —state NEW,ESTABLISHED,RELATED -j ACCEPT
    # Разрешить форвардинг для новых, а так же уже инициированных
    # и их дочерних соединений
    $IPT -A FORWARD -p all -m state —state NEW,ESTABLISHED,RELATED -j ACCEPT

    # Включаем фрагментацию пакетов. Необходимо из за разных значений MTU
    $IPT -I FORWARD -p tcp —tcp-flags SYN,RST SYN -j TCPMSS —clamp-mss-to-pmtu

    # Отбрасывать все пакеты, которые не могут быть идентифицированы
    # и поэтому не могут иметь определенного статуса.
    $IPT -A INPUT -m state —state INVALID -j DROP
    $IPT -A FORWARD -m state —state INVALID -j DROP

    # Приводит к связыванию системных ресурсов, так что реальный
    # обмен данными становится не возможным.
    $IPT -A INPUT -p tcp ! —syn -m state —state NEW -j DROP
    $IPT -A OUTPUT -p tcp ! —syn -m state —state NEW -j DROP

    # Разрешаем доступ из внутренней сети наружу
    $IPT -A FORWARD -i $LAN -o $WAN -j ACCEPT

    # Запрещаем доступ снаружи во внутреннюю сеть
    $IPT -A FORWARD -i $WAN -o $LAN -j REJECT

    # Маскарадинг
    $IPT -t nat -A POSTROUTING -o $WAN -s $LAN_IP_RANGE -j MASQUERADE
    $IPT -t nat -A POSTROUTING -o $WAN -s $LAN_IP2_RANGE -j MASQUERADE

    # Далее дано как пример открытие портов извне:
    # **********************************************************************
    # Открываем порт для ssh
    #$IPT -A INPUT -i $WAN -p tcp —dport 22 -j ACCEPT

    # Открытие портов для торрентов (такие же указать в torrent-клиенте)
    #$IPT -A INPUT -i $WAN -p tcp -m multiport —ports 49152:65535 -j ACCEPT

    # Открытие 443 порта
    $IPT -A INPUT -p tcp —dport 443 -j ACCEPT

    # Открываем 80 порт для веб сайтов
    $IPT -A INPUT -i $WAN -p tcp —dport 80 -j ACCEPT
    $IPT -A INPUT -i $WAN -p udp —dport 80 -j ACCEPT

    # Открытие портов для игровых серверов
    $IPT -A INPUT -i $WAN -p tcp —dport 27010:27030 -j ACCEPT
    $IPT -A INPUT -i $WAN -p udp —dport 27010:27030 -j ACCEPT

    # Открытие порта для голосового сервера Team Speak
    $IPT -A INPUT -i $WAN -p tcp —dport 9987 -j ACCEPT
    $IPT -A INPUT -i $WAN -p udp —dport 9987 -j ACCEPT
    # Открываем почтовые порты
    $IPT -A INPUT -i $WAN -p tcp —dport 25 -j ACCEPT
    $IPT -A INPUT -i $WAN -p udp —dport 25 -j ACCEPT
    $IPT -A INPUT -i $WAN -p tcp —dport 110 -j ACCEPT
    $IPT -A INPUT -i $WAN -p udp —dport 110 -j ACCEPT
    # **********************************************************************

    #
    ##iptables -A INPUT -i lo -j ACCEPT
    #iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
    #iptables -t nat -A POSTROUTING -o eth0 -s 192.168.2.0/24 -j MASQUERADE
    #iptables -t nat -A POSTROUTING -o eth0 -s 192.168.10.0/24 -j MASQUERADE
    #

  105. sergey :

    есть кабельный ввод интернета (оптоволоконка от провайдера) на этаж с кучей комнат. Стоит задача раздать интернет между комнатами, но чтоб в каждой комнате была своя подсеть. Как лучше реализовать?

  106. Зависит от того, что в наличии есть.
    Свичи с поддержкой вланов есть?

  107. sergey :

    в наличии обычные свичи и комп с установленным Debian 7

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

Написать комментарий