Форум русскоязычного сообщества Ubuntu


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: по мотивам статьи Debian роутер  (Прочитано 3451 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн dearfear

  • Автор темы
  • Новичок
  • *
  • Сообщений: 22
    • Просмотр профиля
по мотивам статьи Debian роутер
« : 31 Октября 2009, 15:29:10 »
Прочитал интересную статью http://www.opennet.ru/base/net/debian_router.txt.html сделал скрипт:
#!/bin/sh
                #Закоментированно, все что касается аськи, кто хочет может пустить ее напрямую из локалки,
                #но не рекомендую, накачают трафика юзеры.
                #Описываем переменные. Так файрвол будет более компактный, читаемый
                #и масштабируемый:
                SERVER1C="192.168.х.х"
                INET="eth1"
                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, то тем
                #самым мы лишаем провайдера одного из критериев определения того,
                #что подключение к Интернету разделяется несколькими компьютерами.
                #Для примера можно привести число 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

скрипт выполняется без ошибок, но вот незадача интернет приходит ко мне с интерфейса ppp0 (Мегафон GPRS) и почта не бегает в сети... что указывать переменной INETIP если ip адрес провайдер мне назначает из своей подсети  10.230.x.x  всегда понятное дело разный

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28511
    • Просмотр профиля
Re: по мотивам статьи Debian роутер
« Ответ #1 : 31 Октября 2009, 16:42:41 »
Не пользоваться этим скриптом. Вообще не пользоваться скриптами.
Для кого iptables-save/-restore придумали?
Начать с того, что тебе надо, что не надо. Потом нарисовать это на бумажке.
Распечатать схемку IPT. http://www.frozentux.net/iptables-tutorial/chunkyhtml/c962.html последний рисунок.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн dearfear

  • Автор темы
  • Новичок
  • *
  • Сообщений: 22
    • Просмотр профиля
Re: по мотивам статьи Debian роутер
« Ответ #2 : 31 Октября 2009, 17:40:50 »
Дело в том что этот скрипт и удобен тем что достаточно гибок. iptables я не считаю мегапонятной вещью, т.к. пока в голове не могу уложить всё это. А смысл моей сети такой:
Есть сервер (Ubuntu 9.04 server + GNOME) на нём: firebird (БД), squid(знаю, что маршрутизатор лучше отдельно но увы), dhcp3, SMB (файл шара). Сюда же приходит интернет через 3G модем через интерфейс ppp0, и он должен раздаваться в локалку на интерфейс eth0, собственно вот и все требования. Скажу сразу готовых решений не жду, но требуется помощь, может быть как то можно проще настроить данную сеть.
Просьба не писать советов типа man iptables и прочее, т.к. сейчас на это просто нет времени, сплю 6  часов в сутки.. :-[

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28511
    • Просмотр профиля
Re: по мотивам статьи Debian роутер
« Ответ #3 : 31 Октября 2009, 18:50:54 »
Для этого и дал ссылку. Там в картинках прописана работа IPT.
Для раздачи инета через шлюз на Ubuntu достаточно одной строки
-t nat -A POSTROUTING -o ppp0 -j MASQUERADE
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн dearfear

  • Автор темы
  • Новичок
  • *
  • Сообщений: 22
    • Просмотр профиля
Re: по мотивам статьи Debian роутер
« Ответ #4 : 01 Ноября 2009, 08:59:03 »
Отлично, вроде работает, но есть одно но squid не подхватывает похоже этот конфиг, только после его перезапуска (SQUID) на компьютерах появляется интернет, что делать ?  Почта не работает (SMTP POP по стандартным портам, FTP не работает.)
было сделано
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
« Последнее редактирование: 01 Ноября 2009, 17:22:17 от dearfear »

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28511
    • Просмотр профиля
Re: по мотивам статьи Debian роутер
« Ответ #5 : 01 Ноября 2009, 19:51:47 »
sudo iptables-save
в спойлер.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн dearfear

  • Автор темы
  • Новичок
  • *
  • Сообщений: 22
    • Просмотр профиля
Re: по мотивам статьи Debian роутер
« Ответ #6 : 02 Ноября 2009, 18:31:53 »
Хорошо, завтра попробую

Пользователь решил продолжить мысль 03 Ноября 2009, 08:51:31:
Всё - таблички сохраняются, но локальные компьютеры которые за шлюзом не могут получить почту по портам 110 25 не могут иметь доступ на ресурсы FTP по 21 порту, squid не подхватывает конфиг (его приходится перезапускать при входе в систему) ppp0 поднимается после входа в систему.
Ubuntu 9.04 Server + ubuntu-desktop
« Последнее редактирование: 03 Ноября 2009, 08:51:31 от dearfear »

 

Страница сгенерирована за 0.02 секунд. Запросов: 19.