Eu tenho um Ubuntu Server 14.04 executando o VirtualBox com algumas máquinas. Essas máquinas são OpenStack Fuel instalado e não posso alterar as interfaces NIC infra (dois hostonly e um NAT).
Uma dessas máquinas está executando o painel de Controle de Combustível, mas acessível somente por uma das interfaces do hostonly (10.20.0.2).
Minha rede doméstica é 192.168.25.x. A máquina host (Ubuntu) externa é 192.168.25.25.
Agora eu tenho uma máquina Windows na minha rede doméstica e preciso acessar o painel Combustível em execução na VM (IP 10.20.0.2).
O que eu preciso é encaminhar a interface do hardware 192.168.25.25 para a interface VM do hostboxbox 10.20.0.X do virtualbox para alcançar o IP 10.20.0.2.
Este é o meu host ifconfig mostrando todas as interfaces:
root@AKRAB:~# ifconfig
lo Link encap:Loopback Local
inet end.: 127.0.0.1 Masc:255.0.0.0
endereço inet6: ::1/128 Escopo:Máquina
UP LOOPBACK RUNNING MTU:65536 Métrica:1
pacotes RX:19685 erros:0 descartados:0 excesso:0 quadro:0
Pacotes TX:19685 erros:0 descartados:0 excesso:0 portadora:0
colisões:0 txqueuelen:0
RX bytes:7674590 (7.6 MB) TX bytes:7674590 (7.6 MB)
vboxnet0 Link encap:Ethernet Endereço de HW 0a:00:27:00:00:00
inet end.: 10.20.0.1 Bcast:10.20.0.255 Masc:255.255.255.0
endereço inet6: fe80::800:27ff:fe00:0/64 Escopo:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Métrica:1
pacotes RX:0 erros:0 descartados:0 excesso:0 quadro:0
Pacotes TX:167 erros:0 descartados:0 excesso:0 portadora:0
colisões:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:22260 (22.2 KB)
vboxnet1 Link encap:Ethernet Endereço de HW 0a:00:27:00:00:01
inet end.: 172.16.0.254 Bcast:172.16.0.255 Masc:255.255.255.0
endereço inet6: fe80::800:27ff:fe00:1/64 Escopo:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Métrica:1
pacotes RX:0 erros:0 descartados:0 excesso:0 quadro:0
Pacotes TX:437 erros:0 descartados:0 excesso:0 portadora:0
colisões:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:137886 (137.8 KB)
vboxnet2 Link encap:Ethernet Endereço de HW 0a:00:27:00:00:02
inet end.: 172.16.1.1 Bcast:172.16.1.255 Masc:255.255.255.0
endereço inet6: fe80::800:27ff:fe00:2/64 Escopo:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Métrica:1
pacotes RX:0 erros:0 descartados:0 excesso:0 quadro:0
Pacotes TX:464 erros:0 descartados:0 excesso:0 portadora:0
colisões:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:150336 (150.3 KB)
wlan0 Link encap:Ethernet Endereço de HW 00:13:46:94:18:c1
inet end.: 192.168.25.25 Bcast:192.168.25.255 Masc:255.255.255.0
endereço inet6: fe80::213:46ff:fe94:18c1/64 Escopo:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Métrica:1
pacotes RX:2354945 erros:0 descartados:4 excesso:0 quadro:0
Pacotes TX:1237088 erros:0 descartados:0 excesso:0 portadora:0
colisões:0 txqueuelen:1000
RX bytes:3455421823 (3.4 GB) TX bytes:103231994 (103.2 MB)
root@AKRAB:~#
Você pode ver a interface externa wlan0 (minha rede doméstica) e o vboxnet0 ocultando a rede para a qual desejo ir (10.20.0.2).
Todos esses endereços são estáticos, incluindo o destino. O número da porta que desejo alcançar na VM é 8443 (Mirantis Fuel Dashboard).
Tentei isso sem sucesso:
root@AKRAB:~# iptables -I FORWARD -d 10.20.0.2 -m comment --comment "Accept to forward Fuel DashBoard traffic" -m tcp -p tcp --dport 8443 -j ACCEPT
root@AKRAB:~# iptables -t nat -I PREROUTING -m tcp -p tcp --dport 8443 -m comment --comment "redirect pkts to virtual machine" -j DNAT --to-destination 10.20.0.2:8443
root@AKRAB:~# iptables -t nat -I POSTROUTING -m comment --comment "NAT the src ip" -d 10.20.0.2 -o vboxnet0 -j MASQUERADE
Resultados:
root@AKRAB:~# iptables -nvL FORWARD
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT tcp -- * * 10.20.0.2 0.0.0.0/0 /* Accept to forward Fuel DashBoard return traffic */ tcp spt:8443
0 0 ACCEPT tcp -- * * 0.0.0.0/0 10.20.0.2 /* Accept to forward Fuel DashBoard traffic */ tcp dpt:8443
e
root@AKRAB:~# iptables -t nat -nvL
Chain PREROUTING (policy ACCEPT 73 packets, 6145 bytes)
pkts bytes target prot opt in out source destination
18 912 DNAT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:8443 /* redirect pkts to virtual machine */ to:10.20.0.2:8443
Chain INPUT (policy ACCEPT 73 packets, 6145 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 759 packets, 47828 bytes)
pkts bytes target prot opt in out source destination
Chain POSTROUTING (policy ACCEPT 759 packets, 47828 bytes)
pkts bytes target prot opt in out source destination
0 0 MASQUERADE all -- * vboxnet0 0.0.0.0/0 10.20.0.2 /* NAT the src ip */