Linux VPN路由器的IP地址为192.168.1.1/24(eth0),在同一networking中有其他networking设备,IP地址为机器A 192.168.1.20和机器B 192.168.1.21。 要通过VPN访问此设备,我连接到VPN服务器并input路由器的VPN IP地址,然后更改最后一个八位字节。
例如,如果路由器的VPN IP是10.1.1.1/24,那么访问机器AI去10.1.1.20并访问机器B 10.1.1.21 …所有这一切都很完美。
问题是:有时机器C和机器D也出现在networking上,但他们有另一个(固定的)IP子网,例如:192.168.2.50和192.168.2.51。
在VPN路由器上,我添加了一个IP 192.168.2.1的虚拟networking接口(eth0:0)…现在我可以直接使用SSH从路由器到达机器C和D,但是既不能来自机器A也不能通过VPN。
通过VPN我只允许访问IP为192.168.1.X的设备。
我的目标(或第一个想法)是在路由器中将来自机器C和D的IP映射到另一个IP,以使得VPN服务器认为有两个具有“可达”IP的设备…
例如,机器C的真实IP 192.168.2.50应映射为192.168.1.50 ..从VPN我想要访问它作为10.1.1.50。
这可能吗? 或者,也许有人有一个更好/更简单的想法?
更新16.11.2015:
VPN路由器有一个选项,您可以添加启动脚本,在这一部分我有以下几点:
#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'
在自动生成后添加手动条目,可以使用VPN访问Machine C和Machine D.不利的一面很明显,如果我有20台机器,我需要一个长长的列表来添加iptables。 还是有更好的方法呢?
从192.168.1.X系列(例如机器A和机器B)到192.168.2.X系列(例如机器C和机器D)和代理商a的直接通信仍然是不可能的。