Моя установка сделана из (на том же хосте):
- Сетевая интерфейсная карта (NIC) eth0 со статическим IP 192.168.1.10
- метка для NIC eth0:0 со статическим IP 192.168.1.11
- виртуальная гостевая машина (использующая KVM) по адресу 192.168.122.11 на virbr0
Я могу SSH гостевой машины с хоста, используя его IP 192.168.122.11, и я могу SSH хост-машины с удаленной машины в сети LAN, используя его IP 192.168.1.10.
Я хотел бы сделать виртуальный гость доступным из локальной сети через помеченную сетевую карту, чтобы я мог подключиться по SSH к 192.168.122.11, подключившись к 192.168.1.11 с удаленной машины.
+--------------+
| Machine Ext2 |
+--------------+
| ssh to 192.168.1.11:2222
|
+--------+
| Router |
+--------+
|
| (192.168.1.11:2222)
+----------------------------------------------+
| Machine Ext1 (Host) |
| <--> iptables <--> Guest (192.168.122.11:22) |
+----------------------------------------------+
Я был вдохновлен многими вещами из разных уроков в Интернете (все выглядят более или менее одинаково), но ничего не работает, и я не могу понять правильную настройку ..
Идея состоит в том, чтобы создать правила PREROUTING, FORWARD и POSTROUTING с iptables, чтобы входящие и исходящие потоки трафика были перенаправлены правильно.
Я отредактировал /etc/sysctl.conf так, чтобы ip_fordward = 1, и запустил следующие команды iptables:
$ sudo iptables -t nat -A PREROUTING -i virbr0 -p tcp -d 192.168.1.11 --dport 2222 -j DNAT --to-destination 192.168.122.11:22
$ sudo iptables -A FORWARD -p tcp -d 192.168.122.11 --dport 22 -j ACCEPT
$ sudo iptables -t nat -A POSTROUTING -o virbr0 -p tcp -d 192.168.122.11 -j ACCEPT
Пинг 192.168.1.11 все еще работает нормально. Но подключение к 192.168.1.11:2222 не удается:
$ telnet 192.168.1.11 2222
$ telnet: Unable to connect to remote host: Connection refused
Я чувствую, что я близко, чтобы заставить это работать, но что-то упускаю .. Можете ли вы дать мне небольшую помощь?
С наилучшими пожеланиями,