Перейти к содержимому
Калькуляторы

ipfw & iptales ,ipset

Добрый вечер уважаемые коллеги.

Помогите правильно построить правило для 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 не превычно, прошу помощи построить грамотно правило. Идея думаю ясна

Изменено пользователем roysbike

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

0) Используйте iptables-save / iptables-restore. Ваш скрипт читать невозможно.

1) Не оно? http://forum.nag.ru/forum/index.php?showtopic=92809

Попробуйте keepalive-timeout 0.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Да не особо. Дело в том , что

разницы в правилах нет, но почему при 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

Изменено пользователем roysbike

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

ну как же не должно ?? у вас же в прероутинге правило которое заворачивает все пакеты от pause на страничку паузы )

если хочется чтобы на 172.29.0.0/24 был доступ то поместите правило разрешения с дст 172.29.0.0/24 над правилом паузы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

ну как же не должно ?? у вас же в прероутинге правило которое заворачивает все пакеты от pause на страничку паузы )

если хочется чтобы на 172.29.0.0/24 был доступ то поместите правило разрешения с дст 172.29.0.0/24 над правилом паузы.

Попробую , спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

ну как же не должно ?? у вас же в прероутинге правило которое заворачивает все пакеты от 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

Изменено пользователем roysbike

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Спасибо за помощь! Проблема только с таблицей 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]

Изменено пользователем roysbike

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Изменено пользователем SABRE

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.