Я публикую здесь, потому что у меня есть сервер, и я хочу перенаправить порт 2121 моего основного интерфейса (eth0) на порт 21 моего вторичного интерфейса (virbr0).
Это моя конфигурация:
Physical server OS : Ubuntu Server 16.04 LTS,
Firewall software : UFW v.0.35
Virtual Machine OS : Windows 7 Professional
Hypervisor : OpenStack KVM (QEMU).
Конфигурация IP сервера:
eth0
address 91.121.XXX.XXX
netmask 255.255.255.0
network 91.121.XXX.0
broadcast 91.121.XXX.255
gateway 91.121.XXX.254
virbr0
address 192.168.122.1
gateway 192.168.122.1
Конфигурация серверных маршрутов:
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 91.121.XXX.254 0.0.0.0 UG 0 0 0 eth0
91.121.XXX.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
Конфигурация UFW:
I have followed these instructions :
NAT and FORWARD with Ubuntu’s ufw firewall - https://gist.github.com/kimus/9315140
Конфигурация IP ВМ:
IP address : 192.168.122.59
GATEWAY : 192.168.122.1
Вот что я хочу сделать:
redirect 91.121.XXX.XXX:2121 to 192.168.122.59:21 (VM).
eth0:2121 -> virbr0:21
Примечание: виртуальная машина подключена к Интернету, по некоторым причинам я хочу получить доступ к серверу FTP (Typsoft), установленному на ней через порт 21.
Порт 21 моего сервера уже используется другим устройством. И я хочу использовать порт 2121 для доступа к ftp-серверу, присутствующему на виртуальной машине.
Вы можете помочь мне ?
Я никогда не использовал UFW для конфигурации iptables. Я всегда использовал сценарии iptables / bash в командной строке для выполнения своего брандмауэра. Итак, мой ответ здесь будет в таком формате.
Это правило предназначено для выполнения желаемого NAT:
iptables -t nat -A PREROUTING -d 91.121.XXX.XXX -p tcp --dport 2121 -j DNAT --to 192.168.122.59:21
Что он делает, так это принимает TCP-соединения на IP 91.121.XXX.XXX:2121 и NAT их к вашей виртуальной машине на порту 21.
Предполагая, что ваш FORWARD
политика установлена на DROP
, вам также необходимо убедиться, что вы разрешаете подключение к виртуальной машине извне через:
iptables -A FORWARD -d 192.168.122.59 -p tcp --dport 21 -j ACCEPT
Оба эти правила НЕОБХОДИМЫ для правильной работы NAT / переадресации в вашем сценарии (хотя, если вы FORWARD
политика ACCEPT
то второе правило в FORWARD
цепь не нужна).
Если это не сработает, опубликуйте вывод iptables -vnL
так же как iptables -t nat -vnL
и я могу помочь дальше.
Надеюсь это поможет.