1

Всем добрый вечер!

Столкнулся с торентами... Необходимо ограничить количество сессий для одного ай пи адреса.

Система Debian, версия ядра 2.6.18.

Подскажите как в Iptables обрезать сессии... для конкретного айпи. а для остальных ничего не блокировать. Компьютеры работают в сети через НАТ.

2

TCP сессия открывается SYN пакетом, вот их и надо поставить на подсчет с этого или на этот IP, а потом блокировать их при привышении.
Это делается через примерно такую конструкцию -m recent --rcheck --seconds 60 --hitcount 2 -j DROP, здесь допускается не более одного в течении минуты.

3 (24.10.2010 00:25:25 отредактировано antaeus)

iptables -t nat -I POSTROUTING -s %ip lan pc% -p tcp  -m iplimit --iplimit-above 3 -j REJECT
наверное как то так, тут ограничение на 3 соединения

4

А можно подробнее
А что значит %ip   и  pc%  ? Так в точности и нужно использовать или вместо них нужно что то вписывать?

I like Linux

5 (01.02.2011 23:34:40 отредактировано Kettler)

Например
iptables -t nat -I POSTROUTING -s 192.168.0.0/24 -p tcp  -m iplimit --iplimit-above 3 -j REJECT
Но я бы попробывал бы так
iptables -t nat -I PREROUTING -s 192.168.0.0/24 -p tcp  -m iplimit --iplimit-above 3 -j REJECT
Но это не есть хорошо
Лучше для отдельного ип просто закрыть все порты и открыть токо нужные

Ищу дополнительный заработок (удалёнка).
Пьянка без секса – признак алкоголизма.

6 (01.02.2011 23:52:56 отредактировано astalavista)

Так получается что если я хочу для отдельного ип ограничить количество tcp сессий до 10, то мне нужно сделать примерно так
iptables -t nat -I PREROUTING -s 192.168.0.1 -p tcp  -m iplimit --iplimit-above 10 -j REJECT

???

я так понял что правило Ваше ограничивает на подсеть 3 соединения...?

I like Linux

7

типо того надо ток проверить но ещё раз говорю это не есть хорошо

Ищу дополнительный заработок (удалёнка).
Пьянка без секса – признак алкоголизма.

8 (02.02.2011 00:00:39 отредактировано astalavista)

... а как будет хорошо?
чтобы просто для одного ип ограничивать количество сессий....

I like Linux

9

Смотря на что и для чего.

Ищу дополнительный заработок (удалёнка).
Пьянка без секса – признак алкоголизма.

10

Есть ип которые количесвом tcp соединений забивают канал и инета нет из-за них...

I like Linux

11

astalavista пишет:

Есть ип которые количесвом tcp соединений забивают канал и инета нет из-за них...

Забивают обычно тореннты и p2p сети.
Просто для начала надо закрыть все лишние порты и оставить ток необходимые.
Если дальше будут забивать надо смотреть чем забивают, тут лучше логирование.
Тут нескоко выходов или порты блокировать или по сайтам а насчёт ограниченний ссесий надо делать по портам (я так думаю не уверен что возможно ибо не было необходимости).

Ищу дополнительный заработок (удалёнка).
Пьянка без секса – признак алкоголизма.

12

А поидее вот так tcp до 15 сессий (не проверял).

iptables -A FORWARD -s 172.16.0.0/12 -p tcp --syn connlimit --connlimit-above 15 -j REJECT

Ищу дополнительный заработок (удалёнка).
Пьянка без секса – признак алкоголизма.

13

не ограничивает.  У меня клиент по nat ходит. Может это имеет значение...

I like Linux

14

ИМХО проще сделать политику для всех цепочек DROP, а потом в FORWARD открывать только тем IP которым можно наружу, и только те порты, которые им нужны, например 80, и только по тем протоколам которые используются TCP или/и UDP и всё.
У меня так и никаких проблем с торентами нет.

 Консоль:

/sbin/iptables -P FORWARD DROP
/sbin/iptables -A FORWARD -p tcp -s 192.169.0.22 -d 188.120.241.125 -m multiport --dport 80,443 -j ACCEPT
/sbin/iptables -A FORWARD -p udp -s 192.169.0.22 -d 188.120.241.125 -m multiport --dport 80,443 -j ACCEPT

IP -тут только для примера, подставьте свои.

Истина ускользает от тех кто отказывается её видеть обоими глазами.
Талантам нужно помогать, бездарности пробьются сами.
В Туле настолько суровые парни, что вместо пены для бритья, используют пену монтажную.
cat /broken/hands > /dev/null

15

Vadimsky пишет:

ИМХО проще сделать политику для всех цепочек DROP, а потом в FORWARD открывать только тем IP которым можно наружу, и только те порты, которые им нужны, например 80, и только по тем протоколам которые используются TCP или/и UDP и всё.
У меня так и никаких проблем с торентами нет.

 Консоль:

/sbin/iptables -P FORWARD DROP
/sbin/iptables -A FORWARD -p tcp -s 192.169.0.22 -d 188.120.241.125 -m multiport --dport 80,443 -j ACCEPT
/sbin/iptables -A FORWARD -p udp -s 192.169.0.22 -d 188.120.241.125 -m multiport --dport 80,443 -j ACCEPT

IP -тут только для примера, подставьте свои.

53 порт забыл)

Ищу дополнительный заработок (удалёнка).
Пьянка без секса – признак алкоголизма.

16

Так не получается. торенты выдь разные порты используют, и если их разрешить то на количество соединений это никак не отобраиться. Получается что нет никакого решения для этого вопроса? Что бы определенному ip адресу клиента ограничить количество соединений ?

I like Linux

17

Чего-то не туда ушли. Закрытие портов к ограничению торрентов по нагрузке в сети никак проблему не решает, разве что радикально, т.е. отсутствию торрента.
Ограничить количество соединений можно средствами iptables, как уже было сказано. Но это окончательно не решит проблему нагрузки на канал, т.к. его можно нагрузить и одним соединением, тогда в помощь tc, т.е. шейпер.

18

Шейпер стоит! Но шейпер ограничивает скорость! Я понимаю что средствами iptables возможно это как то решить. Но как? Так как торент могут ставить на скачку по 20 штук сразу и это то и забивает канал из-за количества соединений!

I like Linux

19

astalavista пишет:

Шейпер стоит! Но шейпер ограничивает скорость! Я понимаю что средствами iptables возможно это как то решить. Но как? Так как торент могут ставить на скачку по 20 штук сразу и это то и забивает канал из-за количества соединений!

Сначала найди проблему а потом решай

Ищу дополнительный заработок (удалёнка).
Пьянка без секса – признак алкоголизма.

20

a-x пишет:

разве что радикально

Конечно радикально.
Отрубил торенты и можно спокойно спать. Пусть дома качают.

Истина ускользает от тех кто отказывается её видеть обоими глазами.
Талантам нужно помогать, бездарности пробьются сами.
В Туле настолько суровые парни, что вместо пены для бритья, используют пену монтажную.
cat /broken/hands > /dev/null

21

Vadimsky пишет:
a-x пишет:

разве что радикально

Конечно радикально.
Отрубил торенты и можно спокойно спать. Пусть дома качают.

торент тоже вещь хитрая  smile

Ищу дополнительный заработок (удалёнка).
Пьянка без секса – признак алкоголизма.

22 (05.02.2011 11:02:42 отредактировано a-x)

astalavista пишет:

Шейпер стоит! Но шейпер ограничивает скорость! Я понимаю что средствами iptables возможно это как то решить. Но как? Так как торент могут ставить на скачку по 20 штук сразу и это то и забивает канал из-за количества соединений!

Ну, так сказано, что соединение устанавливается SYN пакетом, вот их и ограничивайте. -m conntrack --ctstate NEW
Как, тут кому чего больше подходит - limit, recent.

Н.р.

iptables -A torrent -m recent --update --seconds 600 --hitcount 3 -j DROP
iptables -A torrent -m recent --set -j ACCEPT

iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m conntrack --ctstate NEW -p tcp --dport [список портов] -j ACCEPT
iptables -A FORWARD -m conntrack --ctstate NEW -p tcp  -j torrent

Получается, мы не ограничиваем уже установленные соединения, скорость пусть шейпер режет, также мы не ограничванием соединения
к стандартным сервисам, типа веб, фтп и т.д., а остальные новые соединения отправляем в цепочку  torrent, которая в данном случае разрешит не более двух новых соединений за 10 минут.

23

... так это получается применяется к общему потоку. А как, чтобы это можно было сделать определенному ip ? к примеру 192.168.0.2...

I like Linux

24

astalavista пишет:

... так это получается применяется к общему потоку. А как, чтобы это можно было сделать определенному ip ? к примеру 192.168.0.2...

iptables -A FORWARD -m conntrack --ctstate NEW -s 192.168.0.2 -p tcp  -j torrent

25

Простите за безграмотность. Я немного не понял, мне для каждого ip нужно добавлять первые четыре строки и потом для каждого строку с ip ?

iptables -A torrent -m recent --update --seconds 600 --hitcount 3 -j DROP
iptables -A torrent -m recent --set -j ACCEPT
iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m conntrack --ctstate NEW -p tcp --dport 80 443 53 -j ACCEPT

iptables -A FORWARD -m conntrack --ctstate NEW -s 192.168.0.2 -p tcp  -j torrent
iptables -A FORWARD -m conntrack --ctstate NEW -s 192.168.0.3 -p tcp  -j torrent
iptables -A FORWARD -m conntrack --ctstate NEW -s 192.168.0.4 -p tcp  -j torrent
...
iptables -A FORWARD -m conntrack --ctstate NEW -s 192.168.0.10 -p tcp  -j torrent

Так а то чту у меня клиенты ходят через NAT и я ограничиваю скорость через htb для каждого, то у меня путаница какая то получается?
Прошу подскажите поточнее, я не сильно разбираюсь в iptables и оно мне с большим трудом дается.
Спасибо!

I like Linux

26

astalavista пишет:

Простите за безграмотность. Я немного не понял, мне для каждого ip нужно добавлять первые четыре строки и потом для каждого строку с ip ?

Первые 4 строки один раз добавляются.

А дальше для каждого ип нужно завернуть проверку в цепочку torrent

Т.е. вот эту строчку повторять для каждого ип

 Консоль:
iptables -A FORWARD -m conntrack --ctstate NEW -s <ip адрес клиента> -p tcp  -j torrent

27

astalavista зря! закрой просто все лишние порты и всё.

Ищу дополнительный заработок (удалёнка).
Пьянка без секса – признак алкоголизма.

28

elve пишет:

Первые 4 строки один раз добавляются.

А дальше для каждого ип нужно завернуть проверку в цепочку torrent

Т.е. вот эту строчку повторять для каждого ип

...а через nat пусть тоже будет пробрасываться?
Получается что через nat пусть ходит и через forward тоже?

I like Linux

29

iptables -S выдает у меня сечас это.

-P INPUT DROP
-P FORWARD DROP
-P OUTPUT ACCEPT
-N DMZ_INET_FORWARD_CHAIN
-N DMZ_INPUT_CHAIN
-N DMZ_LAN_FORWARD_CHAIN
-N EXT_ICMP_FLOOD_CHAIN
-N EXT_INPUT_CHAIN
-N EXT_OUTPUT_CHAIN
-N HOST_BLOCK
-N INET_DMZ_FORWARD_CHAIN
-N LAN_INET_FORWARD_CHAIN
-N LAN_INPUT_CHAIN
-N MAC_FILTER
-N RESERVED_NET_CHK
-N SPOOF_CHK
-N UPNP_FORWARD
-N VALID_CHK
-A INPUT -i lo -j ACCEPT 
-A INPUT -m state --state ESTABLISHED -j ACCEPT 
-A INPUT -p tcp -m state --state RELATED -m tcp --dport 1024:65535 -j ACCEPT 
-A INPUT -p udp -m state --state RELATED -m udp --dport 1024:65535 -j ACCEPT 
-A INPUT -p icmp -m state --state RELATED -j ACCEPT 
-A INPUT -j HOST_BLOCK 
-A INPUT -i eth2 -j MAC_FILTER 
-A INPUT -j SPOOF_CHK 
-A INPUT -i eth0 -j VALID_CHK 
-A INPUT -i eth0 -p ! icmp -m state --state NEW -j EXT_INPUT_CHAIN 
-A INPUT -i eth0 -p icmp -m state --state NEW -m limit --limit 60/sec --limit-burst 100 -j EXT_INPUT_CHAIN 
-A INPUT -i eth0 -p icmp -m state --state NEW -j EXT_ICMP_FLOOD_CHAIN 
-A INPUT -i eth2 -j LAN_INPUT_CHAIN 
-A INPUT -m limit --limit 1/sec -j LOG --log-prefix "Dropped INPUT packet: " --log-level 6 
-A INPUT -j DROP 
-A FORWARD -i lo -j ACCEPT 
-A FORWARD -o eth0 -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu 
-A FORWARD -m state --state ESTABLISHED -j ACCEPT 
-A FORWARD -p tcp -m state --state RELATED -m tcp --dport 1024:65535 -j ACCEPT 
-A FORWARD -p udp -m state --state RELATED -m udp --dport 1024:65535 -j ACCEPT 
-A FORWARD -p icmp -m state --state RELATED -j ACCEPT 
-A FORWARD -j HOST_BLOCK 
-A FORWARD -i eth2 -j MAC_FILTER 
-A FORWARD -i eth0 -o ! eth0 -j UPNP_FORWARD 
-A FORWARD -j SPOOF_CHK 
-A FORWARD -i eth0 -j VALID_CHK 
-A FORWARD -i eth2 -o eth2 -j ACCEPT 
-A FORWARD -i eth2 -o eth0 -j LAN_INET_FORWARD_CHAIN 
-A FORWARD -m limit --limit 1/min --limit-burst 3 -j LOG --log-prefix "Dropped FORWARD packet: " --log-level 6 
-A FORWARD -j DROP 
-A OUTPUT -o eth0 -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu 
-A OUTPUT -m state --state ESTABLISHED -j ACCEPT 
-A OUTPUT -j HOST_BLOCK 
-A OUTPUT -f -m limit --limit 3/min -j LOG --log-prefix "FRAGMENTED PACKET (OUT): " --log-level 6 
-A OUTPUT -f -j DROP 
-A OUTPUT -o eth0 -j EXT_OUTPUT_CHAIN 
-A EXT_ICMP_FLOOD_CHAIN -p icmp -m icmp --icmp-type 8 -m limit --limit 12/hour --limit-burst 1 -j LOG --log-prefix "ICMP-request(ping) flood: " --log-level 6 
-A EXT_ICMP_FLOOD_CHAIN -p icmp -m icmp --icmp-type 8 -j DROP 
-A EXT_ICMP_FLOOD_CHAIN -p icmp -m icmp --icmp-type 3 -m limit --limit 12/hour --limit-burst 1 -j LOG --log-prefix "ICMP-unreachable flood: " --log-level 6 
-A EXT_ICMP_FLOOD_CHAIN -p icmp -m icmp --icmp-type 3 -j DROP 
-A EXT_ICMP_FLOOD_CHAIN -p icmp -m icmp --icmp-type 4 -m limit --limit 12/hour --limit-burst 1 -j LOG --log-prefix "ICMP-source-quench flood: " --log-level 6 
-A EXT_ICMP_FLOOD_CHAIN -p icmp -m icmp --icmp-type 4 -j DROP 
-A EXT_ICMP_FLOOD_CHAIN -p icmp -m icmp --icmp-type 11 -m limit --limit 12/hour --limit-burst 1 -j LOG --log-prefix "ICMP-time-exceeded flood: " --log-level 6 
-A EXT_ICMP_FLOOD_CHAIN -p icmp -m icmp --icmp-type 11 -j DROP 
-A EXT_ICMP_FLOOD_CHAIN -p icmp -m icmp --icmp-type 12 -m limit --limit 12/hour --limit-burst 1 -j LOG --log-prefix "ICMP-param.-problem flood: " --log-level 6 
-A EXT_ICMP_FLOOD_CHAIN -p icmp -m icmp --icmp-type 12 -j DROP 
-A EXT_ICMP_FLOOD_CHAIN -p icmp -m limit --limit 12/hour --limit-burst 1 -j LOG --log-prefix "ICMP(other) flood: " --log-level 6 
-A EXT_ICMP_FLOOD_CHAIN -p icmp -j DROP 
-A EXT_INPUT_CHAIN -p tcp -m tcp --dport 0 -m limit --limit 6/hour --limit-burst 1 -j LOG --log-prefix "TCP port 0 OS fingerprint: " --log-level 6 
-A EXT_INPUT_CHAIN -p udp -m udp --dport 0 -m limit --limit 6/hour --limit-burst 1 -j LOG --log-prefix "UDP port 0 OS fingerprint: " --log-level 6 
-A EXT_INPUT_CHAIN -p tcp -m tcp --dport 0 -j DROP 
-A EXT_INPUT_CHAIN -p udp -m udp --dport 0 -j DROP 
-A EXT_INPUT_CHAIN -p tcp -m tcp --sport 0 -m limit --limit 6/hour -j LOG --log-prefix "TCP source port 0: " --log-level 6 
-A EXT_INPUT_CHAIN -p udp -m udp --sport 0 -m limit --limit 6/hour -j LOG --log-prefix "UDP source port 0: " --log-level 6 
-A EXT_INPUT_CHAIN -p tcp -m tcp --sport 0 -j DROP 
-A EXT_INPUT_CHAIN -p udp -m udp --sport 0 -j DROP 
-A EXT_INPUT_CHAIN -p udp -m udp --sport 67 --dport 68 -j ACCEPT 
-A EXT_INPUT_CHAIN -p icmp -m icmp --icmp-type 8 -m limit --limit 3/min --limit-burst 1 -j LOG --log-prefix "ICMP-request: " --log-level 6 
-A EXT_INPUT_CHAIN -p icmp -m icmp --icmp-type 3 -m limit --limit 12/hour --limit-burst 1 -j LOG --log-prefix "ICMP-unreachable: " --log-level 6 
-A EXT_INPUT_CHAIN -p icmp -m icmp --icmp-type 4 -m limit --limit 12/hour --limit-burst 1 -j LOG --log-prefix "ICMP-source-quench: " --log-level 6 
-A EXT_INPUT_CHAIN -p icmp -m icmp --icmp-type 11 -m limit --limit 12/hour --limit-burst 1 -j LOG --log-prefix "ICMP-time-exceeded: " --log-level 6 
-A EXT_INPUT_CHAIN -p icmp -m icmp --icmp-type 12 -m limit --limit 12/hour --limit-burst 1 -j LOG --log-prefix "ICMP-param.-problem: " --log-level 6 
-A EXT_INPUT_CHAIN -p tcp -m tcp --dport 1024:65535 ! --tcp-flags FIN,SYN,RST,ACK SYN -m limit --limit 3/min -j LOG --log-prefix "Stealth scan (UNPRIV)?: " --log-level 6 
-A EXT_INPUT_CHAIN -p tcp -m tcp --dport 0:1023 ! --tcp-flags FIN,SYN,RST,ACK SYN -m limit --limit 3/min -j LOG --log-prefix "Stealth scan (PRIV)?: " --log-level 6 
-A EXT_INPUT_CHAIN -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -j DROP 
-A EXT_INPUT_CHAIN -p tcp -m tcp --dport 0:1023 -m limit --limit 6/min --limit-burst 2 -j LOG --log-prefix "Connection attempt (PRIV): " --log-level 6 
-A EXT_INPUT_CHAIN -p udp -m udp --dport 0:1023 -m limit --limit 6/min --limit-burst 2 -j LOG --log-prefix "Connection attempt (PRIV): " --log-level 6 
-A EXT_INPUT_CHAIN -p tcp -m tcp --dport 1024:65535 -m limit --limit 6/min --limit-burst 2 -j LOG --log-prefix "Connection attempt (UNPRIV): " --log-level 6 
-A EXT_INPUT_CHAIN -p udp -m udp --dport 1024:65535 -m limit --limit 6/min --limit-burst 2 -j LOG --log-prefix "Connection attempt (UNPRIV): " --log-level 6 
-A EXT_INPUT_CHAIN -p tcp -j DROP 
-A EXT_INPUT_CHAIN -p udp -j DROP 
-A EXT_INPUT_CHAIN -p icmp -j DROP 
-A EXT_INPUT_CHAIN -m limit --limit 1/min -j LOG --log-prefix "Other-IP connection attempt: " --log-level 6 
-A EXT_INPUT_CHAIN -j DROP 
-A EXT_OUTPUT_CHAIN -j ACCEPT 
-A LAN_INET_FORWARD_CHAIN -p icmp -m icmp --icmp-type 8 -m limit --limit 20/sec --limit-burst 100 -j ACCEPT 
-A LAN_INET_FORWARD_CHAIN -p icmp -m icmp --icmp-type 8 -m limit --limit 3/min --limit-burst 1 -j LOG --log-prefix "ICMP-request: " --log-level 6 
-A LAN_INET_FORWARD_CHAIN -p icmp -m icmp --icmp-type 8 -j DROP 
-A LAN_INET_FORWARD_CHAIN -j ACCEPT 
-A LAN_INPUT_CHAIN -p icmp -m icmp --icmp-type 8 -m limit --limit 20/sec --limit-burst 100 -j ACCEPT 
-A LAN_INPUT_CHAIN -p icmp -m icmp --icmp-type 8 -m limit --limit 3/min --limit-burst 1 -j LOG --log-prefix "ICMP-request: " --log-level 6 
-A LAN_INPUT_CHAIN -p icmp -m icmp --icmp-type 8 -j DROP 
-A LAN_INPUT_CHAIN -j ACCEPT 
-A RESERVED_NET_CHK -s 10.0.0.0/8 -m limit --limit 1/min --limit-burst 1 -j LOG --log-prefix "Class A address: " --log-level 6 
-A RESERVED_NET_CHK -s 172.16.0.0/12 -m limit --limit 1/min --limit-burst 1 -j LOG --log-prefix "Class B address: " --log-level 6 
-A RESERVED_NET_CHK -s 192.168.0.0/16 -m limit --limit 1/min --limit-burst 1 -j LOG --log-prefix "Class C address: " --log-level 6 
-A RESERVED_NET_CHK -s 169.254.0.0/16 -m limit --limit 1/min --limit-burst 1 -j LOG --log-prefix "Class M$ address: " --log-level 6 
-A RESERVED_NET_CHK -s 10.0.0.0/8 -j DROP 
-A RESERVED_NET_CHK -s 172.16.0.0/12 -j DROP 
-A RESERVED_NET_CHK -s 192.168.0.0/16 -j DROP 
-A RESERVED_NET_CHK -s 169.254.0.0/16 -j DROP 
-A SPOOF_CHK -s 192.168.1.0/24 -i eth2 -j RETURN 
-A SPOOF_CHK -s 192.168.1.0/24 -m limit --limit 3/min -j LOG --log-prefix "Spoofed packet: " --log-level 6 
-A SPOOF_CHK -s 192.168.1.0/24 -j DROP 
-A SPOOF_CHK -j RETURN 
-A VALID_CHK -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,PSH,URG -m limit --limit 3/min -j LOG --log-prefix "Stealth XMAS scan: " --log-level 6 
-A VALID_CHK -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,ACK,URG -m limit --limit 3/min -j LOG --log-prefix "Stealth XMAS-PSH scan: " --log-level 6 
-A VALID_CHK -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -m limit --limit 3/min -j LOG --log-prefix "Stealth XMAS-ALL scan: " --log-level 6 
-A VALID_CHK -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN -m limit --limit 3/min -j LOG --log-prefix "Stealth FIN scan: " --log-level 6 
-A VALID_CHK -p tcp -m tcp --tcp-flags SYN,RST SYN,RST -m limit --limit 3/min -j LOG --log-prefix "Stealth SYN/RST scan: " --log-level 6 
-A VALID_CHK -p tcp -m tcp --tcp-flags FIN,SYN FIN,SYN -m limit --limit 3/min -j LOG --log-prefix "Stealth SYN/FIN scan(?): " --log-level 6 
-A VALID_CHK -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -m limit --limit 3/min -j LOG --log-prefix "Stealth Null scan: " --log-level 6 
-A VALID_CHK -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,PSH,URG -j DROP 
-A VALID_CHK -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,ACK,URG -j DROP 
-A VALID_CHK -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j DROP 
-A VALID_CHK -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN -j DROP 
-A VALID_CHK -p tcp -m tcp --tcp-flags SYN,RST SYN,RST -j DROP 
-A VALID_CHK -p tcp -m tcp --tcp-flags FIN,SYN FIN,SYN -j DROP 
-A VALID_CHK -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP 
-A VALID_CHK -p tcp -m tcp --tcp-option 64 -m limit --limit 3/min --limit-burst 1 -j LOG --log-prefix "Bad TCP flag(64): " --log-level 6 
-A VALID_CHK -p tcp -m tcp --tcp-option 128 -m limit --limit 3/min --limit-burst 1 -j LOG --log-prefix "Bad TCP flag(128): " --log-level 6 
-A VALID_CHK -p tcp -m tcp --tcp-option 64 -j DROP 
-A VALID_CHK -p tcp -m tcp --tcp-option 128 -j DROP 
-A VALID_CHK -m state --state INVALID -j DROP 
-A VALID_CHK -f -m limit --limit 3/min --limit-burst 1 -j LOG --log-prefix "Fragmented packet: " 
-A VALID_CHK -f -j DROP 

потом через скрипт

#!/bin/bash
iptables -A POSTROUTING -t nat -s 192.168.1.2 -j SNAT --to-source 10.1.1.1
iptables -A POSTROUTING -t nat -s 192.168.1.3 -j SNAT --to-source 10.1.1.1
iptables -A POSTROUTING -t nat -s 192.168.1.4 -j SNAT --to-source 10.1.1.1
iptables -A POSTROUTING -t nat -s 192.168.1.5 -j SNAT --to-source 10.1.1.1
iptables -A POSTROUTING -t nat -s 192.168.1.6 -j SNAT --to-source 10.1.1.1
iptables -t mangle -A PREROUTING -s 192.168.1.3 -j MARK --set-mark 101
iptables -t mangle -A PREROUTING -s 192.168.1.3 -j RETURN
iptables -t mangle -A PREROUTING -s 192.168.1.4 -j MARK --set-mark 102
iptables -t mangle -A PREROUTING -s 192.168.1.4 -j RETURN
iptables -t mangle -A PREROUTING -s 192.168.1.5 -j MARK --set-mark 103
iptables -t mangle -A PREROUTING -s 192.168.1.5 -j RETURN
iptables -t mangle -A PREROUTING -s 192.168.1.6 -j MARK --set-mark 104
iptables -t mangle -A PREROUTING -s 192.168.1.6 -j RETURN

Я так понимаю что возможно в скрипт дописать это?

I like Linux

30

Решая не совсем тривиальные задачи, я бы iptables изучил получше, там всё просто, а главное не будет таких ляпов
...а через nat пусть тоже будет пробрасываться?
Получается что через nat пусть ходит и через forward тоже?

достаточно пару картинок глянут, чтобы понять где там нат, а где форвард.