Ubuntu / iptables: Usando um servidor como intermediário para falar com o servidor com firewall [duplicado]

1

Eu tenho uma situação em que preciso me comunicar com uma API que permite apenas conexões de um determinado IP.

Então, api.example.com aceita conexões na porta 443 da lista de permissões-ip

Eu quero poder conectar-me de qualquer lugar à porta ip-list permitida 443, e fazer com que ela encaminhe os pacotes para api.example.com na porta 443 e envie as respostas de volta para a máquina de conexão.

Eu suponho que há alguma maneira de fazer isso semelhante a um proxy de squid transparente, mas não consigo entender.

Eu tentei seguir os exemplos aqui ( link ) usando as instruções abaixo, mas sem sucesso.

iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 443 -j DNAT --to api.example.com:443
iptables -t nat -A POSTROUTING -o eth1 -d api.example.com -j SNAT --to whitelisted-ip

Qualquer ajuda seria apreciada.

Atualização:

Eu também tentei o abaixo, sem sucesso:

iptables -t nat -A PREROUTING  -p tcp -d whitelisted-ip  --dport 443 -j DNAT --to api.example.com:443
iptables -t nat -A POSTROUTING -p tcp -s api.example.com --sport 443 -j SNAT --to whitelisted-ip:443

Obrigado

    
por Asfand Qazi 29.05.2015 / 12:59

3 respostas

0

Acabei de perceber que esta é uma duplicata de outra pergunta:

Como fazer o encaminhamento de porta de um ip para outro ip na mesma rede?

Eu trabalhei com:

iptables -t nat -A PREROUTING -p tcp --dport 443 -j DNAT --to-destination api.example.com:443
iptables -t nat -A POSTROUTING -p tcp -d api.example.com --dport 443 -j SNAT --to-source whitelisted-ip

Junto com o sysctl de encaminhamento de ip:

echo 1 > /proc/sys/net/ipv4/ip_forward
    
por 29.05.2015 / 15:56
0

Pelo que entendi Você quer alcançar o servidor de qualquer lugar com um ip (whitelisted-ip) qual não é o ip do cliente que você está usando. Você não pode fazer isso porque você pode ser capaz de alcançar o servidor com o whitelisted-ip, mas o servidor não poderá responder porque simplesmente não é o seu endereço IP na rede

    
por 29.05.2015 / 14:02
0

No shell whitelisted-ip, você pode tentar usar o netcat para essas tarefas.

Ao emitir o comando abaixo no shell whitelisted-ip, você ligará a porta 4443 e encaminhará a conexão para api.example.com:443.

nc -l -p 4443 -c "nc api.example.com 443"

Então você pode se conectar ao whitelisted-ip: 4443 de qualquer outro endpoint.

Lembrete : eu não recomendo que isso seja vinculado a qualquer interface acessível ao público sem qualquer proteção, você poderia vincular a porta à interface de loopback adicionando -s 127.0.0.1 argumento.

    
por 29.05.2015 / 15:28