LINUX.ORG.RU
решено ФорумAdmin

[fedora] UPnP и iptables


0

1

Столкнулся со следующей проблемой. Дома есть роутер, на котором включен UPnP. Нужно настроить на клиентской машине правило для iptables, чтобы этот протокол не зарезался. На моем роутере можно смотреть, кто в данной момент пользуется UPnP и стоит отключить iptables, как там появляются строчка:

TCP  51413  51413  10.10.10.11
Пробовал сделать типа такого - не помогло.
/etc/sysconfig/iptables
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 9000 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 51413 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 51413 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

UPD: точнее, я понимаю, почему не помогло. Видимо для UPnP нужен какой-то особый запрос, после чего на роутере начинает работать проброс порта.

★★★★★

Что-то не охото лазить смотреть как работает этот upnp, поэтому

ping <шлюз> -c1

ip n l узнаём мак роутера

sudo tcpdump ether host 00:19:5b:73:91:2d -n -vvv and udp and not port 53 -w upnp.pcap

или по ip роутера

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

А с upnp.pcap что делать? Выложить или парсить чем?

ostin ★★★★★ ()

Ща погуглил немножко, вывод: открой 1900 udp порт

iptables -I INPUT 6 -p udp --dport 1900 -j ACCEPT


[jugatsu@lenovo ~]$ ./miranda.py 
upnp> msearch 

Entering discovery mode for 'upnp:rootdevice', Ctl+C to stop...

****************************************************************
SSDP reply message from 192.168.1.51:49200
XML file is located at http://192.168.1.51:49200/description.xml
Device is running Linux/2.6.32-24-generic, UPnP/1.0, Portable SDK for UPnP devices/1.6.6
****************************************************************

****************************************************************
SSDP reply message from 192.168.1.1:52869
XML file is located at http://192.168.1.1:52869/gatedesc.xml
Device is running Linux/2.4.17_mvl21-malta-mips_fp_le, UPnP/1.0, Intel SDK for UPnP devices /1.2
****************************************************************

^CDiscover mode halted...
[jugatsu@lenovo ~]$ sudo tcpdump -i eth0 port 1900
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
23:03:06.043531 IP lenovo.local.1900 > 239.255.255.250.1900: UDP, length 97
23:03:06.049155 IP 192.168.1.1.2051 > lenovo.local.1900: UDP, length 314
23:03:06.150257 IP 192.168.1.1.2051 > lenovo.local.1900: UDP, length 314

Хотя я бы переделал твои правила :)

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

Да, при включении transmission бегают пакеты:

23:19:56.302160 IP icehammer.localdomain.49258 > 239.255.255.250.ssdp: UDP, length 137
23:19:56.305337 IP 10.10.10.1.ssdp > icehammer.localdomain.49258: UDP, length 321
А правила не мои, это все с федорой идет, я только для ssh 9000 порт открыл. Вот так не работает:
-A INPUT -m state --state NEW -m udp -p udp --dport 1900 -j ACCEPT
не работает (-;

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

Не понял, почему ты решил про 49258 порт, ведь я даже пакеты снифал по 1900 (-; В итоге погуглил по предложенному тобой порту и правило нашлось.

# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 9000 -j ACCEPT
-A INPUT -p udp -m udp -s 10.10.10.1 --sport 1900 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 51413 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
10.10.10.1 это мой роутер, как видно. Вот так работает.

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

49258? Потому что ответ получешь на этот порт

23:19:56.305337 IP 10.10.10.1.ssdp > icehammer.localdomain.49258: UDP, length 321

Я всё таки настаиваю на своём :)

iptables -I INPUT 6 -p udp -m state --state ESTABLISHED -j ACCEPT

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