Não é possível alcançar um IP interno do mundo externo usando o iptables NAT

1

Tenho 2 VMs, uma está atuando como um roteador e um servidor Ubuntu e está conectada ao host por meio de uma conexão em ponte e a outra é uma máquina Kali conectada à VM do servidor por meio de uma conexão somente de host. / p>

A máquina Kali tem um IP de 192.168.0.40 e o servidor tem um IP de 172.16.23.100.

As regras do iptables que eu defini são:

Chain PREROUTING (policy ACCEPT 114 packets, 20912 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 DNAT       all  --  ens33  *       0.0.0.0/0            172.16.23.101        to:192.168.0.40

Chain INPUT (policy ACCEPT 60 packets, 8700 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 6 packets, 422 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain POSTROUTING (policy ACCEPT 6 packets, 422 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    2   168 MASQUERADE  all  --  *      ens33   192.168.0.0/24       0.0.0.0/0           
    0     0 SNAT       all  --  *      ens33   192.168.0.40         0.0.0.0/0            to:172.16.23.101

ir da máquina Kali para o lado de fora para o host funciona bem, mas quando eu tento ir do host para a máquina Kali ou pelo simples ping ou com o ssh ele não passa.

Preciso definir o DNAT para funcionar apenas com uma porta específica?

O arquivo gerado pelo iptables-save conforme a requisição de @grawity

# Generated by iptables-save v1.6.0 on Thu Jul 27 06:58:13 2017
*filter
:INPUT ACCEPT [686:75420]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [485:45172]
-A FORWARD -i ens33 -o ens38 -j ACCEPT
-A FORWARD -i ens38 -o ens33 -j ACCEPT
COMMIT
# Completed on Thu Jul 27 06:58:13 2017
# Generated by iptables-save v1.6.0 on Thu Jul 27 06:58:13 2017
*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [4:240]
:POSTROUTING ACCEPT [4:240]
-A PREROUTING -d 172.16.23.101/32 -i ens33 -j DNAT --to-destination 192.168.0.40
-A POSTROUTING -s 192.168.0.0/24 -o ens33 -j MASQUERADE
-A POSTROUTING -s 192.168.0.40/32 -o ens33 -j SNAT --to-source 172.16.23.101
COMMIT
# Completed on Thu Jul 27 06:58:13 2017

Quando eu executo um tcpdump no roteador / servidor, ele me mostra que está enviando solicitações arp para o endereço 172.16.23.101, mas nada está sendo enviado de volta, não entendo porque não foi detectado na regra NAT se está na cadeia de PREROUTING

    
por Muffinator 27.07.2017 / 08:50

1 resposta

2

O problema não era as regras do iptables, elas estavam bem. mas ao tentar chegar em 172.16.23.101 enviou requisições arp para ver quem tem aquele endereço, que não era ninguém.

então eu adicionei uma sub-interface para o ens33 e dei-lhe esse endereço

eu adicionei ao arquivo '/ etc / network / interfaces' estas linhas

auto ens33:1
iface ens33:1 inet static
    address 172.16.23.101
    netmask 255.255.0.0

então se eu pingar 172.16.23.101 com o tcpdump rodando no servidor eu posso ver que o ttl é 63, o que significa que ele passou por um equipamento da camada 3, porque o padrão ttl para o linux é 64

    
por 28.07.2017 / 09:04