Eu não testei, mas tentaria algo assim:
iptables -t nat -A PREROUTING --protocol tcp --destination EXTIP --destination-port 80 -j DNAT --to-destination SERVERIP
Da mesma forma para as outras portas. Isso pode ajudar?
Estou tentando encaminhar as portas 80, 443, 32400 para uma máquina interna da minha rede. Portanto, o tráfego do EXTIP: 80 deve ir para SERVERIP: 80 e as respostas retornam pelo EXTIP: 80, também seria útil se essas alterações persistissem na reinicialização do roteador. O roteador tem dois IPs EXTIP e INTIP. Está conectado diretamente ao modem sem NAT. O roteador gerencia o NAT para os servidores internos.
Eu tentei várias alterações de iptable na internet e geralmente há efeitos colaterais, como se eu não conseguisse mais o SSH no roteador ou o tráfego de saída parasse de funcionar. O roteador também está executando o ufw e o fail2ban
Eu não testei, mas tentaria algo assim:
iptables -t nat -A PREROUTING --protocol tcp --destination EXTIP --destination-port 80 -j DNAT --to-destination SERVERIP
Da mesma forma para as outras portas. Isso pode ajudar?
Isso parece um conjunto relativamente simples de regras.
Aqui está minha sugestão. Não foi testado porque não tenho uma VM de duas interfaces disponível no momento.
# Definitions
INTIF=eth1 # Internal interface
EXTIF=eth0 # External interface
SERVERIP=192.168.1.12 # Internal webserver address
# Prepare to wipe the ruleset, so default to allowing everything
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
# Erase the rulesets
iptables -F INPUT
iptables -F OUTPUT
iptables -F FORWARD
iptables -t nat -F PREROUTING
iptables -t nat -F POSTROUTING
# Allow anything on loopback
iptables -i lo -j ACCEPT
# Allow anything in that is the "other half" of an outbound request
iptables -A INPUT -m state --state ESTABLISHED,RELATED
# Allow anything out (from router to INT, router to EXT, or INT to EXT)
iptables -A OUTPUT -j ACCEPT
# Allow port 22 in from INT (inferred from your explanation)
# Strictly, this is only required if you apply additional restrictions
# in the next rule, but I'm going to leave it here anyway
iptables -A INPUT -i $INTIF -p tcp --dport 22 -j ACCEPT
# Allow everything through from INT
# This allows internal access to the router too. You could add some extra
# rules here that disallow access to both the router's own IP addresses
iptables -A INPUT -i $INTIF -j ACCEPT
# Allow port 80 in from EXT, and forward it on to the internal server
# Allow port 443 in from EXT, and forward it on to the internal server
# Allow port 32400 in from EXT, and forward it on to the internal server
iptables -t nat -A PREROUTING -i $EXTIF -p tcp --dport 80 -j DNAT --to-destination $SERVERIP
iptables -t nat -A PREROUTING -i $EXTIF -p tcp --dport 443 -j DNAT --to-destination $SERVERIP
iptables -t nat -A PREROUTING -i $EXTIF -p tcp --dport 32400 -j DNAT --to-destination $SERVERIP
# Set the default action to discard all traffic
iptables -P INPUT DENY
iptables -P OUTPUT DENY
# Enable forwarding
echo 1 >/proc/sys/net/ipv4/ip_forward