OpenVPNnetworking无法访问

我正在努力在Linodebuild立一组虚拟机的VPN访问,拓扑结构如下所示:

 db.example.com LAN:(eth0:0)192.168.154.127/255.255.128.0
 utility.example.com LAN:(eth0:0)192.168.164.229/255.255.128.0

而且,局域网中的地址在相同范围内的服务器更多。 实用程序服务器托pipeOpenVPN

这是我的服务器的OpenVPNconfiguration,客户端configuration不可用,因为我使用Shimo OSX:

 dev tun
模式服务器
 TLS服务器
原始udp
端口1194
服务器10.77.22.0 255.255.255.0
推“路线10.77.22.0 255.255.255.0”
推“路由192.168.154.0 255.255.128.0”
 ifconfig-pool-persist ipp.txt
坚持键
坚持-TUN
客户端到客户端
 ca ca.crt
 dh dh1024.pem
 cert server.crt
密钥server.key
 tls-auth ta.key 0
密码BF-CBC
 COMP-LZO
用户没人
团体团体
保持活力10 120
状态openvpn-status.log
动词3 

当连接到VPN时,我可以ping通VPN网关,并通过SSHlogin,并且所有正常操作没有问题, tcpdump确认这些数据包正在通过我的Mac上的tun0设备。

试图在VPN上ping 192.168.154.127不起作用, tcpdump证实tun0设备上没有任何活动。

我从阅读理解,我需要添加一个routeconfiguration到我的server.conf ,添加行时:

 route 192.168.154.0 255.255.128.0 

服务器启动时会引发一个错误,这里是内联:

 / sbin / route add -net 192.168.154.0 netmask 255.255.128.0 gw 1​​0.77.22.2
路由:networking掩码不匹配的路由地址
用法:route [-nNvee] [-FC] []列出内核路由表
        route [-v] [-FC] {add | del | flush} ...修改AF的路由表。 

  route {-h|--help} [<AF>] Detailed usage syntax for specified AF. route {-V|--version} Display version/author and exit. -v, --verbose be verbose -n, --numeric don't resolve names -e, --extend display other/more information -F, --fib display Forwarding Information Base (default) -C, --cache display routing cache instead of FIB 

=使用'-A'或' – '; 默认:inet
可能的地址系列列表(支持路由):
(DARPA Internet)inet6(IPv6)ax25(AMPR AX.25)
netrom(AMPR NET / ROM)ipx(Novell IPX)ddp(Appletalk DDP)
x25(CCITT X.25)

我怀疑如果我能解决这个/sbin/route问题,情况会按预期工作,但我不明白为什么这样做是失败的。

客户端通常会得到如下的地址:

 tun0: flags=8951 mtu 1500 inet 10.77.22.6 --> 10.77.22.5 netmask 0xffffffff open (pid 5142) 

你的configuration文件中的route语句需要引用networking号192.168.128.0 ,而不是192.168.154.0route是barfing,因为你给它一个networkingID和子网掩码,当它们合在一起时,在主机ID部分有1。

二进制中的192.168.154.0是:

 11000000.10101000.10011010.00000000 

子网掩码255.255.128.0看起来像:

 11111111.11111111.10000000.00000000 

应用于192.168.154.0“networkingID”的子网掩码如下所示:

  11000000.10101000.10011010.00000000 AND 11111111.11111111.10000000.00000000 --------------------------------------- 11000000.10101000.10000000.00000000 = 192.168.128.0 

你可以看到子网掩码结束后,由子网掩码掩码192.168.154.0结果为1。 192.168.154.0/17“networking”的networkingID实际上是192.168.128.0/17。 在configuration文件中改变你的route语句, route命令将停止barfing。

启用ip_forward是必需的。 一个Linux的盒子将不会路由,除非是。 在Ubuntu上,解决这个问题的简单方法是调整/etc/sysctl.conf,取消ip_forward行的注释。 然后重新启动系统或运行sysctl -p