LINUX.ORG.RU
ФорумAdmin

iptables для p2p


0

0

Привет,

хочу правильно настроить netfilter на домашней машинке для работы с
p2p (пока что только bittorrent).  Соединение ADSL, ip-адрес реальный,
модем-роутер, весь трафик с него перенаправляется на десктоп.

Что уже сделал:
---------------

Клиент -- Deluge.  В нем выставлены "активные порты" от 6881 до
6889.  Включены DHT и muTorrent-PeX.  Правила для iptables:

iptables -A OUTPUT -j ACCEPT
...
iptables -A INPUT -p udp --dport 6881:6889 -j ACCEPT
iptables -A INPUT -p tcp --dport 6881:6889 -j ACCEPT

Проблемы:
---------

1) Очень много записей в логе вида

 Oct 21 04:09:11 localhost kernel: martian source 192.168.1.1 from 192.168.1.1, on dev eth_rtk0
 Oct 21 04:09:11 localhost kernel: ll header: 00:02:44:48:4c:c8:00:19:5b:11:4d:4c:08:00

# 192.168.1.1 -- это адрес сетевого интерфейса eth_rtk0 на десктопе,
# который общается с модемом.

2) По правилу iptables -A INPUT -m state --state INVALID -j LOG также
много залогированных "инвалидных" пакетов.

3) По правилам
iptables -A INPUT -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
iptables -A INPUT -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j LOG
Иногда проскакивает.

Ну и вообще, хотелось бы знать как правильно осуществлять фильтрацию
(и нужно ли) для таких вещей как DHT, muTorrent-PeX, etc.
anonymous

UDP не нужен, на всё остальное можете забить.

1) martian source значит, что у вас с маршрутизацией косяки - впрочем, это не страшно.

2) инвалидные пакеты будут валиться - это баг iptables

3) ну сканируют вас и что? У меня по приста попыток бывает на дню

> как правильно осуществлять фильтрацию

На INPUT открываете только нужные порты и всё.

birdie ★★★★★
()

Марсиан, вы, кстати, сами сказали логгировать - я никогда этого не делал.

# sysctl -a | grep martians
net.ipv4.conf.all.log_martians = 0
net.ipv4.conf.default.log_martians = 0
net.ipv4.conf.lo.log_martians = 0
net.ipv4.conf.eth0.log_martians = 0
net.ipv4.conf.eth1.log_martians = 0

birdie ★★★★★
()

>Ну и вообще, хотелось бы знать как правильно осуществлять фильтрацию
(и нужно ли) для таких вещей как DHT, muTorrent-PeX, etc.

Для сложных протоколов обычно используют layer 7 (http://l7-filter.sourceforge.net) или модуль ipp2p (в случае p2p-трафика).

P.S. Буду весьма признателен, если уважаемые ЛОРовцы поделятся положительным опытом применения данных продуктов для разрешения (а не блокировки) трафика.

BigBiker
()
Ответ на: комментарий от birdie

> 1) martian source значит, что у вас с маршрутизацией косяки - впрочем, это не
> страшно.

Да, martian headers эксплицитно включены так: echo 1 >
/proc/sys/net/ipv4/conf/all/log_martians.  Интересно все же, откуда они
берутся?  На adsl модеме (DLink 2500U) включен редирект 1-65535 TCP/UDP на
десктоп + в секции DMZ веб-интерфейса указано перенаправлять весь трафик,
который не определяется предыдущим правилом, также на десктоп.

На модеме:

# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
91.122.208.1    *               255.255.255.255 UH    0      0        0 ppp_8_35_1
192.168.1.0     *               255.255.255.0   U     0      0        0 br0
default         91.122.208.1    0.0.0.0         UG    0      0        0 ppp_8_35_1

На десктопе:

blacksun-0 : io [~] $ route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.2.0     *               255.255.255.0   U     0      0        0 eth_nfc0
192.168.2.0     *               255.255.255.0   U     0      0        0 eth_nfc1
192.168.1.0     *               255.255.255.0   U     0      0        0 eth_rtk0
default         192.168.1.254   0.0.0.0         UG    0      0        0 eth_rtk0

> 2) инвалидные пакеты будут валиться - это баг iptables

iptables или netfilter? Поправить можно/обещают? :)

anonymous
()
Ответ на: комментарий от anonymous

> iptables или netfilter?

iptables = netfilter ;-)

Да, в общем, никого это не колышет ;-)

birdie ★★★★★
()
Ответ на: комментарий от BigBiker

ipp2p - работает. Трафик совместно с consave/conrestore метит, а даельше через tc приоритезируется. Так что все нормально. Поток до 100 мегабит.

zhiltsov
()
Ответ на: комментарий от zhiltsov

> ipp2p - работает. Трафик совместно с consave/conrestore метит

Если не сложно, напишите, пожалуйста, Ваши правила iptables для ipp2p.
Делаю все как нужно, но не работает.

BigBiker
()
Ответ на: комментарий от BigBiker

P2P_MARK_RULES:
iptables -F PREROUTING -t mangle
iptables -A PREROUTING -t mangle -p tcp -j CONNMARK --restore-mark
iptables -A PREROUTING -t mangle -m ipp2p --ipp2p -j MARK --set-mark 6
iptables -A PREROUTING -t mangle -m ipp2p --bit -j MARK --set-mark 7
iptables -A PREROUTING -t mangle -m ipp2p --edk -j MARK --set-mark 8
iptables -A PREROUTING -t mangle -p tcp -m mark --mark 6 -j CONNMARK --save-mark
iptables -A PREROUTING -t mangle -p tcp -m mark --mark 7 -j CONNMARK --save-mark
iptables -A PREROUTING -t mangle -p tcp -m mark --mark 8 -j CONNMARK --save-mark
iptables -A PREROUTING -t mangle -s 10.0.0.0/8 -j IMQ --todev 0

IMQ_SHAPING_RULES:
#!/bin/sh

#!/bin/sh
/sbin/tc qdisc del dev imq0 root
/sbin/tc qdisc add dev imq0 root handle 1: htb default 25
/sbin/tc class add dev imq0 parent 1: classid 1:1 htb rate 100Mbit ceil 100Mbit burst 2560k

/sbin/tc class add dev imq0 parent 1:1 classid 1:10 htb rate  5Mbit ceil 70Mbit burst 2560k prio 2 # other-p2p
/sbin/tc class add dev imq0 parent 1:1 classid 1:15 htb rate  5Mbit ceil 70Mbit burst 2560k prio 2 # bit-torrent
/sbin/tc class add dev imq0 parent 1:1 classid 1:20 htb rate  5Mbit ceil 70Mbit burst 2560k prio 3 # edk
/sbin/tc class add dev imq0 parent 1:1 classid 1:25 htb rate 20Mbit ceil 100Mbit burst 2560k prio 0 # other traffic

/sbin/tc qdisc add dev imq0 parent 1:10 handle 30: esfq
/sbin/tc qdisc add dev imq0 parent 1:15 handle 40: esfq
/sbin/tc qdisc add dev imq0 parent 1:20 handle 50: esfq
/sbin/tc qdisc add dev imq0 parent 1:25 handle 60: esfq

/sbin/tc filter add dev imq0 parent 1:0 protocol ip prio 1 handle 6 fw flowid 1:10
/sbin/tc filter add dev imq0 parent 1:0 protocol ip prio 1 handle 7 fw flowid 1:15
/sbin/tc filter add dev imq0 parent 1:0 protocol ip prio 1 handle 8 fw flowid 1:20

Шейплю я на IMQ т.к. ethernet интерфейсы заняты другими шейперами
Соответсвенно ядро собрано с поддрежкой ipp2p,imq,esfq,connmark

zhiltsov
()
Ответ на: комментарий от zhiltsov

Огромное спасибо! Прошу простить за назойливость, но очень интересует: вышеуказанная машина выполняет функции роутера или это клиентский компьютер (для роутинга все работает; для клиентского же редактирование mangle.POSTROUTING, как и mangle.OUTPUT, результатов не дает) ?

BigBiker
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.