首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >开放VPN故障排除

开放VPN故障排除
EN

Server Fault用户
提问于 2015-02-26 10:30:29
回答 1查看 265关注 0票数 0

我正试图在我们的两个办公室之间建立一个站点对站点的VPN连接。我使用的虚拟专用网服务器是2 "Edgerouter“,我使用的隧道软件是OpenVPN。

目前的设置是这样的:

-

代码语言:javascript
复制
R1:
LAN subnet: 192.168.2.0/24
LAN port: 192.168.2.1

WAN port: X.X.X.X

-

代码语言:javascript
复制
R2:
LAN subnet: 10.10.0.0/24
LAN port: 10.10.0.34

WAN port: Y.Y.Y.Y

-

代码语言:javascript
复制
R1 Open VPN config:
 openvpn vtun0 {
     local-address 192.168.2.1 {
     }
     local-port 1194
     mode site-to-site
     openvpn-option --comp-lzo
     openvpn-option --float
     openvpn-option "--ping 10"
     openvpn-option "--ping-restart 20"
     openvpn-option --ping-timer-rem
     openvpn-option --persist-tun
     openvpn-option --persist-key
     openvpn-option "--user nobody"
     openvpn-option "--group nogroup"
     remote-address 10.10.0.39
     remote-host X.X.X.X
     remote-port 1194
     shared-secret-key-file /config/auth/secret
 }

-

代码语言:javascript
复制
R2 Open VPN config:
 openvpn vtun0 {
     local-address 10.10.0.39 {
     }
     local-port 1194
     mode site-to-site
     openvpn-option --comp-lzo
     openvpn-option --float
     openvpn-option "--ping 10"
     openvpn-option "--ping-restart 20"
     openvpn-option --ping-timer-rem
     openvpn-option --persist-tun
     openvpn-option --persist-key
     openvpn-option "--user nobody"
     openvpn-option "--group nogroup"
     remote-address 192.168.2.1
     remote-host Y.Y.Y.Y
     remote-port 1194
     shared-secret-key-file /config/auth/secret
 }

-

代码语言:javascript
复制
show openvpn status site-to-site on R1

OpenVPN client status on vtun0 []

Remote CN       Remote IP       Tunnel IP       TX byte RX byte Connected Since
--------------- --------------- --------------- ------- ------- ------------------------
None (PSK)      Y.Y.Y.Y   10.10.0.39        51.6K   51.0K N/A

-

代码语言:javascript
复制
show openvpn status site-to-site on R2

OpenVPN client status on vtun0 []

Remote CN       Remote IP       Tunnel IP       TX byte RX byte Connected Since
--------------- --------------- --------------- ------- ------- ------------------------
None (PSK)      X.X.X.X   192.168.2.1       85.3K   84.5K N/A

-

代码语言:javascript
复制
Routing table R1:
IP              Next hop    INT     TYPE
0.0.0.0/0       X.X.X.XGW   eth1    static
127.0.0.0/8                 lo      connected
192.168.2.0/24              eth0    connected
X.X.X.X/X                   eth1    connected
10.10.0.0/24                vtun0   static
10.10.0.39/32               vtun0   connected

-

代码语言:javascript
复制
Routing table R2:
IP              Next hop    INT     TYPE
0.0.0.0/0       Y.Y.Y.YGW   eth0    static
127.0.0.0/8                 lo      connected
10.10.0.0/24                eth1    connected
Y.Y.Y.Y/Y                   eth0    connected   
192.168.2.0/24              vtun0   static
192.168.2.1/32              vtun0   connected   

在192.168.2.0LAN(在R1上)上的主机上,我可以平10.10.0.34 ( R2上的局域网端口IP ),但不能在10.10.0.4 (R2局域网上的主机)。

我的配置有什么问题吗?

EN

回答 1

Server Fault用户

发布于 2015-02-26 10:49:55

这通常与路由有关。如果您可以从一个OpenVPN端点到另一个端点,那么您应该非常接近工作设置--但是:

  • 如果需要在特定端点之外访问LAN,请确保启用了IP转发。
  • 连接的远程端的客户端不知道如何返回连接的另一端。这是正确的,无论是通过隧道。

您可以通过在您选择的iroutepush语句中使用openvpn.conf来修复这个问题。如果您要连接两个网络( x.x.x.xy.y.y.y ),那么在服务器端(例如x.x.x.x),您可以这样做:

  • 例如push "route net mask"push "route x.x.x.x 255.255.255.0"。这将使y.y.y.y上的远程客户端通过隧道返回到x.x.x.x的正确路线。
  • 如果服务器端(x.x.x.x)需要能够看到位于y.y.y.y的OpenVPN网关以外的站点,则还需要使用iroute语句。将iroute y.y.y.y 255.255.255.0放在服务器端以实现这一点。这基本上让OpenVPN知道哪个客户端负责特定的子网。
    • iroute语句需要进入ccd (我认为是客户端Config )。这通常在名为/etc/openvpn/ccd/<client name>的文件中。

我想这应该能让你走了。另外,请看一下优秀的OpenVPN文档-- 就像兰斯的这一点。希望你能成功!

票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/671577

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档