The OpenNET Project / Index page

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

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Помогите разобраться с правилами при раздаче интернета"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Открытые системы на сервере (Маршрутизация, NAT / Linux)
Изначальное сообщение [ Отслеживать ]

"Помогите разобраться с правилами при раздаче интернета"  +/
Сообщение от lenkavov (ok) on 14-Ноя-12, 16:30 
Система Centos 6, но это наверное неважно.
Ситуация такая: есть сервер, на нем поднят vpn, к нему подключаются клиенты. Интерфейсы такие:
eth0:
IPADDR=195.5.5.5 - внешний и единственный реальный, на него же приходит интернет от провайдера.
NETMASK=255.255.255.224


Для подключения VPN-клиентов:
интерфейс ppp*
ip 10.10.5.1 - сам сервер, он же шлюз.
10.10.10.5.0\24 - адреса, раздаваемые клиентам.

конфиг iptables выглядит так:
---------------------------
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -i eth0 -p gre -j ACCEPT
-A INPUT -i eth0 -m tcp -p tcp --dport 1723 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
#
*nat
-A POSTROUTING -o eth0 -s 10.10.5.0/24 -j SNAT --to-source 195.5.5.5
#
COMMIT
----------------------
Открыты порты 22, 80, 1723, поскольку установлены сервера SSH, HTTP, VPN.

Задача такая: клиенты, подключенные через VPN, и имеющие адреса 10.10.5.0/24, должны попадать в интернет через 195.5.5.5. В прицнипе все работает, если из iptables полностью убрать *filter, оставить только *nat. Клиенты видят интернет нормально.
Если *filter не убирать, то трафик режется, клиенты не видят узлов в интернете.
Наверное в *filter надо дописать некоторые правила, но какие - не получается придумать, чтобы не ослабить защиту сервера.

Есть еще такой скрипт, который выполняется при подключении VPN:
-----------------------------
#!/bin/sh
PPTP_IF=$1                # Имя виртуального интерфейса ppp
PPTP_ADDR=$5              # Внутренний IP адрес клиента
LOCAL_NET_IF="eth0"       # внешний интерфейс нашего сервера

# разрешаем проходжение пакетов между локальной сетью и клиентом
iptables -A FORWARD -i ${PPTP_IF} -s ${PPTP_ADDR} -o ${LOCAL_NET_IF} -j ACCEPT
iptables -A FORWARD -i ${LOCAL_NET_IF} -d ${PPTP_ADDR} -o ${PPTP_IF} -j ACCEPT
# разрешаем входящие пакеты с нашего сервера к клиенту
iptables -A INPUT -i ${PPTP_IF} -j ACCEPT
----------------------------
но, к сожалению, результат тот же самый.

Подскажите пожалуйста, что придумать.

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Помогите разобраться с правилами при раздаче интернета"  –1 +/
Сообщение от PavelR (ok) on 14-Ноя-12, 17:31 

> Подскажите пожалуйста, что придумать.

придумывать нечего.

Надо читать больше, и думать, что и как работает. Анализировать результаты, исправлять ошибки, пробовать снова. Потом - анализировать результаты. И так - до достижения необходимой цели.


Вам сложно набрать iptables -nvL FORWARD после того, как подключился клиент, чтобы посмотреть, какие правила добавились?

Не хватает знаний добавить -j LOG перед -j REJECT чтобы посмотреть, что будет резаться?

Конечно, маны же почитать сложно, задумавшись над тем, для чего это всё написано-то, и как это можно применить..

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Помогите разобраться с правилами при раздаче интернета"  +/
Сообщение от lenkavov (ok) on 14-Ноя-12, 19:22 
Спасибо за подсказку про логгирование.
Сделала. Правила получились такими:
------------
# iptables -nvL FORWARD

    0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited
    0     0 ACCEPT     all  --  ppp0   eth0    10.10.5.100          0.0.0.0/0
    0     0 ACCEPT     all  --  eth0   ppp0    0.0.0.0/0            10.10.5.100
------------

А вот что в логе:
------------
Nov 15 05:01:08 root kernel: [FW FORWARD]:IN=ppp0 OUT=eth0 SRC=10.10.5.100 DST=195.239.111.166 LEN=60 TOS=0x00 PREC=0x00 TTL=63 ID=18705 DF PROTO=TCP SPT=53397 DPT=80 WINDOW=13600 RES=0x00 SYN URGP=0
------------

Не понимаю, что не так. Ведь в правиле:
IN ppp0
OUT eth0
SOURCE 10.10.5.100 (совпадает с адресом клиента)
DELSTNATION 0.0.0.0/0

В логе:
IN=ppp0
OUT=eth0
SRC=10.10.5.100
DST=195.239.111.166

Почему этот пакет был запрещен?

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "Помогите разобраться с правилами при раздаче интернета"  +/
Сообщение от PavelR (ok) on 14-Ноя-12, 19:36 
> Спасибо за подсказку про логгирование.
> Сделала. Правила получились такими:

потому что правила исполняются по порядку.

вариантов два:

либо менять политику по умолчанию в filter.FORWARD
либо выносить правила в отдельную цепочку

iptables -I FORWARD -i ppp+ -j PPP_IN
iptables -I FORWARD -o ppp+ -j PPP_OUT


а в скрипте соответственно

# разрешаем проходжение пакетов между локальной сетью и клиентом
iptables -A PPP_IN -i ${PPTP_IF} -s ${PPTP_ADDR} -o ${LOCAL_NET_IF} -j ACCEPT
iptables -A PPP_OUT -i ${LOCAL_NET_IF} -d ${PPTP_ADDR} -o ${PPTP_IF} -j ACCEPT


Но всё это громоздко и непродуманно. Еще и с INPUT надо что-то решать.

Зачем такое большое количество проверок?

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

4. "Помогите разобраться с правилами при раздаче интернета"  +/
Сообщение от PavelR (ok) on 14-Ноя-12, 19:45 

> Зачем такое большое количество проверок?

iptables -A PPP_IN -i ${PPTP_IF} -s ${PPTP_ADDR} -o ${LOCAL_NET_IF} -j ACCEPT

зачем идет проверка -o ? У вас есть интерфейс в локалку, куда вы не хотите никого пропускать?

iptables -A PPP_OUT -i ${LOCAL_NET_IF} -d ${PPTP_ADDR} -o ${PPTP_IF} -j ACCEPT

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

/sbin/ip ro add unreach 192.168.0.0/24  table main

Ну а если вы выдаете адреса и при этом эти же адреса висят на локальном интерфейсе этого же сервера, и вы не сделали никакой группировки, которая бы позволила вам прописать что-то типа

/sbin/ip ro add unreach 192.168.0.192/26  table main

где 192.168.0.192/26 это описание "диапазона" 192.168.0.192-192.168.0.255

- то вы ССЗБ.


Еще один момент:

iptables -A INPUT -i ${PPTP_IF} -j ACCEPT

Во первых, в чем смысл правила ?
Во-вторых, это же самое достигается одним фиксированным правилом (ну если вы конечно правила не меняете в зависимости от пользователя).

iptables -A INPUT -i ppp+ -j ACCEPT


Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

5. "Помогите разобраться с правилами при раздаче интернета"  +/
Сообщение от lenkavov (ok) on 14-Ноя-12, 20:13 
Лишние проверки - от незнания, приходится делать вещи не по своей специализации.

Спасибо за помощь. Всё получилось.
В итоге дополнительные скрипты удалила, в основной конфиг iptables добавила:

# разрешаем проходжение пакетов между локальной сетью и клиентом
-A FORWARD -i ppp+ -s 10.10.5.0/24 -o eth0 -j ACCEPT
-A FORWARD -i eth0 -d 10.10.5.0/24 -o ppp+ -j ACCEPT

Наверное даже так будет достаточно:
# разрешаем проходжение пакетов между локальной сетью и клиентом
-A FORWARD -i ppp+ -o eth0 -j ACCEPT
-A FORWARD -i eth0 -o ppp+ -j ACCEPT

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

6. "Помогите разобраться с правилами при раздаче интернета"  +/
Сообщение от PavelR (ok) on 14-Ноя-12, 20:25 
> Лишние проверки - от незнания, приходится делать вещи не по своей специализации.

Просто полюбопытствовать - какая ваша специализация ?

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

7. "Помогите разобраться с правилами при раздаче интернета"  +/
Сообщение от lenkavov (ok) on 14-Ноя-12, 20:30 
>> Лишние проверки - от незнания, приходится делать вещи не по своей специализации.
> Просто полюбопытствовать - какая ваша специализация ?

Документооборот. Lotus.

Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

8. "Помогите разобраться с правилами при раздаче интернета"  +/
Сообщение от pavel_simple (ok) on 15-Ноя-12, 16:23 
>>> Лишние проверки - от незнания, приходится делать вещи не по своей специализации.
>> Просто полюбопытствовать - какая ваша специализация ?
> Документооборот. Lotus.

круто

Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

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