iptables не прибивает установленные соединения:(
GNU/Linux, UNIX, Open Source → Программное обеспечение
Добрый день, всем! Есть линуксовый роутер, через него ходят напрямую в инет через маскарад несколько пользователей с разных внутренних айпи. При превышении лимита мне необходимо блокировать пользователя по айпи на роутере.
Никак не могу понять, как прибить уже установленные соединения посредством iptables. Все новые соединения отрубаются, а уже установленные — нет (аська например).
Делаю такую вещь:
/sbin/iptables -I INPUT -s 192.168.1.15 -j DROP
/sbin/iptables -I INPUT -d 192.168.1.15 -j DROP
/sbin/iptables -I OUTPUT -s 192.168.1.15 -j DROP
/sbin/iptables -I OUTPUT -d 192.168.1.15 -j DROP
/sbin/iptables -I FORWARD -s 192.168.1.15 -j DROP
/sbin/iptables -I FORWARD -d 192.168.1.15 -j DROP
Запускаю tcpdump, а там:
17:09:44.370922 IP 192.168.1.15.1309 > ahp-m01.blue.aol.com.http: P 410:618(208) ack 472 win 64164
17:09:44.371930 IP ahp-m01.blue.aol.com.http > 192.168.1.15.1294: . ack 235 win 16384
До кучи ещё и бродкасты, arp-запросы и т.д. пролезают:
16:24:00.797476 IP 192.168.1.15.netbios-ns > 192.168.1.255.netbios-ns: NBT UDP PACKET(137): QUERY; REQUEST; BROADCAST
16:21:53.117428 arp who-has 192.168.1.5 tell 192.168.1.15
16:20:58.274426 IP 192.168.1.15.1259 > server-1.domain: 47478+ SOA? comp1.main.server. (34)
Подскажите, как это можно исправить.
Последние комментарии
- OlegL, 17 декабря 2023 года в 15:00 → Перекличка 21
- REDkiy, 8 июня 2023 года в 9:09 → Как «замокать» файл для юниттеста в Python? 2
- fhunter, 29 ноября 2022 года в 2:09 → Проблема с NO_PUBKEY: как получить GPG-ключ и добавить его в базу apt? 6
- Иванн, 9 апреля 2022 года в 8:31 → Ассоциация РАСПО провела первое учредительное собрание 1
- Kiri11.ADV1, 7 марта 2021 года в 12:01 → Логи catalina.out в TomCat 9 в формате JSON 1
во-первых, если ты ставишь флаг -I, то после цепочки надо указать место, где она расположиться, например 1. У тебя правила, которые ты вбил, находятся ниже тех, что ты прописал ранее (если я не прав, переходи к совету 2)
во-вторых, покажи iptables- L
iptables -L ничем не поможет =(.
Дело в том, что информация об установленных соединениях находится в conntrack-таблице (/proc/net/ip_conntrack). Как удалить оттуда нужную запись, я, например, не знаю =(. Если только перезагрив маршрутизатор. Но таким образом связь разорвётся у всех =(.
Саш, а если он эти правли поместит в начало каждой из цепочек, то соединение порвется… у меня так было.
Нет, правила находятся ниже:
# /sbin/iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
DROP all — anywhere 192.168.1.15
DROP all — 192.168.1.15 anywhere
Chain FORWARD (policy DROP)
target prot opt source destination
DROP all — anywhere 192.168.1.15
DROP all — 192.168.1.15 anywhere
#другие правила
#…
ACCEPT all — anywhere 192.168.1.15
ACCEPT all — 192.168.1.15 anywhere
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
DROP all — anywhere 192.168.1.15
DROP all — 192.168.1.15 anywhere
Да, совсем забыл.
ip роутера 192.168.1.7, ip компа 192.168.1.7.
Соединtys компы через коммутатор.
не! так не пойдет!
«iptables-save -c» давай!
?
точно? ;)
Не вопрос:
# /sbin/iptables-save -c
# Generated by iptables-save v1.3.1 on Fri Sep 23 17:38:19 2005
*mangle
:PREROUTING ACCEPT [1973319:895991352]
:INPUT ACCEPT [129953:44731192]
:FORWARD ACCEPT [1830944:837449142]
:OUTPUT ACCEPT [115769:41202170]
:POSTROUTING ACCEPT [1943693:878336157]
COMMIT
# Completed on Fri Sep 23 17:38:20 2005
# Generated by iptables-save v1.3.1 on Fri Sep 23 17:38:20 2005
*filter
:INPUT ACCEPT [129954:44731232]
:FORWARD DROP [7339:376963]
:OUTPUT ACCEPT [115361:41170958]
[0:0] -A INPUT -d 192.168.1.15 -j DROP
[0:0] -A INPUT -s 192.168.1.15 -j DROP
[0:0] -A FORWARD -d 192.168.1.15 -j DROP
[42:2064] -A FORWARD -s 192.168.1.15 -j DROP
[30533:21546103] -A FORWARD -d 192.168.1.33 -j ACCEPT
[28192:4819406] -A FORWARD -s 192.168.1.33 -j ACCEPT
[9780:6734669] -A FORWARD -d 192.168.1.1 -o eth0 -j ACCEPT
[10067:812714] -A FORWARD -s 192.168.1.1 -i eth0 -j ACCEPT
[0:0] -A FORWARD -d 192.168.1.21 -o eth0 -j ACCEPT
[0:0] -A FORWARD -s 192.168.1.21 -i eth0 -j ACCEPT
[114785:66095037] -A FORWARD -s 192.168.1.15 -j ACCEPT
[92639:17230102] -A FORWARD -d 192.168.1.15 -j ACCEPT
[8129:603271] -A FORWARD -s 192.168.1.0/255.255.255.0 -o eth2 -p tcp -m tcp --dport 5190 -j ACCEPT
[19807:8868442] -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
[0:0] -A FORWARD -s 192.168.1.0/255.255.255.0 -d 64.12.0.0/255.255.0.0 -p tcp -m tcp --dport 5190 -m state --state RELATED,ESTABLISHED -j ACCEPT
[0:0] -A FORWARD -s 192.168.1.0/255.255.255.0 -d 205.188.0.0/255.255.0.0 -p tcp -m tcp --dport 5190 -m state --state RELATED,ESTABLISHED -j ACCEPT
[18:864] -A FORWARD -s 192.168.1.97 -d 195.98.32.202 -i eth0 -j ACCEPT
[0:0] -A FORWARD -s 195.98.32.202 -d 192.168.1.97 -o eth0 -j ACCEPT
[202:9696] -A FORWARD -s 192.168.1.4 -d 195.98.32.202 -i eth0 -j ACCEPT
[0:0] -A FORWARD -s 195.98.32.202 -d 192.168.1.4 -o eth0 -j ACCEPT
[0:0] -A FORWARD -s 213.177.96.8 -o eth0 -p tcp -m tcp --dport 1337 -j DROP
[0:0] -A FORWARD -s 213.177.96.221 -o eth0 -p tcp -m tcp --dport 1337 -j DROP
[0:0] -A FORWARD -s 193.125.70.0/255.255.254.0 -o eth0 -p tcp -m tcp --dport 1337 -j ACCEPT
[0:0] -A FORWARD -s 194.190.176.0/255.255.240.0 -o eth0 -p tcp -m tcp --dport 1337 -j ACCEPT
[0:0] -A FORWARD -s 195.122.224.0/255.255.224.0 -o eth0 -p tcp -m tcp --dport 1337 -j ACCEPT
[0:0] -A FORWARD -s 195.98.32.0/255.255.224.0 -o eth0 -p tcp -m tcp --dport 1337 -j ACCEPT
[0:0] -A FORWARD -s 212.92.128.0/255.255.192.0 -o eth0 -p tcp -m tcp --dport 1337 -j ACCEPT
[0:0] -A FORWARD -s 217.118.93.0/255.255.255.0 -o eth0 -p tcp -m tcp --dport 1337 -j ACCEPT
[0:0] -A FORWARD -s 81.18.132.0/255.255.254.0 -o eth0 -p tcp -m tcp --dport 1337 -j ACCEPT
[0:0] -A FORWARD -s 194.84.54.128/255.255.255.192 -o eth0 -p tcp -m tcp --dport 1337 -j ACCEPT
[0:0] -A FORWARD -s 194.84.135.0/255.255.255.128 -o eth0 -p tcp -m tcp --dport 1337 -j ACCEPT
[0:0] -A FORWARD -s 194.84.156.0/255.255.255.0 -o eth0 -p tcp -m tcp --dport 1337 -j ACCEPT
[0:0] -A FORWARD -s 194.84.212.0/255.255.254.0 -o eth0 -p tcp -m tcp --dport 1337 -j ACCEPT
[0:0] -A FORWARD -s 195.151.72.0/255.255.255.0 -o eth0 -p tcp -m tcp --dport 1337 -j ACCEPT
[0:0] -A FORWARD -s 195.151.74.0/255.255.254.0 -o eth0 -p tcp -m tcp --dport 1337 -j ACCEPT
[0:0] -A FORWARD -s 212.176.99.0/255.255.255.0 -o eth0 -p tcp -m tcp --dport 1337 -j ACCEPT
[0:0] -A FORWARD -s 212.176.104.0/255.255.255.0 -o eth0 -p tcp -m tcp --dport 1337 -j ACCEPT
[0:0] -A FORWARD -s 213.24.236.0/255.255.254.0 -o eth0 -p tcp -m tcp --dport 1337 -j ACCEPT
[0:0] -A FORWARD -s 217.23.16.0/255.255.240.0 -o eth0 -p tcp -m tcp --dport 1337 -j ACCEPT
[0:0] -A FORWARD -s 217.106.142.0/255.255.255.0 -o eth0 -p tcp -m tcp --dport 1337 -j ACCEPT
[0:0] -A FORWARD -s 62.76.114.0/255.255.254.0 -o eth0 -p tcp -m tcp --dport 1337 -j ACCEPT
[0:0] -A FORWARD -s 62.76.248.0/255.255.252.0 -o eth0 -p tcp -m tcp --dport 1337 -j ACCEPT
[0:0] -A FORWARD -s 81.18.147.0/255.255.255.0 -o eth0 -p tcp -m tcp --dport 1337 -j ACCEPT
[0:0] -A FORWARD -s 212.193.200.0/255.255.254.0 -o eth0 -p tcp -m tcp --dport 1337 -j ACCEPT
[0:0] -A FORWARD -s 212.67.0.0/255.255.224.0 -o eth0 -p tcp -m tcp --dport 1337 -j ACCEPT
[0:0] -A FORWARD -s 82.208.64.0/255.255.192.0 -o eth0 -p tcp -m tcp --dport 1337 -j ACCEPT
[0:0] -A FORWARD -s 213.177.96.0/255.255.224.0 -o eth0 -p tcp -m tcp --dport 1337 -j ACCEPT
[0:0] -A OUTPUT -s 192.168.1.15 -j DROP
[0:0] -A OUTPUT -d 192.168.1.15 -j DROP
COMMIT
# Completed on Fri Sep 23 17:38:20 2005
# Generated by iptables-save v1.3.1 on Fri Sep 23 17:38:20 2005
*nat
:PREROUTING ACCEPT [109306:19478043]
:POSTROUTING ACCEPT [10793:806388]
:OUTPUT ACCEPT [3599:257509]
[23912:1259007] -A POSTROUTING -s 192.168.1.0/255.255.255.0 -o eth2 -j MASQUERADE
COMMIT
# Completed on Fri Sep 23 17:38:20 2005
Кстати, уже стало лучше -
теперь есть только исходящие от 192.168.1.15 и бродкасты.
17:47:31.631830 IP 192.168.1.15.2280 > ahp-d01.blue.aol.com.http: S 850261937:850261937(0) win 64240
17:47:36.663024 IP 192.168.1.15.2281 > ahp-d02.blue.aol.com.http: S 954201668:954201668(0) win 64240
17:47:40.434929 arp who-has 192.168.1.83 tell 192.168.1.15
17:47:40.453972 arp who-has 192.168.1.68 tell 192.168.1.15
Понятно, что исходящие из-за того, что DROP в конце цепочки, что странно, должен быть в начале — добавлял то одинаково:
# /sbin/iptables -I FORWARD -s 192.168.1.15 -j DROP
# /sbin/iptables -I FORWARD -d 192.168.1.15 -j DROP
# /sbin/iptables -I INPUT -s 192.168.1.15 -j DROP
# /sbin/iptables -I INPUT -d 192.168.1.15 -j DROP
# /sbin/iptables -I OUTPUT -d 192.168.1.15 -j DROP
# /sbin/iptables -I OUTPUT -s 192.168.1.15 -j DROP
Ошибся, arp запросы.
iptables -A … добавляет в конец цепочки
iptables -I … добавляет в начало цепочки
кроме того, если тебе надо бсросить (закрыть) уже установленные соединения, то, imho, проще перегрузить соответствующий conntrac модуль. впрочем, можно и явно запретить установленные соединения: iptables -I ${цепочка} -m state --state ESTABLISHED -j RESET … (или около того)
Угу, это как в случае с перезагрузкой — сбросятся все установленные соединения.
Действия 'RESET' у iptables нету ведь. Серёг, скорее -j REJECT --reject-with tcp-reset. Однако дейсвтвие 'REJECT' работает аналогичным образом, что и 'DROP’, с одним лишь отличием. Действие 'REJECT' посредством единственного своего ключа --reject-with выдает сообщение об ошибке на хост, передавший пакет.
Так что, может и не прокатить. Хотя попробовать стОит.
Увы, и это не помогает:(
запрети в таблице nat маскарадирование пакетов для этого хоста.
И это не помогло:( Валит на асечный сайт ивсё тут:(
# /usr/sbin/tcpdump host 192.168.1.15
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
17:21:12.994992 arp who-has 192.168.1.5 tell 192.168.1.15
17:21:23.567409 arp who-has 192.168.1.68 tell 192.168.1.15
17:21:28.575759 IP 192.168.1.15.1168 > router-2.domain: 1503+ A? login.icq.com. (31)
17:21:28.577442 IP 192.168.1.15.3370 > bucp2-vip-d.blue.aol.com.5190: S 994158096:994158096(0) win 64240
17:21:30.109357 IP 192.168.1.15.3371 > bucp2-vip-d.blue.aol.com.5190: S 645805648:645805648(0) win 64240
17:21:30.110531 IP 192.168.1.15.3372 > bucp2-vip-d.blue.aol.com.5190: S 831724901:831724901(0) win 64240
17:21:31.401930 IP 192.168.1.15.3370 > bucp2-vip-d.blue.aol.com.5190: S 994158096:994158096(0) win 64240
17:21:33.111849 IP 192.168.1.15.3371 > bucp2-vip-d.blue.aol.com.5190: S 645805648:645805648(0) win 64240
17:21:33.111855 IP 192.168.1.15.3372 > bucp2-vip-d.blue.aol.com.5190: S 831724901:831724901(0) win 64240
17:21:37.436982 IP 192.168.1.15.3370 > bucp2-vip-d.blue.aol.com.5190: S 994158096:994158096(0) win 64240
17:21:39.146924 IP 192.168.1.15.3371 > bucp2-vip-d.blue.aol.com.5190: S 645805648:645805648(0) win 64240
17:21:39.146930 IP 192.168.1.15.3372 > bucp2-vip-d.blue.aol.com.5190: S 831724901:831724901(0) win 64240
так. стоп. ты на внутреннем же интерфейсе смотришь?
ну так и правильно должно ловиться.
(если ты хочешь, чтобы они не приходили на рутер, то тебе надо сделать, чтобы они не исходили из того 192.168.1.15. что, собственно, делается несколько не на этом компе, а?)
если я правильно ошибаюсь, у тебя eth2 — внешний интерфейс. поэтому и смотри на нём. правда, не уверен, что там будут пакеты с этим адресом, так как они уде будут промаскарадены.
Всё правильно, eth0 — локалка, а eth2 — внешний интерфейс. Смотрю на локалке. Действительно, на внешнем интерфейсе они будут промаскаражены.
Тут вот в чём дело — использую биллинговую систему TA Billing.
Она обсчитывает статистику с локальных интерфейсов.
Есть скрипт для отрубания пользователей при превышении трафика. Он то как раз и даёт команды iptables. Но он запускается каждый раз когда от/к пользователю приходит хоть один пакетик. В результате считалка валит iptables безумным количеством команд и связь не работает. На внешнем интерфейсе TA Billing не считает.:(
Какие есть идеи?