LINUX.ORG.RU

iptables, небольшая непонятка


0

0

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

Небольшая непонятка с iptables.
Имеем:
локальную сеть А.А.А.А/Х
1 подсеть сети А.А.А.А/Х - A1.A1.A1.A1/X1
остальные посети сети А.А.А.А/Х - обозначим их как A2.A2.A2.A2/X2

локальную сеть B.B.B.B/Y
подсети сети B.B.B.B/Y - обозначим их B2.B2.B2.B2/Y2

часть локальной сети которая имеет адреса в инете - C.C.C.C/Z

Интерфейсы eth0, ppp0

если ppp0 отключен то имеется доступ к подсети A1.A1.A1.A1/X1 (данный комп находится в ней) подсетям B2.B2.B2.B2/Y2 через eth0, к остальным сетям/подсетям доступа нет. Если ppp0 включен то имеется доступ ко всем сетям и подсетям через него.

Задача считать траффик, но при этом разделяя его как локальный и инет. Ко всем этим сетям траффик и скорость установлены как локальные, к инету - как инет, но адреса сети C.C.C.C/Z являются интернет-адресами.

Для подсчета я создал несколько цепочек, и непонятка вот в чем:
как мне задать условие "где интерфейс=ppp0 и адрес источника не пренадлежит сети А.А.А.А/Х или B.B.B.B/Y или C.C.C.C/Z"? одним правилом я так понял сделать это не получится а если писать тремя то получаем:

iptables -A FORWARD -i ppp0 ! -s А.А.А.А/Х -j chain-in
iptables -A FORWARD -i ppp0 ! -s B.B.B.B/Y -j chain-in
iptables -A FORWARD -i ppp0 ! -s C.C.C.C/Z -j chain-in

и например приходит пакет из интернета, с адреса 1.1.1.1, идет проверка:
пришел с интерфейса ppp0 ? - да
IP адрес пренадлежит сети А.А.А.А/Х? - нет
и он идет в цепочку chain-in, НО ведь он может быть и из сети B.B.B.B/Y и из C.C.C.C/Z и он при первой же проверке пойдет в цепочку, хотя не должен....

Вопрос - как сделать чтобы пакет прошел все эти 3 проверки и только потом пошел в цепочку chain-in? чтобы траффик из других сетей не засчитался как траффик из инета
дальше пакет

anonymous

Re: iptables, небольшая непонятка

1. Непонятно к какому интерфейсу какая сеть подключена.
2. ! пишется перед адресом, а не перед ключом.
3. Я сейчас не особо соображаю (НГ скоро, последний рабочий день был), но наверно можно тупо три цепочки создать:

iptables -A FORWARD -i ppp0 -s ! А.А.А.А/Х -j chain-in1
iptables -A chain-in1 -s ! B.B.B.B/Y -j chain-in2
iptables -A chain-in2 -s ! C.C.C.C/Z -j chain-in3

В двух условиях интерфейс убрал, потому как смысла в нем нет.

jackill ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.