Um Roteador VPN Linux tem o IP 192.168.1.1/24 (eth0), na mesma rede existem outros dispositivos de rede com IPs fixos Máquina A 192.168.1.20 e Máquina B 192.168.1.21. Para acessar esses dispositivos através de VPN, eu me conecto ao servidor VPN, insiro o endereço IP da VPN do roteador e altero o último octeto.
Por exemplo, se o IP da VPN do roteador é 10.1.1.1/24, então para acessar a Máquina A eu vou para 10.1.1.20 e para acessar a Máquina B 10.1.1.21 ... Tudo isso funciona perfeitamente.
O problema é: Às vezes, uma Máquina C e uma Máquina D também estão presentes na rede, mas elas têm outros IPs (fixos) fora da sub-rede, por exemplo: 192.168.2.50 e 192.168.2.51.
No roteador VPN, adicionei uma interface de rede virtual (eth0: 0) com o IP 192.168.2.1 ... agora posso acessar as máquinas C e D diretamente do roteador usando SSH, mas nem da máquina A nem da B nem acima VPN.
Por VPN Eu só tenho permissão para acessar dispositivos com IP 192.168.1.X.
Meu objetivo (ou primeira ideia) é mapear no roteador os IPs da máquina C e D para outro IP, para fazer o servidor VPN pensar que há mais dois dispositivos com IPs "acessíveis" ...
Por exemplo, O IP 192.168.2.50 real do Machine C deve ser mapeado como 192.168.1.50 .. e da VPN eu gostaria de acessá-lo como 10.1.1.50.
Isso é possível? Ou talvez alguém tenha uma ideia melhor / mais simples?
Atualização 16.11.2015:
O roteador VPN tem uma opção onde você pode adicionar scripts de inicialização, nesta parte eu tenho o seguinte:
#This part comes automatically
iptables -t nat -D PREROUTING -d '10.1.1.0/24' -i tun0 -j NETMAP --to '192.168.1.0/24'
iptables -t nat -I PREROUTING -d '10.1.1.0/24' -i tun0 -j NETMAP --to '192.168.1.0/24'
iptables -t nat -D POSTROUTING -s '192.168.1.0/24' -o tun0 -j NETMAP --to '10.0.1.0/24'
iptables -t nat -I POSTROUTING -s '192.168.1.0/24' -o tun0 -j NETMAP --to '10.0.1.0/24'
#Start of manually entered data
ifconfig eth0:1 192.168.2.1
#Reach machine C
iptables -t nat -D PREROUTING -d '10.1.1.50' -i tun0 -j NETMAP --to '192.168.2.50'
iptables -t nat -I PREROUTING -d '10.1.1.50' -i tun0 -j NETMAP --to '192.168.2.50'
iptables -t nat -D POSTROUTING -s '192.168.2.50' -o tun0 -j NETMAP --to '10.1.1.50'
iptables -t nat -I POSTROUTING -s '192.168.2.50' -o tun0 -j NETMAP --to '10.1.1.50'
#Reach machine D
iptables -t nat -D PREROUTING -d '10.1.1.51' -i tun0 -j NETMAP --to '192.168.2.51'
iptables -t nat -I PREROUTING -d '10.1.1.51' -i tun0 -j NETMAP --to '192.168.2.51'
iptables -t nat -D POSTROUTING -s '192.168.2.51' -o tun0 -j NETMAP --to '10.1.1.51'
iptables -t nat -I POSTROUTING -s '192.168.2.51' -o tun0 -j NETMAP --to '10.1.1.51'
Adicionando as entradas manuais após o gerado automaticamente, torna-se possível alcançar Machine C e Machine D usando VPN .. A desvantagem é clara, se eu tiver 20 máquinas eu preciso de uma longa lista para adicionar com iptables. Ou existe uma maneira melhor de fazer isso?
A comunicação direta da Família 192.168.1.X (por exemplo, Máquina A e Máquina B) para a Família 192.168.2.X (por exemplo, Máquina C e Máquina D) e vicecersa ainda não é possível.
Tags vpn virtual-network