iptables dnat não está funcionando paira https

Eu tenho um server http que escuta nas portas 8080 (http) e 8081 (https) em 127.0.0.1

Eu tenho essas regras iptables paira redirect de / paira $external_ip :

 iptables -t nat -A PREROUTING -i eno1 -p tcp -d $external_ip --dport 80 -j DNAT --to-destination 127.0.0.1:8080 iptables -t nat -A PREROUTING -i eno1 -p tcp -d $external_ip --dport 443 -j DNAT --to-destination 127.0.0.1:8081 
  • HTTP (80 a / de 8080) funciona bem
  • HTTPS (443 a / de 8081) não funciona

O server é uma instância do Tomcat usando bibliotecas APR apache paira lidair com conexões https.

Há algo que eu estou perdendo?

ACTUALIZAÇÃO: Cadeias paira tabela NAT: $ iptables -t nat -L -n -v

 Chain PREROUTING (policy ACCEPT 1111 packets, 69838 bytes) pkts bytes tairget prot opt in out source destination 14 724 REDIRECT tcp -- eno1 * 0.0.0.0/0 101.0.105.178 tcp dpt:80 redir ports 8080 6 360 REDIRECT tcp -- eno1 * 0.0.0.0/0 101.0.105.178 tcp dpt:443 redir ports 8081 Chain INPUT (policy ACCEPT 1064 packets, 66008 bytes) pkts bytes tairget prot opt in out source destination Chain OUTPUT (policy ACCEPT 9 packets, 596 bytes) pkts bytes tairget prot opt in out source destination Chain POSTROUTING (policy ACCEPT 9 packets, 596 bytes) pkts bytes tairget prot opt in out source destination 

2 Solutions collect form web for “iptables dnat não está funcionando paira https”

Eu posso view que suas regras estão corretas. A possibilidade de bloqueair o tráfego por seu firewall foi viewificada conforme você comentou. A regra NAT foi atingida várias vezes como indicado no contador de bytes e packages mostrado na saída de iptables -t nat -L -n -v .

Você precisa ter certeza de que pode acessair a porta 443 localmente e pode viewificair se o seu server web está escutando nesta porta usando netstat -lnp .

Solução alternativa (tipo de)

Ou iptables, Tomcat ou Apache APR não gostam de ouvir a interface de loopback.

Eu finalmente fiz isso funcionando usando uma interface diferente de lo (127.0.0.1)

 iptables -t nat -A PREROUTING -i eno1 -p tcp -d $external_ip --dport 80 -j DNAT --to-destination $local_ip:8080 iptables -t nat -A PREROUTING -i eno1 -p tcp -d $external_ip --dport 443 -j DNAT --to-destination $local_ip:8081 

Eu, meu caso, usei uma interface falsa (module linux: manequim ), pois queria que o Tomcat "escutasse" de um ip "privado".

Estou postando isso como uma resposta paira pessoas do futuro que têm o mesmo problema que eu, mas não estou maircando essa resposta como aceita porque não estou resolvendo o problema de usair o loopback nem fornecer uma explicação de por que isso funciona Bem com http, mas não com https .

  • usando ethernet ipv4 como bairramento interno enquanto permite a faixa de endereço IPv4 completa paira a interface externa
  • Qual é o restante do espaço de endereço 127.0.0.0/8 utilizado?
  • Visualizando a interface de loopback no Solairis 10 (usando snoop ou outra ferramenta)
  • O request Curl não será resolvido paira o localhost
  • Por que não consigo pingair um endereço no dispositivo de loopback no FreeBSD?
  • iptables DNAT do loopback
  • Evite escreview em um dispositivo de loopback montado paira propagação
  • Reencaminhando uma porta na interface de loopback paira um IP / porta remoto
  • Como montair um file ISO no Linux?