Mam 2 maszyny wirtualne, jedna działa jako router i serwer Ubuntu i jest połączona z hostem przez połączenie zmostkowane, a druga jest maszyną Kali, która jest połączona z maszyną wirtualną serwera za pośrednictwem połączenia tylko z hostem.
Maszyna Kali ma adres IP 192.168.0.40, a serwer ma adres IP 172.16.23.100.
Reguły iptables, które ustawiłem, są następujące:
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
przejście z komputera Kali na zewnątrz do hosta działa dobrze, ale kiedy próbuję przejść z hosta do komputera Kali albo przez zwykły ping, albo przez ssh, nie przechodzi.
Czy muszę ustawić DNAT, aby działał tylko z określonym portem?
Plik wygenerowany przez iptables-save zgodnie z żądaniem @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
Gdy uruchamiam tcpdump na routerze / serwerze, pokazuje mi, że wysyła żądania arp na adres 172.16.23.101, ale nic nie jest wysyłane, nie rozumiem, dlaczego nie jest łapany w regule NAT, jeśli jest w łańcuch PREROUTING
źródło
iptables-save
?172.16.23.101
? Prawdopodobnie problem nie jest po stronie iptable, ale po stronie interfejsu, który nie wie, że musi odbierać te pakiety. To, co mówisz o braku odpowiedzi ARP, wydaje się to potwierdzać.Odpowiedzi:
Problemem nie były zasady iptables, wszystko było w porządku. ale próbując dostać się do 172.16.23.101, wysłał żądania arp, aby zobaczyć, kto ma ten adres, a który nie.
więc dodałem interfejs podrzędny do ens33 i podałem mu ten adres
Dodałem do pliku „/ etc / network / interfaces” te wiersze
wtedy, jeśli pinguję 172.16.23.101 z tcpdump działającym na serwerze, widzę, że ttl wynosi 63, co oznacza, że przeszedł przez jeden sprzęt warstwy 3, ponieważ domyślne ttl dla linux to 64
źródło