Iptables или что-то для перенаправления IP в шлюз (GNU / Linux) - PullRequest
0 голосов
/ 31 января 2012

Я пишу сценарии bash для трафика учетных записей на моем сетевом сервере:

WAN: eth1 -> Сервер GNU / Linux: eth0 -> Пользователи Сервер GNU / Linux использует squid, bind, QoS, mysql,lighttpd.

После того, как IP-адрес превышает установленную квоту, для этого IP-адреса (пользователя) также применяется новое правило QoS, при котором существует один «флаг», позволяющий определить, когда счетчик IP-адресов восстанавливается до нуля.

Некоторые IP-адреса и подсети работают без квот, другие группы ips / подсетей работают с новым QoS после превышения квоты, и теперь я хочу работать с третьей группой с перенаправлением после превышения квоты.

Когда IP-адрес превышаетустановленная квота весь http-трафик должен быть перенаправлен на хост (lighttpd, работающий на GNU / Linux) и DROP весь другой трафик, генерируемый для этого IP.В веб-сервере существует веб-страница с текстом: «Вы превысили суточную квоту трафика, подождите« х »часов или позвоните своему провайдеру, чтобы купить дополнительный пакет навигации» или что-то в этом роде.

Возможно использование цепочкиили как я могу это сделать?Большинство тем, которые я нашел в Интернете, связаны с блокировкой всего и созданием новой цепочки для выхода в Интернет (не работает для меня).И другие перенаправляют только IP по IP, но как я могу создать что-то, что «цепочка» и прикрепить IP-адреса, к которым я должен перенаправить, может после восстановления этих IP-адресов легко?

Спасибо за помощь и извините за мой плохой английский: S.

Ответы [ 2 ]

0 голосов
/ 31 января 2012

Обратите внимание, что сам iptables (ну, набор расширений xtables-addons, обеспечивающий quota2 ) уже может использовать магию сопоставления квот, и вы можете (пере) устанавливать значения через procfs, в сочетании с REDIRECT как @ resmon6говорит:

-t nat -s user1addr -m quota2 --name user1 ! --quota 0 -j REDIRECT...
-t nat -s user2addr -m quota2 --name user2 ! --quota 0 -j REDIRECT...

Синтаксис сейчас, пожалуй, немного странный (0 - это только начальное значение и не зависит от квоты времени выполнения test с участиемnegational !. Заметив это только сейчас, патч может сделать это, чтобы развернуть этот запутанный синтаксис в будущем).

0 голосов
/ 31 января 2012

Вы ищете что-то подобное?

iptables -t nat -A PREROUTING -s 192.168.100.66 -p tcp --dport 80 -j REDIRECT --to-ports 80
iptables -I INPUT 1 -i lo -s 192.168.100.66 -j ACCEPT
iptables -I INPUT 2 -i eth1 -d 192.168.100.66 -j DROP

Это перенаправит пакеты с 192.168.100.66 на порт 80 на локальный веб-сервер на интерфейсе обратной связи, разрешит этот разговор, а затем отклонит все остальные пакеты, являющиесяНа интерфейсе WAN маршрутизируется до 192.168.100.66.

Чтобы восстановить нормальное соединение, вам нужно удалить записи брандмауэра:

iptables -t nat -D PREROUTING -s 192.168.100.66 -p tcp --dport 80 -j REDIRECT --to-ports 80
iptables -D INPUT -i lo -s 192.168.100.66 -j ACCEPT
iptables -D INPUT -i eth1 -d 192.168.100.66 -j DROP
...