The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Настройка PPPOE-SERVER, NAT и Firewall под Linux. (nat firewall linux pppoe iptables)


<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>
Ключевые слова: nat, firewall, linux, pppoe, iptables,  (найти похожие документы)
From: Забудкин Лев Мирославович <zabudkin@yandex.ru> Newsgroups: email Date: Mon, 19 Dec 2003 14:31:37 +0000 (UTC) Subject: Настройка PPPOE-SERVER, NAT и Firewall под Linux. Настройка PPPOE-SERVER, NAT и Firewall под Linux. Редакция 1.0. 19.12.2003 Забудкин Лев Мирославович, г. Нижневартовск Примечание: Если у Вас еще не установлен pppoe-server, то взять его можно здесь: http://www.roaringpenguin.com/products/rp-pppoe/index.php В качестве Firewall'а будем использовать iptables. 1. Создаем главный скрипт ( Firewall и запуск pppoe сервера) ------------------------------------------------------------ Создайте на Вашей Linux машине файл с именем myinet и дайте право ему запускаться. Поместите в него следующие строчки и измените те, где об этом явно указано: #!/bin/sh function get_addr() { IFCONFIG='/sbin/ifconfig'; HEAD='head -2'; TAIL='tail -1'; CUT='cut -d: -f2'; IP=`$IFCONFIG $1 | $HEAD | $TAIL | awk '{print $2}' | $CUT`; echo $IP; } ### Укажите ниже интерфейс, через который Вы связываетесь с провайдером EXTDEV="ppp0" ### Укажите ниже интерфейс, через который Linux-машина подключена к локальной сети. PPPOEDEV="eth0" ### Укажите ниже сеть для PPPOE клиентов. INETWORKIP="192.168.100.0/255.255.255.0" ### Если Вы не желаете использовать PPPOE сервер, то укажите выше Вашу сеть, ### вместо 192.168.100.0/255.255.255.0 и перейдите к пункту N 4, а также укажите ### ниже интерфейс, через который Linux-машина подключена к локальной сети и ### расскоментируйте строчку. #INTDEV="eth0" ### ДАЛЬШЕ, В ПРИНЦИПЕ, НИЧЕГО МЕНЯТЬ НЕ ТРЕБУЕТСЯ EXTERNALIP=`get_addr $EXTDEV` ENETWORKIP=$EXTERNALIP+"/255.255.255.255" INTERNALIP=`get_addr $INTDEV` LOOPBACK="127.0.0.1" ANYWHERE="0.0.0.0/0" PORTS="1024:65535" INTDEV="ppp+" /sbin/depmod -a /sbin/modprobe ip_conntrack /sbin/modprobe ip_tables /sbin/modprobe iptable_filter /sbin/modprobe iptable_mangle /sbin/modprobe iptable_nat /sbin/modprobe ipt_LOG /sbin/modprobe ipt_limit /sbin/modprobe ipt_MASQUERADE /sbin/modprobe ipt_owner /sbin/modprobe ipt_REJECT /sbin/modprobe ip_conntrack_ftp /sbin/modprobe ip_conntrack_irc /sbin/modprobe ip_nat_ftp /sbin/modprobe ip_nat_irc echo 1 > /proc/sys/net/ipv4/ip_forward echo 1 > /proc/sys/net/ipv4/tcp_syncookies for file in /proc/sys/net/ipv4/conf/*/rp_filter; do echo 1 > $file done for file in /proc/sys/net/ipv4/conf/*/accept_redirects; do echo 0 > $file done for file in /proc/sys/net/ipv4/conf/*/accept_source_route; do echo 0 > $file done /sbin/iptables -F /sbin/iptables -F -t nat /sbin/iptables - N ALLOW_ICMP /sbin/iptables - N ALLOW_PORTS /sbin/iptables - N CHECK_FLAGS /sbin/iptables - N DENY_PORTS /sbin/iptables - N DST_EGRESS /sbin/iptables - N KEEP_STATE /sbin/iptables - N SRC_EGRESS # По умолчанию все входящие пакеты сбрасываем /sbin/iptables -P INPUT DROP /sbin/iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP /sbin/iptables -A INPUT -j ACCEPT -s $EXTERNALIP -d $ANYWHERE /sbin/iptables -A INPUT -j ACCEPT -s $ANYWHERE -d $ANYWHERE -I $INTDEV /sbin/iptables -A INPUT -j ACCEPT -s $ANYWHERE -d $ANYWHERE -i lo /sbin/iptables -A INPUT -j ACCEPT -s $ANYWHERE -d $ANYWHERE -i $EXTDEV -m state --state RELATED,ESTABLISHED /sbin/iptables -A INPUT -j ACCEPT -p icmp -s $ANYWHERE -d $ANYWHERE /sbin/iptables -A INPUT -j ACCEPT -p udp -s $INETWORKIP --sport 53 -d $ANYWHERE # По умолчанию все исходящие пакеты сбрасываем /sbin/iptables -P OUTPUT DROP /sbin/iptables -A OUTPUT -j ACCEPT -s $ANYWHERE -d $ANYWHERE -o $INTDEV /sbin/iptables -A OUTPUT -j ACCEPT -s $ANYWHERE -d $EXTERNALIP /sbin/iptables -A OUTPUT -j ACCEPT -s $ANYWHERE -d $ANYWHERE -o lo /sbin/iptables -A OUTPUT -j ACCEPT -s $ANYWHERE -d $ANYWHERE -o $EXTDEV -m state --state RELATED,ESTABLISHED /sbin/iptables -A OUTPUT -j ACCEPT -p udp -s $EXTERNALIP -d $ANYWHERE --dport 53 /sbin/iptables -A OUTPUT -j ACCEPT -p icmp -s $ANYWHERE -d $ANYWHERE /sbin/iptables -A OUTPUT -j ACCEPT -s $ANYWHERE -d $ANYWHERE -o $EXTDEV -m state --state RELATED,ESTABLISHED /sbin/iptables -P FORWARD ACCEPT /sbin/iptables -A FORWARD -j ACCEPT -s $ANYWHERE -d $ANYWHERE -i $INTDEV /sbin/iptables -A FORWARD -j ACCEPT -p icmp -s $ANYWHERE -d $ANYWHERE -i $INTDEV ### Здесь Вы можете в будущем разместить нужные Вам строки iptables, ### например редирект HTTP запросов на прокси сервер Squid. ## Маскарадинг клиентов /sbin/iptables -t nat -A POSTROUTING -j SNAT -s $INETWORKIP -d $ANYWHERE -o $EXTDEV --to $EXTERNALIP /sbin/iptables -t nat -A POSTROUTING -j MASQUERADE -s $INETWORKIP -d $ANYWHERE -o $EXTDEV ## Запуск PPPOE-SERVER killall -w -9 pppoe-server /usr/sbin/pppoe-server -I $PPPOEDEV -L $INTERNALIP 2. Настраиваем pppoe-server. ---------------------------- Откройте на редактирование файл /etc/ppp/pppoe-server, очистите его и вставьте следующие строки: # PPP options for the PPPoE server # LIC: GPL lock local require-chap default-mru default-asyncmap proxyarp ktune login lcp-echo-interval 20 lcp-echo-failure 2 ### НИЖЕ ВМЕСТО xxx.xxx.xxx.xxx ### УКАЖИТЕ DNS СЕРВЕР ВАШЕГО ПРОВАЙДЕРА. ### Если Вы хоть раз соединялись со своим провайдером, ### то его DNS сервер можно узнать из файла /etc/resolv.conf ms-dns xxx.xxx.xxx.xxx nobsdcomp noccp noendpoint noipdefault noipx novj receive-all 3. Заводим пользователей, указываем их пароли и IP адреса. ---------------------------------------------------------- Все эти данные содержатся в файле /etc/ppp/chap-secrets. Формат файла такой: lev * password 192.168.100.9 Добавьте эту строку в указанный Выше файл. Первое, это логин ( lev), далее звездочка (*), затем пароль ( password) и IP адрес, который будет выдан клиенту в случае успе шной авторизации через pppoe сервер, данный IP адрес (192.168.100.9) должен быть в сети, которая указанна в файле myinet в строчке INETWORKIP=... 4. Тестируем ------------ Еще раз убедимся, что мы вошли в интернет на linux-машине и на ней можно свободно гулять по просторам глобальной сети. Что ж, теперь запускаем файл myinet, идем на клиентскую машину, на ней ставим программное обеспечение pppoe клиента. Входим под логином ( lev) и паролем ( password). ..и Бороздим просторы сети Интернет :) 19.12.2003 Забудкин Лев Мирославович, г. Нижневартовск

<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>

Обсуждение [ Линейный режим | Показать все | RSS ]
  • 1.1, Alexey (?), 16:35, 15/03/2004 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А как трафик обсчитывать при соединении pppoe? Надо просто в виде, например, текстового файла, где напротив логина будет объем входящего трафика.
     
     
  • 2.2, Sanchez (?), 18:10, 06/05/2004 [^] [^^] [^^^] [ответить]  
  • +/
    Поставить какой-нибудь счетчик, например netams
     

  • 1.3, mike (??), 00:50, 15/05/2005 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Кто может сказать зачем в скрипте строки:
    sbin/iptables - N ALLOW_ICMP
    /sbin/iptables - N ALLOW_PORTS
    /sbin/iptables - N CHECK_FLAGS
    /sbin/iptables - N DENY_PORTS
    /sbin/iptables - N DST_EGRESS
    /sbin/iptables - N KEEP_STATE
    /sbin/iptables - N SRC_EGRESS
     
  • 1.4, mike (??), 00:55, 15/05/2005 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Кто может сказать как в скрипте избавиться от "ppp+"? А точнее сказать как запускать pppoe-server, чтобы строго задавать unit pppd?
    Скажем сеть ххх.ххх.123.0 - if ppp123
     
  • 1.5, Statiq (?), 20:35, 28/12/2005 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А у меня вот iptables не пашут. Что надо в ядро включать, чтобы они работали? Если включаю IP Filtering и прочую лабуду, результатом которой становится создание модуля 'ip_tables', то етот модуль не грузится. И если при этом пробовать подключаться к сети, то вылезает куча ошибок, кто-то там паникует и вообще жить нельзя, все это льется на все подключенные терминалы.

    Ну так вот вопрос, что надо включать в ядро для работы iptables и нет ли каких хитростей для ядер 2.6.14.5 и выше. :) Спасибс.

     
     
  • 2.10, БГ (?), 01:56, 27/02/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >А у меня вот iptables не пашут. Что надо в ядро включать,
    >чтобы они работали? Если включаю IP Filtering и прочую лабуду, результатом
    >которой становится создание модуля 'ip_tables', то етот модуль не грузится. И
    >если при этом пробовать подключаться к сети, то вылезает куча ошибок,
    >кто-то там паникует и вообще жить нельзя, все это льется на
    >все подключенные терминалы.
    >
    >Ну так вот вопрос, что надо включать в ядро для работы iptables
    >и нет ли каких хитростей для ядер 2.6.14.5 и выше. :)
    >Спасибс.

    У тебя ip_chains! Надо удалит их с кернела и загрузит ip-tables.
    Сделай ето :

    chkconfig --del ipchains
    chkconfig --add iptables
    ipchains -F
    service ipchains stop
    rmmod ipchains
    service iptables start


    Ето все - толко надо настроит фиревал с иптаблес :) - УДАЧА! - Вряд ли я побубду снова на етом форуме :(

     

  • 1.6, Mikalai (ok), 11:21, 08/03/2006 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Сначала доступ к серверу фильтровался по IP+MAC
    /sbin/iptables -t nat -P PREROUTING DROP
    /sbin/iptables -t nat -F PREROUTING

    /sbin/iptables -t nat -i eth1 -A PREROUTING -s 192.168.7.1 -m mac --mac-source 11:22:33:44:55:66 -j ACCEPT
    ....
    потом настроил PPPoE сервер, запустил указанный в статье файл. В chap-secrets ввел запись
    test *  test 192.168.100.1
    указанный пользователь не подключается к серверу...
    добавил на PREROUTING условие
    /sbin/iptables -t nat -i eth1 -A PREROUTING -s 192.168.100.1 -m mac --mac-source 11:22:33:44:55:66 -j ACCEPT

    пока не заменил самую верхнюю строчку у себя...
    /sbin/iptables -t nat -P PREROUTING ACCEPT

    не работал доступ к интернету. В самом файле myinet нету настроек, касающихся PREROUTING

    Как можно совместить проверку пароля и IP+MAC

     
  • 1.7, NUMBGUY (?), 22:20, 26/03/2006 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Такая штука, всё поставил... клиентская машина подключается на ура. Вот только как делаю ipconfig на клиенте, он мне выдаёт что адрес шлюза совпадает с его адресом :-( А самое страшное это то что этот ип который и присваевается и является шлюзом и есть  тот что прописывается в pap-secrets (((
     
  • 1.9, rydolf (?), 20:31, 31/01/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    помогите настроить РРРоЕ-сервер дляSUSU 10.1 выход через АДСЛ (провайдер дает динам.адрес)
    вход через спутник карта ску-стар2 и подсказать
    настройку билллинга по шагам куда в какой что записывать.например для FreeNibs.а то с пацанами решили дом .сеть провести решили добить сузи.
     
     
  • 2.11, Валерий (??), 13:43, 24/03/2008 [^] [^^] [^^^] [ответить]  
  • +/
    Такая же проблема:

    Пользователи соединяются, но шлюз по умолчанию равен ИП-адресу интерфейса а не ИП адресу PPPOE сервера...Как это и справить?

    ИП ПППоЕ-сервера 192.168.100.1
    ИП Клиентов - 192.168.100.0

    route print на винде:

    Dest       mask         Gate
    0.0.0.0   0.0.0.0  192.168.100.100

     

  • 1.12, anonymous (??), 19:14, 08/04/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    http://www.zabudkin.ru
    сайт автора
     
  • 1.13, Sachiel (?), 10:06, 31/01/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >Кто может сказать как в скрипте избавиться от "ppp+"? А точнее сказать как запускать pppoe-server, чтобы строго задавать unit pppd?
    >Скажем сеть ххх.ххх.123.0 - if ppp12

    /usr/sbin/pppd pty '/usr/sbin/pppoe -p /var/run/pppoe.conf-pppoe.pid.pppoe -I eth0 -T 80 -U -s    '    noipdefault noauth default-asyncmap defaultroute hide-password nodetach  mtu 1492 mru 1492 noaccomp noccp nobsdcomp nodeflate nopcomp novj novjccomp user АЫАЫ lcp-echo-interval 20 lcp-echo-failure 3 unit 0 logfile /var/log/pppd sync > /dev/null 2>&1

    Пример моего скрипта с сервака (подвешен вовсе в inittab на респаун)

     
  • 1.14, bega (?), 14:18, 16/03/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    для чайника подскажите пожалуйста как подробно настроить firewall пошаговою мы не знаем последовательность!
     
     
  • 2.15, zabudkin (ok), 00:00, 14/05/2009 [^] [^^] [^^^] [ответить]  
  • +/
    Скоро все объясню, ищу сейчас хостинг для zabudkin.ru , а то теми (чем пользовался) прожили мало времени, даже платные. Намучался вдоволь. Теперь все заново восстанавливать, а ведь сколько материалов потерялось за это время, очень жаль.
     

  • 1.16, Васька (??), 21:41, 21/02/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    идем на клиентскую машину, на ней
    ставим программное обеспечение pppoe клиента.

    что за клиент???допустим еа виндовс что ставить?

     
  • 1.17, arch (?), 21:28, 10/07/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Уважаемые хелп. при запуске файла myinet выдоет ошибку синтекса  ругается на скобку в начале "function get_addr()" зарание спасибо.
     

    игнорирование участников | лог модерирования

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Спонсоры:
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2021 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру