Для того чтобы клиенты могли прозрачно открывать порты на шлюзе, был разработан набор протоколв Universal Plug and Play (UPnP), например для того чтобы можно было раздавать торренты.
Для раздачи торррентов например, нужно разрешить соединения внутрь сети. Для этого можно пробросить разные порты на разные машины, и в случае добавления клиентов/машин это придется делать вручную. Это не самый удобный спопосб, но можно использовать UPnP который будет сам пробрасывать нужные порты через iptables.
Установка:
sudo apt-get install linux-igd -y
Настраиваем:
cat /etc/default/linux-igd
# External interface name. If undefined then upnpd will not be started.
EXTIFACE=ppp0
# Internal interface name. If undefined then upnpd will not be started.
INTIFACE=eth0
Добавляем правила в iptables:
iptables -N UPNP
iptables -A FORWARD -j UPNP
iptables-save > /etc/iptables.up.rules
(04.01.13 замечание от RUSUA: имхо,четыре команды,написанные выше — бред! Спасибо,один из юзеров обратился за помощью и указал сюда. Первая строчка создает таблицу с именем UPNP, а вторая форвардит весь трафик туда. Бред! Третья сохраняет правила фаервола в файл. Короче вторая строчка недописана явно.Работать врят ли будет.Пропускайте.Вот что значит тупо скопипиздить статью у кого то)
Запускаем upnpd
/etc/init.d/linux-igd start
Перезапускаем, например, торрент клиент с включенным UPnP и видим появившиеся правила в iptables:
-A FORWARD -d 192.168.1.106/32 -p tcp -m tcp —dport 51413 -j ACCEPT
-A PREROUTING -i ppp0 -p tcp -m tcp —dport 51413 -j DNAT —to-destination 192.168.1.106:51413
На этом всё.
Update 28.07.2014: Спасибо юзеру Stealch за уместное замечание в комментариях:
Не забудте отредактировать файл /etc/upnpd.conf — в самом конце есть строка:
upnp_log_filename = «»;
необходимо указать путь к лог-файлу, например как это сделал я:
upnp_log_filename = «/var/log/upnpd.log»;
иначе получите ошибку при старте и демон не запустится.
Обыскался по Гуглу.
svr:~# iptables -N UPNP
svr:~# iptables -N UPNP iptables -A FORWARD -j UPNP
Bad argument `iptables’
Try `iptables -h’ or ‘iptables —help’ for more information.
Извиняюсь,ошибку форматирования в вордпрессе не заметил.
Там должно быть так:
iptables -N UPNP
iptables -A FORWARD -j UPNP
И если честно,то не уверен что вторая команда правильна.В плане того что она работать будет.Если что,пропустите вторую команду.Либо попробуйте,будет выдавать ошибку в аргументах — ставьте саму linux-igd без дополнительных манипуляций с iptables.Благодаря вам вот увидел то,что было тупо скопипиздено для себя из инета)
Не забудте отредактировать файл /etc/upnpd.conf — в самом конце есть строка:
upnp_log_filename = «»;
необходимо указать путь к лог-файлу, например как это сделал я:
upnp_log_filename = «/var/log/upnpd.log»;
иначе получите ошибку при старте и демон не запустится.
Спасибо! Добавил в заметку.