URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID10
Нить номер: 4984
[ Назад ]

Исходное сообщение
"iptables и счетчики"

Отправлено uan , 22-Дек-11 11:52 
Здравствуйте.
Имеется ряд рабочих станций, с которых запрещён доступ в интернет.
Сайт компании находится на внешнем хостинге. Доступ к нему реализован правилом:
iptables -t nat -I POSTROUTING -m iprange --src-range 192.168.1.10-192.168.1.20 -d 195.184.xxx.xxx -j SNAT --to-source 195.184.yyy.yyy
Где 195.184.xxx.xxx - адрес веб-сервера, 195.184.yyy.yyy - адрес шлюза ЛВС.
На сайте расположены счетчики, типа mail.ru, rambler.ru, ...
А у них целые пулы адресов.
Вопрос. Как мне сделатьтак, чтобы пользователи ЛВС могли быстро открывать сайт компании? Чтобы не было задержки при соединении сайта с адресами счетчиков. Другими словами как мне узнать диапазон IP для каждого счетчика и прописать в iptables? Или как динамически можно преобразовать имя в ip для создания правила на лету?
Всем заранее спасибо.

Содержание

Сообщения в этом обсуждении
"iptables и счетчики"
Отправлено Andrey Mitrofanov , 22-Дек-11 12:35 
> Имеется ряд рабочих станций, с которых запрещён доступ в интернет.
> Сайт компании находится на внешнем хостинге. Доступ к нему реализован правилом:
> iptables -t nat -I POSTROUTING -m iprange --src-range 192.168.1.10-192.168.1.20 -d 195.184.xxx.xxx
> -j SNAT --to-source 195.184.yyy.yyy
> Чтобы не было задержки при соединении

Предлагаю

-t filter -I FORWARD -p tcp -m iprange --src-range 192.168.1.10-192.168.1.20 \! -d 195.184.xxx.xxx -j REJECT --reject-with tcp-reset


"iptables и счетчики"
Отправлено 1 , 22-Дек-11 12:41 
>[оверквотинг удален]
> -j SNAT --to-source 195.184.yyy.yyy
> Где 195.184.xxx.xxx - адрес веб-сервера, 195.184.yyy.yyy - адрес шлюза ЛВС.
> На сайте расположены счетчики, типа mail.ru, rambler.ru, ...
> А у них целые пулы адресов.
> Вопрос. Как мне сделатьтак, чтобы пользователи ЛВС могли быстро открывать сайт компании?
> Чтобы не было задержки при соединении сайта с адресами счетчиков. Другими
> словами как мне узнать диапазон IP для каждого счетчика и прописать
> в iptables? Или как динамически можно преобразовать имя в ip для
> создания правила на лету?
> Всем заранее спасибо.

я бы сделал что то подобное в отдельной цепочке переход в которую в которую по фильтру -m iprange --src-range 192.168.1.10-192.168.1.20 а в цепочке:
iptables -A check -d {локалка} -j RETURN
iptables -A check -d 195.184.xxx.xxx  -j RETURN
iptables -A check -p tcp -j REJECT --reject-with tcp-reset


"iptables и счетчики"
Отправлено uan , 22-Дек-11 14:51 
ОК.
Я тоже подумал про отдельную цепочку. Спасибо. Буду пробовать.

>[оверквотинг удален]
>> Чтобы не было задержки при соединении сайта с адресами счетчиков. Другими
>> словами как мне узнать диапазон IP для каждого счетчика и прописать
>> в iptables? Или как динамически можно преобразовать имя в ip для
>> создания правила на лету?
>> Всем заранее спасибо.
> я бы сделал что то подобное в отдельной цепочке переход в которую
> в которую по фильтру -m iprange --src-range 192.168.1.10-192.168.1.20 а в цепочке:
> iptables -A check -d {локалка} -j RETURN
> iptables -A check -d 195.184.xxx.xxx  -j RETURN
> iptables -A check -p tcp -j REJECT --reject-with tcp-reset


"iptables и счетчики"
Отправлено PavelR , 22-Дек-11 17:57 

> я бы сделал что то подобное в отдельной цепочке переход в которую
> в которую по фильтру -m iprange --src-range 192.168.1.10-192.168.1.20 а в цепочке:
> iptables -A check -d {локалка} -j RETURN

Вата. В плоской сети трафик локалки не будет проходить через рутер.
Указаний и намеков, что там много подсеток - нет. Правило - не нужно. Отдельные цепочки только ухудшат читаемость правил iptables.



"iptables и счетчики"
Отправлено PavelR , 22-Дек-11 17:53 

> Сайт компании находится на внешнем хостинге. Доступ к нему реализован правилом:
> iptables -t nat -I POSTROUTING -m iprange --src-range 192.168.1.10-192.168.1.20 -d 195.184.xxx.xxx
> -j SNAT --to-source 195.184.yyy.yyy

nat.POSTROUTING не предназначен для фильтрования.


Правильно делать так:

iptables -t nat -I POSTROUTING -s 192.168.0.0/16 -o ethX -j SNAT --to-source 195.184.yyy.yyy

Т.е. для всего трафика, выходящего через интерфейс провайдера делать нат.
В противном случае, трафик всё равно выходит в сторону провайдера, но с серым адресом отправителя - т.е. тупо засоряет каналы.

а уже в таблице filter - фильтровать:

#разрешить нужное:
iptables -t filter -I FORWARD -m iprange --src-range 192.168.1.10-192.168.1.20 -d 195.184.xxx.xxx -j ACCEPT

#запретить всё остальное, tcp - отдельно.
iptables -t filter -A FORWARD -s 192.168.0.0/16 -p tcp -j REJECT --reject-with tcp-reset
iptables -t filter -A FORWARD -s 192.168.0.0/16 -j REJECT --reject-with icmp-net-unreachable

И никаких отдельных цепочек не надо, не засоряйте список, не лишайте его понятности.