Como redirecionar o tráfego de entrada para uma porta diferente, em um Synology NAS (DSM5)

3

Deve ser simples usando iptables , como por exemplo descrito neste post por Richard Fergie , mas meu dispositivo, um Synology DS115j (executando o DSM 5.0) não é capaz de fazer isso aparentemente:

iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080

retorna

iptables v1.4.21: can't initialize iptables table 'nat': Table does not exist (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.

Preciso usar a tabela nat para o encaminhamento de porta? Este não é um gateway e não deseja encaminhar para outro dispositivo, apenas para outra porta local.

Contexto:

  • Meu objetivo é executar um servidor em uma porta sem privilégios para evitar a necessidade de executá-lo como root.
  • Eu sei sobre setcap e authbind , mas eles não estão disponíveis em um Synology NAS (DSM5).
  • O Synology DS115j também não suporta Docker .
por Marcel 05.01.2017 / 23:06

2 respostas

3

Se o firewall de sincronização ainda não usa nat, então os módulos de kernel necessários provavelmente não estarão habilitados, então -t nat não encontrará a tabela. Você precisa, como root:

cd /lib/modules
insmod nf_nat.ko 
insmod iptable_nat.ko
insmod ipt_REDIRECT.ko

Em seguida, iptables -L -t nat deve listar as cadeias vazias, lsmod|grep nat deve mostrar os módulos e você pode adicionar sua regra.

    
por 07.01.2017 / 09:56
2

O Synology Os (DSM) usa um binário de código fechado chamado firewalltool para reconstruir o dump iptables. Você pode investir tempo para entender como ele funciona internamente observando /usr/syno/etc/rc.d/S01iptables.sh e /etc/firewall , mas lembre-se de que qualquer atualização do DSM pode substituir as alterações manuais feitas por você.

    
por 06.01.2017 / 13:35