roysbike Опубликовано 21 марта, 2014 (изменено) · Жалоба Добрый вечер уважаемые коллеги. Помогите правильно построить правило для iptables , аналогично ipfw. Блокируем клиентов и редиректим их на страницу в зависимости от состояние нет денег/на паузе. IPFW рабочий конфиг Nginx слушает 127.0.0.1 и все запросы редиректит на http://my.ru #!/bin/sh ext="lagg0" int="vlan290" fwcmd="/sbin/ipfw" ${fwcmd} -f flush #table-7 = 172.29.0.0/24 и тд #Резрешаем по любому ходить клиентам на локальные ресурсы ${fwcmd} add allow all from $pppoe_net, $work_net to 'table(7)' ${fwcmd} add allow all from 'table(7)' to $pppoe_net, $work_net #no money # У кого нет бабла , перекидываем на страницу ${fwcmd} add fwd 127.0.0.1,8888 ip from 'table(2)' to any dst-port 80 via ng* ${fwcmd} add allow tcp from any 80 to 'table(2)' via ng* ${fwcmd} add deny all from any to 'table(2)' via ng* ${fwcmd} add deny all from 'table(2)' to any via ng* #Pause # Кто включил услугу пауза, на страницу , что у него пауза ${fwcmd} add fwd 127.0.0.1,8887 ip from 'table(4)' to any dst-port 80,8080,8081 via ng* ${fwcmd} add allow tcp from any 80,8080,8081 to 'table(4)' via ng* ${fwcmd} add deny all from any to 'table(4)' via ng* ${fwcmd} add deny all from 'table(4)' to any via ng* Теперь с iptables + ipset IPSET ipset -L в таблице debtors - должники , pause кто на паузе, тут все понятно. defaultnet - разрешаю локальные ресурсы по любому. Name: debtors Type: hash:ip Header: family inet hashsize 1024 maxelem 65536 Size in memory: 16504 References: 2 Members: Name: defaultnet Type: hash:net Header: family inet hashsize 1024 maxelem 65536 Size in memory: 16792 References: 2 Members: 172.29.0.0/24 Name: pause Type: hash:ip Header: family inet hashsize 1024 maxelem 65536 Size in memory: 16520 References: 2 Members: 172.30.100.1 IN_IFACE="bond1" IN_IFACE_290="vlan290" IN_IFACE_295="vlan295" OUT_IFACE="bond0" IPTABLES=`which iptables` IPSET="/usr/sbin/ipset" WEB_DEBTORS="172.29.0.4:80" WEB_PAUSE="172.29.0.4:81" TC=`which tc` case "start" in start) echo 1 > /proc/sys/net/ipv4/conf/bond0/proxy_arp echo 1 > /proc/sys/net/ipv4/ip_forward $IPTABLES -P INPUT DROP $IPTABLES -P OUTPUT ACCEPT $IPTABLES -P FORWARD ACCEPT $IPTABLES -F $IPTABLES -X $IPTABLES -t nat -F $IPTABLES -t mangle -F $IPTABLES -t mangle -X $IPTABLES -t filter -F $IPTABLES -t filter -X $IPTABLES -N bad_tcp_packets $IPTABLES -N tcp_packets $IPTABLES -N udp_packets $IPTABLES -N icmp_packets $IPTABLES -t filter -N blocking_udp $IPTABLES -t filter -N blocking_tcp $IPTABLES -A INPUT -i lo -j ACCEPT $IPTABLES -A OUTPUT -o lo -j ACCEPT $IPTABLES -A tcp_packets -p TCP -i $IN_IFACE_295 -s 172.29.5.0/24 --dport 22 -j ACCEPT $IPTABLES -A udp_packets -p UDP -i $IN_IFACE_295 -s 172.29.0.0/24 --dport 3799 -j ACCEPT $IPSET -N defaultnet nethash $IPSET -N debtors iphash $IPSET -N pause iphash #Debtors forwarding and block $IPTABLES -I FORWARD -p udp --dport 53 -j ACCEPT #разрешаем ходить на DNS $IPTABLES -I FORWARD -m set --match-set default src,dst -j ACCEPT #разрешаем всем таблицу default $IPTABLES -I FORWARD -m set --match-set default dst,src -j ACCEPT #разрешаем всем таблицу default $IPTABLES -t nat -I PREROUTING -i ppp+ -m set --match-set debtors src -p tcp --dport 80 -j DNAT --to-destination $WEB_DEBTORS $IPTABLES -t nat -I PREROUTING -i ppp+ -m set --match-set pause src -p tcp --dport 80 -j DNAT --to-destination $WEB_PAUSE $IPTABLES -A FORWARD -i ppp+ -m set --match-set debtors src -j DROP $IPTABLES -A FORWARD -i ppp+ -m set --match-set pause src -j DROP $IPTABLES -A icmp_packets -p ICMP -s 0/0 --icmp-type 0 -j ACCEPT $IPTABLES -A icmp_packets -p ICMP -s 0/0 --icmp-type 3 -j ACCEPT $IPTABLES -A icmp_packets -p ICMP -s 0/0 --icmp-type 4 -j ACCEPT $IPTABLES -A icmp_packets -p ICMP -s 0/0 --icmp-type 11 -j ACCEPT $IPTABLES -A icmp_packets -p ICMP -s 0/0 --icmp-type 12 -j ACCEPT $IPTABLES -A icmp_packets -p ICMP -s 0/0 --icmp-type 8 -j ACCEPT $IPTABLES -A INPUT -p TCP -j bad_tcp_packets $IPTABLES -A INPUT -p ALL -i +ppp -m state --state ESTABLISHED,RELATED -j ACCEPT $IPTABLES -A INPUT -p TCP -i +ppp -j tcp_packets $IPTABLES -A INPUT -p UDP -i +ppp -j udp_packets $IPTABLES -A INPUT -p ICMP -i +ppp -j icmp_packets $IPTABLES -A INPUT -p ALL -i $IN_IFACE -m state --state ESTABLISHED,RELATED -j ACCEPT $IPTABLES -A INPUT -p TCP -i $IN_IFACE -j tcp_packets $IPTABLES -A INPUT -p UDP -i $IN_IFACE -j udp_packets $IPTABLES -A INPUT -p ICMP -i $IN_IFACE -j icmp_packets $IPTABLES -A INPUT -p ALL -i $IN_IFACE_290 -m state --state ESTABLISHED,RELATED -j ACCEPT $IPTABLES -A INPUT -p TCP -i $IN_IFACE_290 -j tcp_packets $IPTABLES -A INPUT -p UDP -i $IN_IFACE_290 -j udp_packets $IPTABLES -A INPUT -p ICMP -i $IN_IFACE_290 -j icmp_packets $IPTABLES -A INPUT -p ALL -i $IN_IFACE_295 -m state --state ESTABLISHED,RELATED -j ACCEPT $IPTABLES -A INPUT -p TCP -i $IN_IFACE_295 -j tcp_packets $IPTABLES -A INPUT -p UDP -i $IN_IFACE_295 -j udp_packets $IPTABLES -A INPUT -p ICMP -i $IN_IFACE_295 -j icmp_packets $IPTABLES -A INPUT -p ALL -i $OUT_IFACE -m state --state ESTABLISHED,RELATED -j ACCEPT $IPTABLES -A INPUT -p TCP -i $OUT_IFACE -j tcp_packets $IPTABLES -A INPUT -p UDP -i $OUT_IFACE -j udp_packets $IPTABLES -A INPUT -p ICMP -i $OUT_IFACE -j icmp_packets ;; stop) ;; *) echo "Usage: start,stop" exit 1 ;; esac exit 0 Проблема в следующем . Когда заношу IP в debtors , то при запросе ya.ru и другие сайты ip которые не из 172.29.0.0/24 , редиректит без проблем, локальные сайт открывает. Если заношу IP в pause , то редирект срабатывает если обращаюсь к сети 172.29.0.0/24, хотя не должно. В linux не превычно, прошу помощи построить грамотно правило. Идея думаю ясна Изменено 21 марта, 2014 пользователем roysbike Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Abram Опубликовано 21 марта, 2014 · Жалоба 0) Используйте iptables-save / iptables-restore. Ваш скрипт читать невозможно. 1) Не оно? http://forum.nag.ru/forum/index.php?showtopic=92809 Попробуйте keepalive-timeout 0. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
roysbike Опубликовано 21 марта, 2014 (изменено) · Жалоба Да не особо. Дело в том , что разницы в правилах нет, но почему при PREROUTING для 81 , он не пускает на сеть 172.29.0.0/24 и делает редирект. ВОт собственно вопрос $IPTABLES -I FORWARD -m set --match-set default src,dst -j ACCEPT #разрешаем всем таблицу default $IPTABLES -I FORWARD -m set --match-set default dst,src -j ACCEPT #разрешаем всем таблицу default $IPTABLES -t nat -I PREROUTING -i ppp+ -m set --match-set debtors src -p tcp --dport 80 -j DNAT --to-destination 172.29.0.4:80 $IPTABLES -t nat -I PREROUTING -i ppp+ -m set --match-set pause src -p tcp --dport 80 -j DNAT --to-destination 172.29.0.4:81 $IPTABLES -A FORWARD -i ppp+ -m set --match-set debtors src -j DROP $IPTABLES -A FORWARD -i ppp+ -m set --match-set pause src -j DROP # Generated by iptables-save v1.4.12 on Sat Mar 22 01:25:43 2014 *mangle :PREROUTING ACCEPT [78855:19861396] :INPUT ACCEPT [975:60370] :FORWARD ACCEPT [77622:19756070] :OUTPUT ACCEPT [602:74095] :POSTROUTING ACCEPT [73188:19575005] COMMIT # Completed on Sat Mar 22 01:25:43 2014 # Generated by iptables-save v1.4.12 on Sat Mar 22 01:25:43 2014 *nat :PREROUTING ACCEPT [6266:358040] :INPUT ACCEPT [1:48] :OUTPUT ACCEPT [1:70] :POSTROUTING ACCEPT [5662:301274] -A PREROUTING -i ppp+ -p tcp -m set --match-set pause src -m tcp --dport 80 -j DNAT --to-destination 172.29.0.4:81 -A PREROUTING -i ppp+ -p tcp -m set --match-set debtors src -m tcp --dport 80 -j DNAT --to-destination 172.29.0.4:80 COMMIT # Completed on Sat Mar 22 01:25:43 2014 # Generated by iptables-save v1.4.12 on Sat Mar 22 01:25:43 2014 *filter :INPUT DROP [2:656] :FORWARD ACCEPT [29068:7750070] :OUTPUT ACCEPT [599:73639] :bad_tcp_packets - [0:0] :blocking_tcp - [0:0] :blocking_udp - [0:0] :icmp_packets - [0:0] :tcp_packets - [0:0] :udp_packets - [0:0] -A INPUT -i lo -j ACCEPT -A INPUT -p tcp -j bad_tcp_packets -A INPUT -i +ppp -m state --state RELATED,ESTABLISHED -j ACCEPT -A INPUT -i +ppp -p tcp -j tcp_packets -A INPUT -i +ppp -p udp -j udp_packets -A INPUT -i +ppp -p icmp -j icmp_packets -A INPUT -i bond1 -m state --state RELATED,ESTABLISHED -j ACCEPT -A INPUT -i bond1 -p tcp -j tcp_packets -A INPUT -i bond1 -p udp -j udp_packets -A INPUT -i bond1 -p icmp -j icmp_packets -A INPUT -i vlan290 -m state --state RELATED,ESTABLISHED -j ACCEPT -A INPUT -i vlan290 -p tcp -j tcp_packets -A INPUT -i vlan290 -p udp -j udp_packets -A INPUT -i vlan290 -p icmp -j icmp_packets -A INPUT -i vlan295 -m state --state RELATED,ESTABLISHED -j ACCEPT -A INPUT -i vlan295 -p tcp -j tcp_packets -A INPUT -i vlan295 -p udp -j udp_packets -A INPUT -i vlan295 -p icmp -j icmp_packets -A INPUT -i bond0 -m state --state RELATED,ESTABLISHED -j ACCEPT -A INPUT -i bond0 -p tcp -j tcp_packets -A INPUT -i bond0 -p udp -j udp_packets -A INPUT -i bond0 -p icmp -j icmp_packets -A FORWARD -i ppp+ -m set --match-set defaultnet dst,src -j ACCEPT -A FORWARD -i ppp+ -m set --match-set defaultnet src,dst -j ACCEPT -A FORWARD -p udp -m udp --dport 53 -j ACCEPT -A FORWARD -i ppp+ -m set --match-set debtors src -j DROP -A FORWARD -i ppp+ -m set --match-set pause src -j DROP -A OUTPUT -o lo -j ACCEPT -A icmp_packets -p icmp -m icmp --icmp-type 0 -j ACCEPT -A icmp_packets -p icmp -m icmp --icmp-type 3 -j ACCEPT -A icmp_packets -p icmp -m icmp --icmp-type 4 -j ACCEPT -A icmp_packets -p icmp -m icmp --icmp-type 11 -j ACCEPT -A icmp_packets -p icmp -m icmp --icmp-type 12 -j ACCEPT -A icmp_packets -p icmp -m icmp --icmp-type 8 -j ACCEPT -A tcp_packets -s 172.29.5.0/24 -i vlan295 -p tcp -m tcp --dport 22 -j ACCEPT -A udp_packets -s 172.29.0.0/24 -i vlan295 -p udp -m udp --dport 3799 -j ACCEPT COMMIT Изменено 21 марта, 2014 пользователем roysbike Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
martini Опубликовано 21 марта, 2014 · Жалоба ну как же не должно ?? у вас же в прероутинге правило которое заворачивает все пакеты от pause на страничку паузы ) если хочется чтобы на 172.29.0.0/24 был доступ то поместите правило разрешения с дст 172.29.0.0/24 над правилом паузы. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
roysbike Опубликовано 21 марта, 2014 · Жалоба ну как же не должно ?? у вас же в прероутинге правило которое заворачивает все пакеты от pause на страничку паузы ) если хочется чтобы на 172.29.0.0/24 был доступ то поместите правило разрешения с дст 172.29.0.0/24 над правилом паузы. Попробую , спасибо. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
roysbike Опубликовано 25 марта, 2014 (изменено) · Жалоба ну как же не должно ?? у вас же в прероутинге правило которое заворачивает все пакеты от pause на страничку паузы ) если хочется чтобы на 172.29.0.0/24 был доступ то поместите правило разрешения с дст 172.29.0.0/24 над правилом паузы. Попробую , спасибо. В конфиге скрипта у меня правило для 172.29.0.0/24 (ipset defaultnet) находится над preorouting-ом. $IPTABLES -P INPUT DROP $IPTABLES -P OUTPUT ACCEPT $IPTABLES -P FORWARD ACCEPT $IPTABLES -P INPUT DROP $IPTABLES -P OUTPUT ACCEPT $IPTABLES -P FORWARD ACCEPT $IPTABLES -F $IPTABLES -X $IPTABLES -t nat -F $IPTABLES -t mangle -F $IPTABLES -t mangle -X $IPTABLES -t filter -F $IPTABLES -t filter -X $IPTABLES -N bad_tcp_packets $IPTABLES -N tcp_packets $IPTABLES -N udp_packets $IPTABLES -N icmp_packets $IPTABLES -t filter -N blocking_udp $IPTABLES -t filter -N blocking_tcp $IPTABLES -A INPUT -i lo -j ACCEPT $IPTABLES -A OUTPUT -o lo -j ACCEPT $IPTABLES -I FORWARD -p udp --dport 53 -j ACCEPT #разрешаем ходить на DNS $IPTABLES -I FORWARD -o ppp+ -m set --match-set defaultnet src,dst -j ACCEPT #разрешаем всем таблицу defaultnet $IPTABLES -I FORWARD -o ppp+ -m set --match-set defaultnet dst,src -j ACCEPT #разрешаем всем таблицу defaultnet $IPTABLES -t nat -I PREROUTING -i ppp+ -m set --match-set debtors src -p tcp --dport 80 -j DNAT --to-destination $WEB_DEBTORS $IPTABLES -t nat -I PREROUTING -i ppp+ -m set --match-set pause src -p tcp --dport 80 -j DNAT --to-destination $WEB_PAUSE $IPTABLES -A icmp_packets -p ICMP -s 0/0 --icmp-type 0 -j ACCEPT $IPTABLES -A icmp_packets -p ICMP -s 0/0 --icmp-type 3 -j ACCEPT $IPTABLES -A icmp_packets -p ICMP -s 0/0 --icmp-type 4 -j ACCEPT $IPTABLES -A icmp_packets -p ICMP -s 0/0 --icmp-type 11 -j ACCEPT $IPTABLES -A icmp_packets -p ICMP -s 0/0 --icmp-type 12 -j ACCEPT $IPTABLES -A icmp_packets -p ICMP -s 0/0 --icmp-type 8 -j ACCEPT $IPTABLES -A INPUT -p TCP -j bad_tcp_packets $IPTABLES -A INPUT -p ALL -i +ppp -m state --state ESTABLISHED,RELATED -j ACCEPT $IPTABLES -A INPUT -p TCP -i +ppp -j tcp_packets $IPTABLES -A INPUT -p UDP -i +ppp -j udp_packets $IPTABLES -A INPUT -p ICMP -i +ppp -j icmp_packets $IPTABLES -A INPUT -p ALL -i $IN_IFACE -m state --state ESTABLISHED,RELATED -j ACCEPT $IPTABLES -A INPUT -p TCP -i $IN_IFACE -j tcp_packets $IPTABLES -A INPUT -p UDP -i $IN_IFACE -j udp_packets $IPTABLES -A INPUT -p ICMP -i $IN_IFACE -j icmp_packets $IPTABLES -A INPUT -p ALL -i $IN_IFACE_290 -m state --state ESTABLISHED,RELATED -j ACCEPT $IPTABLES -A INPUT -p TCP -i $IN_IFACE_290 -j tcp_packets $IPTABLES -A INPUT -p UDP -i $IN_IFACE_290 -j udp_packets $IPTABLES -A INPUT -p ICMP -i $IN_IFACE_290 -j icmp_packets $IPTABLES -A INPUT -p ALL -i $IN_IFACE_295 -m state --state ESTABLISHED,RELATED -j ACCEPT $IPTABLES -A INPUT -p TCP -i $IN_IFACE_295 -j tcp_packets $IPTABLES -A INPUT -p UDP -i $IN_IFACE_295 -j udp_packets $IPTABLES -A INPUT -p ICMP -i $IN_IFACE_295 -j icmp_packets $IPTABLES -A INPUT -p ALL -i $OUT_IFACE -m state --state ESTABLISHED,RELATED -j ACCEPT $IPTABLES -A INPUT -p TCP -i $OUT_IFACE -j tcp_packets $IPTABLES -A INPUT -p UDP -i $OUT_IFACE -j udp_packets $IPTABLES -A INPUT -p ICMP -i $OUT_IFACE -j icmp_packets iptable-save # Generated by iptables-save v1.4.12 on Tue Mar 25 09:42:30 2014 *mangle :PREROUTING ACCEPT [506:78802] :INPUT ACCEPT [250:14960] :FORWARD ACCEPT [256:63842] :OUTPUT ACCEPT [154:16800] :POSTROUTING ACCEPT [410:80642] COMMIT # Completed on Tue Mar 25 09:42:30 2014 # Generated by iptables-save v1.4.12 on Tue Mar 25 09:42:30 2014 *nat :PREROUTING ACCEPT [0:0] :INPUT ACCEPT [0:0] :OUTPUT ACCEPT [0:0] :POSTROUTING ACCEPT [10:520] [10:520] -A PREROUTING -i ppp+ -p tcp -m set --match-set pause src -m tcp --dport 80 -j DNAT --to-destination 172.29.0.4:81 [0:0] -A PREROUTING -i ppp+ -p tcp -m set --match-set debtors src -m tcp --dport 80 -j DNAT --to-destination 172.29.0.4:80 COMMIT # Completed on Tue Mar 25 09:42:30 2014 # Generated by iptables-save v1.4.12 on Tue Mar 25 09:42:30 2014 *filter :INPUT DROP [0:0] :FORWARD ACCEPT [193:47471] :OUTPUT ACCEPT [151:16344] :bad_tcp_packets - [0:0] :blocking_tcp - [0:0] :blocking_udp - [0:0] :icmp_packets - [0:0] :tcp_packets - [0:0] :udp_packets - [0:0] [0:0] -A INPUT -i lo -j ACCEPT [247:14840] -A INPUT -p tcp -j bad_tcp_packets [0:0] -A INPUT -i +ppp -m state --state RELATED,ESTABLISHED -j ACCEPT [0:0] -A INPUT -i +ppp -p tcp -j tcp_packets [0:0] -A INPUT -i +ppp -p udp -j udp_packets [0:0] -A INPUT -i +ppp -p icmp -j icmp_packets [0:0] -A INPUT -i bond1 -m state --state RELATED,ESTABLISHED -j ACCEPT [0:0] -A INPUT -i bond1 -p tcp -j tcp_packets [0:0] -A INPUT -i bond1 -p udp -j udp_packets [0:0] -A INPUT -i bond1 -p icmp -j icmp_packets [0:0] -A INPUT -i vlan290 -m state --state RELATED,ESTABLISHED -j ACCEPT [0:0] -A INPUT -i vlan290 -p tcp -j tcp_packets [0:0] -A INPUT -i vlan290 -p udp -j udp_packets [0:0] -A INPUT -i vlan290 -p icmp -j icmp_packets [247:14840] -A INPUT -i vlan295 -m state --state RELATED,ESTABLISHED -j ACCEPT [0:0] -A INPUT -i vlan295 -p tcp -j tcp_packets [0:0] -A INPUT -i vlan295 -p udp -j udp_packets [0:0] -A INPUT -i vlan295 -p icmp -j icmp_packets [0:0] -A INPUT -i bond0 -m state --state RELATED,ESTABLISHED -j ACCEPT [0:0] -A INPUT -i bond0 -p tcp -j tcp_packets [0:0] -A INPUT -i bond0 -p udp -j udp_packets [0:0] -A INPUT -i bond0 -p icmp -j icmp_packets [0:0] -A FORWARD -o ppp+ -m set --match-set defaultnet dst,src -j ACCEPT [63:16371] -A FORWARD -o ppp+ -m set --match-set defaultnet src,dst -j ACCEPT [0:0] -A FORWARD -p udp -m udp --dport 53 -j ACCEPT [0:0] -A OUTPUT -o lo -j ACCEPT [0:0] -A icmp_packets -p icmp -m icmp --icmp-type 0 -j ACCEPT [0:0] -A icmp_packets -p icmp -m icmp --icmp-type 3 -j ACCEPT [0:0] -A icmp_packets -p icmp -m icmp --icmp-type 4 -j ACCEPT [0:0] -A icmp_packets -p icmp -m icmp --icmp-type 11 -j ACCEPT [0:0] -A icmp_packets -p icmp -m icmp --icmp-type 12 -j ACCEPT [0:0] -A icmp_packets -p icmp -m icmp --icmp-type 8 -j ACCEPT [0:0] -A tcp_packets -s 172.29.5.0/24 -i vlan295 -p tcp -m tcp --dport 22 -j ACCEPT [0:0] -A udp_packets -s 172.29.0.0/24 -i vlan295 -p udp -m udp --dport 3799 -j ACCEPT COMMIT # Completed on Tue Mar 25 09:42:30 2014 Изменено 25 марта, 2014 пользователем roysbike Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Alex/AT Опубликовано 25 марта, 2014 · Жалоба 1. Причина редиректа: $IPTABLES -t nat -I PREROUTING -i ppp+ -m set --match-set debtors src -p tcp --dport 80 -j DNAT --to-destination $WEB_DEBTORS$IPTABLES -t nat -I PREROUTING -i ppp+ -m set --match-set pause src -p tcp --dport 80 -j DNAT --to-destination $WEB_PAUSE -> $IPTABLES -t nat -I PREROUTING -o ppp+ -m set --match-set defaultnet dst -j ACCEPT # не редиректим сеть назначения defaultnet $IPTABLES -t nat -I PREROUTING -i ppp+ -m set --match-set debtors src -p tcp --dport 80 -j DNAT --to-destination $WEB_DEBTORS $IPTABLES -t nat -I PREROUTING -i ppp+ -m set --match-set pause src -p tcp --dport 80 -j DNAT --to-destination $WEB_PAUSE 2. Не совсем верно разрешено ходить в defaultnet (разрешено только из defaultnet в defaultnet)? $IPTABLES -I FORWARD -o ppp+ -m set --match-set defaultnet src,dst -j ACCEPT #разрешаем всем таблицу defaultnet$IPTABLES -I FORWARD -o ppp+ -m set --match-set defaultnet dst,src -j ACCEPT #разрешаем всем таблицу defaultnet -> $IPTABLES -I FORWARD -o ppp+ -m set --match-set defaultnet src -j ACCEPT # разрешаем любой трафик от defaultnet к ppp+$IPTABLES -I FORWARD -i ppp+ -m set --match-set defaultnet dst -j ACCEPT # разрешаем любой трафик от ppp+ к defaultnet Не знаю, насколько это соответствует вашим требованиям, смотрите сами. То, что правила из п.2 выше, чем правила из п.1 - ничего не меняет, они в разных таблицах и цепочках. По теории замечу следующее: не пытайтесь как-то сопоставлять ipfw или pf, и iptables. В iptables именно таблицы и цепочки исполняются в строго определенном порядке, а уже внутри них - правила, строго сверху вниз: 1. Входящий трафик: PREROUTING, INPUT 2. Исходящий трафик: OUTPUT, POSTROUTING 3. Транзитный трафик: PREROUTING, FORWARD, POSTROUTING Порядок таблиц: raw (PREROUTING/OUTPUT), mangle (PREROUTING/OUTPUT/FORWARD/INPUT/POSTROUTING), nat (PREROUTING/OUTPUT/POSTROUTING, если еще не установлено соответствие для соединения), filter (OUTPUT/FORWARD/INPUT). Т.е. для транзита обычный путь следования будет: raw/PREROUTING, mangle/PREROUTING, nat/PREROUTING, mangle/FORWARD, filter/FORWARD, mangle/POSTROUTING, nat/POSTROUTING Вот здесь подробнее: http://www.iptables.info/en/structure-of-iptables.html Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
roysbike Опубликовано 15 апреля, 2014 (изменено) · Жалоба Спасибо за помощь! Проблема только с таблицей pause. Для каждой страницы у меня свой порт на веб сервере. Для 80 порта правила работают как надо, а для паузы редирект на 81 порт. Вот тут возникает проблема, при обращении к defaultnet таблице , происходит все равно редикт на 172.29.0.4:81. А должно пускать. Не пойму где ошибка code] $IPTABLES -t nat -I PREROUTING -i ppp+ -m set --match-set pause src -p tcp --dport 80 -j DNAT --to-destination 172.29.0.4:81 [/code] Изменено 15 апреля, 2014 пользователем roysbike Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
SABRE Опубликовано 15 апреля, 2014 (изменено) · Жалоба roysbike Вам Alex/AT уже правильно сказал, нужно вместо $IPTABLES -t nat -I PREROUTING -i ppp+ -m set --match-set debtors src -p tcp --dport 80 -j DNAT --to-destination $WEB_DEBTORS $IPTABLES -t nat -I PREROUTING -i ppp+ -m set --match-set pause src -p tcp --dport 80 -j DNAT --to-destination $WEB_PAUSE поставить $IPTABLES -t nat -A PREROUTING -i ppp+ -m set --match-set defaultnet dst -j ACCEPT $IPTABLES -t nat -A PREROUTING -i ppp+ -m set --match-set debtors src -p tcp --dport 80 -j DNAT --to-destination $WEB_DEBTORS $IPTABLES -t nat -A PREROUTING -i ppp+ -m set --match-set pause src -p tcp --dport 80 -j DNAT --to-destination $WEB_PAUSE а в форвард, точно как он написал: $IPTABLES -I FORWARD -o ppp+ -m set --match-set defaultnet src -j ACCEPT # разрешаем любой трафик от defaultnet к ppp+ $IPTABLES -I FORWARD -i ppp+ -m set --match-set defaultnet dst -j ACCEPT # разрешаем любой трафик от ppp+ к defaultnet Изменено 15 апреля, 2014 пользователем SABRE Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...