Tabelas IP como proxy básico que não funciona como esperado

0

Estou tentando realizar o encaminhamento de pacotes simples em um servidor Ubuntu 14.04 (IP = 192.168.36.217) usando o iptables. Eu quero pegar pacotes de entrada destinados ao servidor em uma porta específica e reescrevê-los para um novo destino, com uma porta especificada (HTTPS) e um IP de origem definido para este servidor e porta de origem configurado com NAT, para que possa ser revertido nos pacotes de retorno.

As tabelas mangle, raw e security estão vazias. Todas as regras de todas as tabelas têm um padrão de ACCEPT. Eu tenho 1 regra DNAT em PREROUTING e 1 regra SNAT em POSTROUTING. Então eu adicionei algumas regras de LOG apenas para verificar o que estava acontecendo. Aqui estão as tabelas nat e o filtro:

tabela de filtros

Chain INPUT (policy ACCEPT 249 packets, 15888 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1      143  8348 LOG        tcp  --  *      *       10.15.4.115          0.0.0.0/0            LOG flags 0 level 4 prefix "l++: INP of interest: "

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 169 packets, 12148 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1        0     0 LOG        tcp  --  *      *       0.0.0.0/0            45.45.45.45          LOG flags 0 level 4 prefix "l++: filter\OUTPUT : "

tabela nat

Chain PREROUTING (policy ACCEPT 2762 packets, 279K bytes)
num   pkts bytes target     prot opt in     out     source               destination
1       33  1672 LOG        tcp  --  *      *       10.15.4.115          0.0.0.0/0            tcp dpt:65001 LOG flags 0 level 4 prefix "l++: nat PRE "
2       15   760 DNAT       tcp  --  *      *       10.15.4.115          0.0.0.0/0            tcp dpt:65001 to:45.45.45.45:45001
3        0     0 LOG        tcp  --  *      *       10.15.4.115          0.0.0.0/0            LOG flags 0 level 4 prefix "l++: nat PRE BOT"

Chain INPUT (policy ACCEPT 263 packets, 46239 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1        0     0 LOG        all  --  *      *       10.15.4.115          0.0.0.0/0            LOG flags 0 level 4 prefix "l++: nat INP: "

Chain OUTPUT (policy ACCEPT 60 packets, 4285 bytes)
num   pkts bytes target     prot opt in     out     source               destination

Chain POSTROUTING (policy ACCEPT 60 packets, 4285 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1        0     0 LOG        tcp  --  *      *       10.15.4.115          0.0.0.0/0            LOG flags 0 level 4 prefix "l++: nat POST end: "
2        0     0 SNAT       tcp  --  *      em1     10.15.4.115          0.0.0.0/0            to:192.168.36.217
3        0     0 LOG        tcp  --  *      em1     192.168.36.217       0.0.0.0/0            LOG flags 0 level 4 prefix "l++: nat POST after SNAT: "
4        0     0 LOG        tcp  --  *      em1     10.15.4.115          0.0.0.0/0            LOG flags 0 level 4 prefix "l++: nat POST after SNAT what"

Quando eu testo (a partir de 10.15.4.115: telnet 192.168.36.217 65001), isso é tudo que vejo no log de mensagens do sistema:

May 19 15:20:40 LDAP-Proxy kernel: [1891508.926283] l++: nat PRE IN=em1 OUT=  
MAC=<omitted> SRC=10.15.4.115 DST=192.168.36.217 LEN=52 TOS=0x00 PREC=0x00 
TTL=127 ID=21164 DF PROTO=TCP SPT=59394 DPT=65001 WINDOW=64512 RES=0x00 SYN 
URGP=0

Eu acredito que eu tenho a regra PREROUTING dentro das regras de LOG. O pacote chega, chega à regra DNAT e prontamente desaparece.

Terei todo o prazer em receber sugestões, ideias e palpites sobre este mau comportamento. Obrigada!

    
por Kevin Buchs 19.05.2016 / 22:42

1 resposta

1

Além de um conjunto de regras iptables apropriado, o encaminhamento precisa ser ativado no kernel. Verifique a configuração atual (cujo padrão é desabilitado):

cat /proc/sys/net/ipv4/ip_forward

E, se desativado (0), pode ser ativado (não persistente) via:

echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward

ou (ainda não persistente) via:

sudo sysctl -w net.ipv4.ip_forward=1

Para uma configuração persistente (após a próxima reinicialização), edite como sudo o arquivo /etc/sysctl.conf e altere esta linha:

# Uncomment the next line to enable packet forwarding for IPv4
#net.ipv4.ip_forward=1

Para isso:

# Uncomment the next line to enable packet forwarding for IPv4
net.ipv4.ip_forward=1
    
por Doug Smythies 20.05.2016 / 21:06