Ubuntu

OpenVPN 網路無法訪問

  • May 17, 2011

我正在努力在 Linode 上設置對一組虛擬機的 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

並且,區域網路上的更多伺服器具有相同範圍內的地址。實用程序伺服器託管 OpenVPN 這是我伺服器的 OpenVPN 配置,客戶端配置不可用,因為我使用的是Shimo for OSX:

dev tun
mode server
tls-server
proto udp
port 1194
server 10.77.22.0 255.255.255.0
push "route 10.77.22.0 255.255.255.0"
push "route 192.168.154.0 255.255.128.0"
ifconfig-pool-persist ipp.txt
persist-key
persist-tun
client-to-client
ca ca.crt
dh dh1024.pem
cert server.crt
key server.key
tls-auth ta.key 0
cipher BF-CBC
comp-lzo
user nobody
group nogroup
keepalive 10 120
status openvpn-status.log
verb 3 

當連接到 VPN 時,我可以 ping VPN 網關,並通過 SSH 登錄,所有正常操作都沒有問題,tcpdump確認這些數據包正在通過tun0我的 Mac 上的設備。

嘗試 ping 192.168.154.127VPN 不起作用,tcpdump確認設備上沒有活動tun0

我從閱讀這篇文章中了解到,在添加以下行時,我需要向我的 中添加route配置: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 10.77.22.2
route: netmask doesn't match route address
Usage: route [-nNvee] [-FC] []           List kernel routing tables
      route [-v] [-FC] {add|del|flush} ...  Modify routing table for 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 可能的地址系列列表(支持路由):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)

route在配置文件中的聲明需要引用網路 ID 192.168.128.0,而不是192.168.154.0. route令人討厭,因為你給它一個網路 ID 和子網遮罩,而不是放在一起時,主機 ID 部分有 1。

二進制的 192.168.154.0 是:

11000000.10101000.10011010.00000000

子網遮罩 255.255.128.0 如下所示:

11111111.11111111.10000000.00000000

應用於 192.168.154.0“網路 ID”的子網遮罩如下所示:

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

您可以看到被 /17 子網遮罩遮罩的 192.168.154.0 在子網遮罩結束後產生 1。192.168.154.0/17“網路”的網路ID實際上是192.168.128.0/17。更改route配置文件中的語句,該route命令將停止嘔吐。

引用自:https://serverfault.com/questions/270252