AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 1048592
Accepted
Dariko77
Dariko77
Asked: 2021-01-05 17:13:49 +0800 CST2021-01-05 17:13:49 +0800 CST 2021-01-05 17:13:49 +0800 CST

从服务器到客户端的 OpenVPN 路由

  • 772

我有两个遥远的地方,每个地方都有一个公共 IP,我想让这些地方的 LAN 网络就好像它们是一个一样。即A地的机器可以与B地的机器通信,B地的机器可以与A地的机器通信。

在地方 A (10.0.2.1) 我有一个 ASUS AC 1200g+ 和一个带有 OpenVPN 服务器的 Raspberry pi (10.0.2.60)。新客户端保留在接口 tun0 ( 10.8.0.1 ) 中。此时,客户端(地点 B)可以与地点 A 的 LAN 通信,只有目的地为 10.0.1.0/24 的流量被重定向到服务器端。

现在我希望 A 地(服务器)中的机器可以与 B 地的 LAN 通信。我在我的路由器中放置了一个路由,所有带有 10.0.1.0/24 的目标请求都被重定向到 Raspberry Pi VPN 服务器,但服务器不知道如何处理该流量。

在地方 B (10.0.1.1) 我有一个带有华硕 Merlin 固件的华硕 AC86U,我用“入站防火墙”启用选项激活了 OpenVPN 客户端。

网络架构

openvpn site-to-site-vpn raspbian
  • 1 1 个回答
  • 851 Views

1 个回答

  • Voted
  1. Best Answer
    MaxC
    2021-01-05T19:25:49+08:002021-01-05T19:25:49+08:00

    我有一个类似的设置,其中树莓派是客户端,但这并不重要。免责声明:这不是最容易设置的事情。

    我正在使用此/etc/iptables/iptables.rules文件将来自 OpenVPN 连接(通常tun0,但tun+涵盖所有)的流量 NAT 到本地网络:

    *nat
    :PREROUTING ACCEPT [0:0]
    :INPUT ACCEPT [0:0]
    :OUTPUT ACCEPT [0:0]
    :POSTROUTING ACCEPT [0:0]
    -A POSTROUTING -j MASQUERADE
    COMMIT
    
    *filter
    :INPUT ACCEPT [0:0]
    :FORWARD ACCEPT [0:0]
    :OUTPUT ACCEPT [0:0]
    -A FORWARD -i eth+ -o tun+ -j ACCEPT
    -A FORWARD -i tun+ -o eth+ -j ACCEPT
    COMMIT
    

    OpenVPN 配置需要所谓的客户端到客户端配置。服务器 OpenVPN-config 中的这两行启用了该功能:

    # use ccd-folder (per host configs)
    client-to-client
    # routing to office lan:
    client-config-dir ccd
    

    必须在配置所在的 -path 下手动client-config-dir创建。/etc/openvpn/...然后,您可以在该文件夹中创建每个主机的文本文件。文件命名很重要:仔细检查 OpenVPN 如何在系统日志中调用您的客户端(例如journalctl -xef --unit openvpn-server@somehost在文件中或openvpn-status.txt文件中)。文件内容很简单:

    ifconfig-push 10.10.99.18 255.255.255.255
    iroute 192.168.0.0 255.255.0.0
    

    将配置它以在每次连接时获取相同的 IP ( 10.10.99.18) 并配置 VPN 服务器以内部路由流量192.168.0.0/16到具有此文件名称和 IP 地址的客户端。这使得我们可以理解为什么我们还没有有效的网络连接:也就是说,因为 VPN 服务器的主机系统不知道 VPN 隧道可用于路由该网络的流量(netstat -rn4)。所以我们必须再次配置VPN服务器并追加:

    route       192.168.0.0 255.255.0.0
    push "route 192.168.0.0 255.255.0.0"
    

    告诉服务器,它应该将流量路由到192.168.0.0/16并且所有连接到服务器的客户端也应该被告知路由 - 路由被推送到客户端。


    对于我的设置,我使用了上面的链接,但是在写这个答案时,我发现了两个关于这个主题的有趣链接:

    • https://community.openvpn.net/openvpn/wiki/RoutedLans
    • https://forums.openvpn.net/viewtopic.php?t=26839

    祝你好运 :)

    • 0

相关问题

  • OpenVPN:在哪里生成私钥?

  • 将 iPhone 连接到 OpenVPN

  • OpenVPN 的 Linux IP 转发 - 正确的防火墙设置?

  • 最好的点对点 VPN?

  • 通过 VPN 使您的打印机可用的最佳方法是什么?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve