Разрешить запросы UPnP и NAT-PMP в iptables

У меня есть шлюз OpenVPN с пересылкой, который отлично работает. Другая моя машина подключается через него и выходит в Интернет. Выполнено сканирование внешних портов, и на внешнем VPN-адресе не видно портов. Установил linux-igd (upnpd) на шлюз. Если я устанавливаю iptables -P INPUT ACCEPT, он работает как шарм, порт открывается и перенаправляется клиенту. Но вместо этого я хочу создать настоящие правила для запроса UPnP.

Вот как выглядят мои iptables:

Chain INPUT (policy DROP)
target     prot opt source               destination
ACCEPT     icmp --  anywhere             anywhere
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ssh
ACCEPT     all  --  anywhere             anywhere             state RELATED,ESTABLISHED

Chain FORWARD (policy DROP)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere             state RELATED,ESTABLISHED
ACCEPT     all  --  anywhere             anywhere

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Поэтому я добавляю правило журнала для отслеживания того, что сбрасывается с клиента (192.168.0.6):

sudo iptables -A INPUT -i eth0 -s 192.168.0.6 -j LOG --log-prefix "DROPPED: "

Перезапустите службу и клиент openvpn, затем журнал выведет следующее:

Mar 19 07:32:55 raspberrypi kernel: [ 6954.935598] DROPPED: IN=eth0 OUT= MAC=b8:27:eb:b0:98:45:b8:27:eb:6b:f9:a6:08:00:45:00:00:1e:b0:b0:40:00:40:11:08:1c SRC=192.168.0.6 DST=192.168.0.172 LEN=30 TOS=0x00 PREC=0x00 TTL=64 ID=45232 DF PROTO=UDP SPT=51251 DPT=5351 LEN=10
Mar 19 07:32:55 raspberrypi kernel: [ 6954.939366] DROPPED: IN=eth0 OUT= MAC=01:00:5e:7f:ff:fa:b8:27:eb:6b:f9:a6:08:00:45:00:00:a5:b9:6a:40:00:01:11:0f:35 SRC=192.168.0.6 DST=239.255.255.250 LEN=165 TOS=0x00 PREC=0x00 TTL=1 ID=47466 DF PROTO=UDP SPT=54192 DPT=1900 LEN=145
Mar 19 07:33:03 raspberrypi kernel: [ 6962.293068] DROPPED: IN=eth0 OUT= MAC=b8:27:eb:b0:98:45:b8:27:eb:6b:f9:a6:08:00:45:00:00:1e:b2:a0:40:00:40:11:06:2c SRC=192.168.0.6 DST=192.168.0.172 LEN=30 TOS=0x00 PREC=0x00 TTL=64 ID=45728 DF PROTO=UDP SPT=51251 DPT=5351 LEN=10
Mar 19 07:33:03 raspberrypi kernel: [ 6962.626402] DROPPED: IN=eth0 OUT= MAC=b8:27:eb:b0:98:45:b8:27:eb:6b:f9:a6:08:00:45:00:00:1e:b2:b6:40:00:40:11:06:16 SRC=192.168.0.6 DST=192.168.0.172 LEN=30 TOS=0x00 PREC=0x00 TTL=64 ID=45750 DF PROTO=UDP SPT=51251 DPT=5351 LEN=10
Mar 19 07:33:03 raspberrypi kernel: [ 6962.959560] DROPPED: IN=eth0 OUT= MAC=b8:27:eb:b0:98:45:b8:27:eb:6b:f9:a6:08:00:45:00:00:1e:b2:be:40:00:40:11:06:0e SRC=192.168.0.6 DST=192.168.0.172 LEN=30 TOS=0x00 PREC=0x00 TTL=64 ID=45758 DF PROTO=UDP SPT=51251 DPT=5351 LEN=10
Mar 19 07:33:04 raspberrypi kernel: [ 6963.293411] DROPPED: IN=eth0 OUT= MAC=b8:27:eb:b0:98:45:b8:27:eb:6b:f9:a6:08:00:45:00:00:1e:b2:d5:40:00:40:11:05:f7 SRC=192.168.0.6 DST=192.168.0.172 LEN=30 TOS=0x00 PREC=0x00 TTL=64 ID=45781 DF PROTO=UDP SPT=51251 DPT=5351 LEN=10
Mar 19 07:33:04 raspberrypi kernel: [ 6963.627138] DROPPED: IN=eth0 OUT= MAC=b8:27:eb:b0:98:45:b8:27:eb:6b:f9:a6:08:00:45:00:00:1e:b2:d6:40:00:40:11:05:f6 SRC=192.168.0.6 DST=192.168.0.172 LEN=30 TOS=0x00 PREC=0x00 TTL=64 ID=45782 DF PROTO=UDP SPT=51251 DPT=5351 LEN=10
Mar 19 07:33:11 raspberrypi kernel: [ 6970.968277] DROPPED: IN=eth0 OUT= MAC=b8:27:eb:b0:98:45:b8:27:eb:6b:f9:a6:08:00:45:00:00:1e:b3:5f:40:00:40:11:05:6d SRC=192.168.0.6 DST=192.168.0.172 LEN=30 TOS=0x00 PREC=0x00 TTL=64 ID=45919 DF PROTO=UDP SPT=51251 DPT=5351 LEN=10

Итак, я вижу, что он выполняет широковещательную передачу по UDP 1900, а затем пытается подключиться к UDP 5351. Поэтому я вставляю эти два правила перед правилом журнала:

sudo iptables -I INPUT 4 -i eth0 -p udp --dport 1900 -j ACCEPT
sudo iptables -I INPUT 4 -i eth0 -p udp --dport 5351 -j ACCEPT

Ничего не происходит вплоть до правила журнала, поэтому, насколько я вижу, ничего не заблокировано, но UPnP не работает. Если я просто сделаю:

sudo iptables -P INPUT ACCEPT

Все отлично работает! Я тоже пробовал это, При обновлении файлов изменчивого индекса для apt-cacher-ng произошли ошибки. Посетите ...

Я каждый день получаю следующее сообщение из apt-cacher-ng cron job:

/etc/cron.daily/apt-cacher-ng:
Error(s) occured while updating volatile index files for apt-cacher-ng.
Please visit http://proxy.localnet:3142/report.html to rerun the
expiration manually or check the error message(s) in the current log file(s).

Когда я запускаю его, я всегда получаю одно и то же сообщение об ошибке файлы. Это всегда файлы * .xz.

An error occured while reading this file, some contents may have been ignored. Tag
Parsing metadata in debrep/dists/jessie/main/binary-amd64/Packages.xz
An error occured while reading this file, some contents may have been ignored. Tag
Parsing metadata in debrep/dists/jessie/main/binary-i386/Packages.xz
An error occured while reading this file, some contents may have been ignored. Tag
Parsing metadata in debrep/dists/jessie/main/source/Sources.xz

Я удаляю их, и веб-интерфейс apt-cacher-ng доволен, но как только я выполняю обновление apt-get на одном из клиентов. Эти файлы вернулись с точно такой же ошибкой.

Я искал решение, но не могу найти никого с этой проблемой.

0
задан 19 March 2016 в 09:50
1 ответ

У меня точно такая же проблема, и я нашел этот официальный отчет об ошибке Debian . Установка более новой версии пакета apt-cacher-ng решила проблему для меня. Если вы все еще используете wheezy (как и я), попробуйте загрузить и установить backport вручную.

Ура, Майкл

2
ответ дан 4 December 2019 в 13:42

Теги

Похожие вопросы