AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / server / Perguntas / 1065983
Accepted
Cal
Cal
Asked: 2021-06-08 06:46:28 +0800 CST2021-06-08 06:46:28 +0800 CST 2021-06-08 06:46:28 +0800 CST

iptables PREROUTING não está em vigor

  • 772

Estamos executando um Ubuntu 20.04 na AWS. Estamos tentando configurar uma regra iptables para que qualquer tráfego MySQL com um endereço IP fictício seja encaminhado para o banco de dados MySql em 172.31.6.173 na mesma VPC. Deixe-me explicar:

Endereços IP nesta tarefa:

Servidor Ubuntu (fonte): 172.31.0.151

Servidor MySQL (destino): 172.31.6.173

IP fictício do MySQL: 6.6.6.6

A partir de 172.31.0.151 (fonte) nos conectaremos ao mysql no IP fictício (6.6.6.6), e será NAT'd para destino (172.31.6.173).

As regras que usamos:

sudo iptables -t nat -A PREROUTING -s 172.31.0.151 -d 6.6.6.6 -j DNAT --to-destination 172.31.6.173
sudo iptables -A FORWARD -p tcp -d 172.31.6.173 -j ACCEPT

A primeira linha especifica qualquer tráfego do 172.31.0.151, com destino para 6.6.6.6, será encaminhado para 172.31.6.173

A segunda linha aceita todos os tcp encaminhados para 172.31.6.173.

Essas são as únicas regras no iptables, se eu executar sudo iptables -t nat -L, o resultado é:

Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination
DNAT       all  --  172.31.0.151         6.6.6.6              to:172.31.6.173

Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination

No entanto, com essas duas regras em vigor, do servidor source(172.31.0.151), quando tentei fazer login no MySql no IP fictício:

mysql -h 6.6.6.6 -u username -p

A saída do tcpdump: (o servidor MySql é uma instância do RDS, o que significa que não posso fazer login para executar o tcpdump, então só posso obter o tcpdump do servidor de origem):

13:41:41.768171 IP 172.31.0.151.50374 > 6.6.6.6.mysql: Flags [S], seq 3441229166, win 62727, options [mss 8961,sackOK,TS val 2723434614 ecr 0,nop,wscale 7], comprimento 0

13:41:45.992114 IP 172.31.0.151.50374 > 6.6.6.6.mysql: Flags [S], seq 3441229166, win 62727, options [mss 8961,sackOK,TS val 2723438838 ecr 0,nop,wscale 7], comprimento 0

13:41:54.184186 IP 172.31.0.151.50374 > 6.6.6.6.mysql: Flags [S], seq 3441229166, win 62727, options [mss 8961,sackOK,TS val 2723447030 ecr 0,nop,wscale 7], comprimento 0

A regra PREROUTING não tem efeito, a tentativa de login ainda está procurando um servidor em 6.6.6.6, em vez de ser NAT para o endereço IP real de 172.31.6.173.

Qualquer conselho será apreciado. Obrigada.

vpn routing networking nat iptables
  • 1 1 respostas
  • 1370 Views

1 respostas

  • Voted
  1. Best Answer
    A.B
    2021-06-08T08:40:27+08:002021-06-08T08:40:27+08:00

    Estou assumindo que a regra do OP foi adicionada ao sistema Ubuntu com endereço IP 172.31.0.151, o mesmo sistema que está iniciando conexões mysql para um endereço fictício.

    Como pode ser visto neste esquema do Netfilter e da rede geral :Fluxo de pacotes no Netfilter e General Networking

    • o primeiro pacote em um fluxo iniciado por um processo local não percorre nat/PREROUTING,
    • mas atravessa nat/OUTPUT,
    • apenas o primeiro pacote (estado NOVO) de uma conexão atravessa a tabela nat (portanto, outros pacotes como respostas não importam aqui de qualquer maneira).

    Portanto, nat/PREROUTING não tem efeito para redirecionar uma conexão iniciada localmente. Isso deve ser feito em nat/OUTPUT. Como isso pode alterar até mesmo a interface a ser usada (provavelmente não no caso do OP), isso aciona uma verificação de redirecionamento posteriormente para lidar com esse caso.

    No final, sua regra deve ser adicionada com:

    sudo iptables -t nat -A OUTPUT -s 172.31.0.151 -d 6.6.6.6 -j DNAT --to-destination 172.31.6.173
    

    Se o sistema tiver apenas um endereço IP: 172.31.0.151, -s 172.31.0.151torna-se supérfluo:

    sudo iptables -t nat -A OUTPUT -d 6.6.6.6 -j DNAT --to-destination 172.31.6.173
    
    • 1

relate perguntas

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Você pode passar usuário/passar para autenticação básica HTTP em parâmetros de URL?

    • 5 respostas
  • Marko Smith

    Ping uma porta específica

    • 18 respostas
  • Marko Smith

    Verifique se a porta está aberta ou fechada em um servidor Linux?

    • 7 respostas
  • Marko Smith

    Como automatizar o login SSH com senha?

    • 10 respostas
  • Marko Smith

    Como posso dizer ao Git para Windows onde encontrar minha chave RSA privada?

    • 30 respostas
  • Marko Smith

    Qual é o nome de usuário/senha de superusuário padrão para postgres após uma nova instalação?

    • 5 respostas
  • Marko Smith

    Qual porta o SFTP usa?

    • 6 respostas
  • Marko Smith

    Linha de comando para listar usuários em um grupo do Windows Active Directory?

    • 9 respostas
  • Marko Smith

    O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL?

    • 3 respostas
  • Marko Smith

    Como determinar se uma variável bash está vazia?

    • 15 respostas
  • Martin Hope
    Davie Ping uma porta específica 2009-10-09 01:57:50 +0800 CST
  • Martin Hope
    kernel O scp pode copiar diretórios recursivamente? 2011-04-29 20:24:45 +0800 CST
  • Martin Hope
    Robert ssh retorna "Proprietário incorreto ou permissões em ~/.ssh/config" 2011-03-30 10:15:48 +0800 CST
  • Martin Hope
    Eonil Como automatizar o login SSH com senha? 2011-03-02 03:07:12 +0800 CST
  • Martin Hope
    gunwin Como lidar com um servidor comprometido? 2011-01-03 13:31:27 +0800 CST
  • Martin Hope
    Tom Feiner Como posso classificar a saída du -h por tamanho 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent Como determinar se uma variável bash está vazia? 2009-05-13 09:54:48 +0800 CST

Hot tag

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve