1

У меня есть две виртуальные машины, одна выступает в роли маршрутизатора и сервера Ubuntu и подключена к хосту через мостовое соединение, а другая - машина Kali, которая подключена к виртуальной машине сервера через соединение только с хостом.

Машина Kali имеет IP-адрес 192.168.0.40, а сервер имеет IP-адрес 172.16.23.100.

Правила iptables, которые я установил, таковы:

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

переход от машины Kali снаружи к хосту работает нормально, но когда я пытаюсь перейти от хоста к машине Kali либо простым ping, либо с помощью ssh, он не проходит.

Нужно ли устанавливать DNAT для работы только с конкретным портом?

Файл, сгенерированный iptables-save согласно запросу @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

Когда я запускаю tcpdump на маршрутизаторе / сервере, он показывает мне, что он отправляет запросы arp на адрес 172.16.23.101, но ничего не возвращается, я не совсем понимаю, почему он не попадает в правило NAT, если он находится в ПРЕДОХРАНИТЕЛЬНАЯ цепочка

1 ответ1

2

Проблема была не в правилах iptables, а в порядке. но, пытаясь добраться до 172.16.23.101, он отправлял запросы arp, чтобы узнать, у кого есть этот адрес, а кого нет.

поэтому я добавил подчиненный интерфейс к ens33 и дал ему этот адрес

я добавил в файл /etc /network /interfaces эти строки

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

затем, если я пингую 172.16.23.101 с tcpdump, работающим на сервере, я могу видеть, что ttl равен 63, что означает, что он прошел через одно оборудование уровня 3, потому что ttl по умолчанию для linux равен 64

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .