Minha configuração é feita (no mesmo host):
- uma placa de interface de rede (NIC) eth0 com IP estático 192.168.1.10
- um rótulo para o NIC eth0: 0 com IP estático 192.168.1.11
- uma máquina virtual convidada (usando o KVM) em 192.168.122.11 no virbr0
Eu posso SSH a máquina de convidado do anfitrião usando seu IP 192.168.122.11, e eu posso SSH a máquina de anfitrião de uma máquina remota na rede de LAN que usa seu IP 192.168.1.10.
Eu gostaria de tornar o convidado virtual acessível a partir da LAN através do NIC rotulado para que eu possa conectar o SSH em 192.168.122.11, conectando-se a 192.168.1.11 a partir de uma máquina remota.
+--------------+
| 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) |
+----------------------------------------------+
Eu me inspirei em muitas coisas de diferentes tutoriais na web (tudo parece mais ou menos o mesmo), mas nada funciona e não consigo entender a configuração correta.
A idéia é criar regras de PREROUTING, FORWARD e POSTROUTING com o iptables para que os tráfegos de entrada e saída sejam redirecionados corretamente.
Eu editei /etc/sysctl.conf para que ip_fordward = 1 e execute os seguintes comandos 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
O ping 192.168.1.11 ainda funciona bem. Mas a conexão para 192.168.1.11:2222 falha:
$ telnet 192.168.1.11 2222
$ telnet: Unable to connect to remote host: Connection refused
Eu sinto que estou perto de fazer o trabalho, mas perder alguma coisa .. Você pode me dar uma ajudinha?
Atenciosamente,