OpenVPN-服务器无法访问客户端局域网中的设备

OpenVPN-服务器无法访问客户端局域网中的设备

我有一个 OpenVPN 服务器(10.1.0.0,255.255.255.0 VPN 子网)和一个本地子网为 192.168.1.0 255.255.255.0 的客户端。

服务器 VPN IP 为:10.1.0.1 客户端 VPN IP 为:10.1.0.2

服务器本地IP:172.16.0.1 客户端本地IP:192.168.1.236

我需要从客户端通过 VPN 访问本地服务器 IP 172.16.0.1,这样可以。但是我还需要能够从服务器访问客户端的 LAN,这样不行。

我可以从服务器 ping 192.168.1.236,但不能ping 其他设备。

这是我的 server.conf:

#################################################
# OpenVPN 2.0 配置文件示例 #
# 多客户端服务器。#
# #
# 此文件用于服务器端 #
多客户端单服务器的例子
#OpenVPN 配置。#
# #
# OpenVPN 还支持#
# 单机 单机 #
# 配置(参见示例页面 #
# 请访问网站获取更多信息)。#
# #
# 此配置应适用于 Windows #
# 或 Linux/BSD 系统。请记住 #
# Windows 引用路径名并使用#
# 双反斜杠,例如:#
# “C:\\Program Files\\OpenVPN\\config\\foo.key” #
# #
# 注释以 '#' 或 ';' 开头 #
#################################################

# OpenVPN 应该使用哪个本地 IP 地址
# 继续听吗?(可选)
;本地 abcd

# OpenVPN 应该监听哪个 TCP/UDP 端口?
# 如果你想运行多个 OpenVPN 实例
# 在同一台机器上,使用不同的端口
# 号。您需要
# 在防火墙上打开此端口。
端口 1194
拓扑子网

# TCP 还是 UDP 服务器?
协议 TCP
;原始 UDP

#“dev tun”将创建一个路由 IP 隧道,
#“dev tap”将创建一个以太网隧道。
# 如果你正在使用以太网桥接,请使用“dev tap0”
# 并预先创建了 tap0 虚拟接口
# 并将其与您的以太网接口桥接。
# 如果你想控制访问策略
# 通过 VPN,您必须创建防火墙
#TUN/TAP 接口的规则。
# 在非 Windows 系统上,你可以
# 一个明确的单元编号,例如 tun0。
# 在 Windows 上,使用“dev-node”。
# 在大多数系统上,VPN 将无法运行
# 除非你部分或全部禁用
# TUN/TAP 接口的防火墙。
;开发点击
开发调谐

# Windows 需要 TAP-Win32 适配器名称
# 如果您在网络连接面板中
# 有多个。在 XP SP2 或更高版本上,
# 您可能需要选择性地禁用
# TAP 适配器的 Windows 防火墙。
# 非 Windows 系统通常不需要这个。
;开发节点 MyTap

# SSL/TLS 根证书 (ca)、证书
# (cert) 和私钥 (key)。每个客户端
# 并且服务器必须有自己的证书和
# 密钥文件。服务器和所有客户端将
# 使用相同的 ca 文件。
#
# 请参阅“easy-rsa”目录以了解一系列
用于生成 RSA 证书的脚本数量
# 和私钥。请记住使用
# 服务器的唯一通用名称
# 以及每个客户端证书。
#
# 可以使用任何 X509 密钥管理系统。
# OpenVPN 也可以使用 PKCS #12 格式的密钥文件
#(参见手册页中的“pkcs12”指令)。
ca 证书
证书服务器.crt
密钥服务器.key # 此文件应保密

# Diffie-Hellman 参数。
# 使用以下方式生成你自己的:
# openssl dhparam -out dh1024.pem 1024
# 如果你使用
#2048 位密钥。
dh dh2048.pem

# 配置服务器模式并提供 VPN 子网
# 用于 OpenVPN 从中提取客户端地址。
# 服务器将自行使用 10.8.0.1,
# 其余部分将提供给客户。
# 每个客户端都能够访问服务器
# on 10.8.0.1. 如果你是
# 以太网桥接。请参阅手册页以了解更多信息。
服务器 10.1.0.0 255.255.255.0

# 维护客户端虚拟IP地址的记录
# 此文件中的关联。如果 OpenVPN 发生故障或
# 重新启动后,可以分配重新连接的客户端
# 与池中的虚拟 IP 地址相同
# 先前已分配。
ifconfig-pool-persist ipp.txt

# 配置以太网桥接的服务器模式。
# 您必须首先使用操作系统的桥接功能
# 将 TAP 接口与以太网桥接起来
# NIC 接口。然后您必须手动设置
# 桥接接口上的 IP/网络掩码,这里我们
# 假设 10.8.0.4/255.255.255.0。最后我们
# 必须在此子网中留出一个 IP 范围
# (start=10.8.0.50 end=10.8.0.100) 分配
# 连接客户端。保留此行注释
# 除非您正在进行以太网桥接。
;服务器桥 10.8.0.4 255.255.255.0 10.8.0.50 10.8.0.100

# 配置以太网桥接的服务器模式
# 使用 DHCP 代理,客户端可以对话
# 到 OpenVPN 服务器端 DHCP 服务器
# 接收其 IP 地址分配
# 和 DNS 服务器地址。您必须先使用
# 你的操作系统的桥接能力来桥接 TAP
# 与以太网 NIC 接口连接。
# 注意:此模式仅适用于客户端(例如
# Windows),其中客户端 TAP 适配器
#绑定到 DHCP 客户端。
;服务器桥

# 将路由推送到客户端以允许它
# 到达后面的其他私有子网
# 服务器。请记住,这些
# 私有子网也需要
# 了解如何路由 OpenVPN 客户端
#地址池(10.8.0.0/255.255.255.0)
# 返回 OpenVPN 服务器。
推“路由 192.168.1.0 255.255.255.0”
推“路由 10.1.0.0 255.255.255.255.0”

# 将特定 IP 地址分配给特定
# 客户端或者连接的客户端有私有
# 其后面的子网也应该具有 VPN 访问权限,
# 使用子目录“ccd”来指定客户端
# 配置文件(有关更多信息,请参阅手册页)。

# 示例:假设客户端
# 证书通用名称为“Thelonious”
# 其连接后面还有一个小子网
#机器,例如192.168.40.128/255.255.255.248。
# 首先,取消注释以下几行:
客户端配置目录 ccd
路由 192.168.1.0 255.255.255.0
# 然后创建一个文件 ccd/Thelonious,其中包含以下行:
# iroute 192.168.40.128 255.255.255.248
# 这将允许 Thelonious 的私有子网
# 访问 VPN。此示例仅适用于
# 如果你正在路由,而不是桥接,即你是
# 使用“dev tun”和“server”指令。

# 例子:假设你想给
# Thelonious 的固定 VPN IP 地址为 10.9.0.1。
# 首先取消注释以下几行:
;客户端配置目录 ccd
;路由 10.8.0.0 255.255.255.252
# 然后将这一行添加到 ccd/Thelonious:
# ifconfig-push 10.9.0.1 10.9.0.2

# 假设你想启用不同的
# 不同群体的防火墙访问策略
客户端数量。有两种方法:
# (1) 运行多个 OpenVPN 守护进程,每个进程一个
# 组,以及防火墙 TUN/TAP 接口
# 为每个组/守护进程适当地设置。
# (2) (高级)创建一个脚本来动态
#修改防火墙以响应访问
# 来自不同的客户端。请参阅 man
# 页面以获取有关 learn-address 脚本的更多信息。
;学习地址./脚本

# 如果启用,该指令将配置
# 所有客户端重定向其默认
# 网络网关通过 VPN,导致
# 所有 IP 流量,例如网页浏览和
# 和 DNS 查找通过 VPN
#(OpenVPN 服务器可能需要 NAT
# 或者将 TUN/TAP 接口桥接到互联网
# 为了使其正常工作)。
;推“重定向网关def1旁路-dhcp”

# 某些 Windows 特定的网络设置
# 可以推送到客户端,例如 DNS
# 或 WINS 服务器地址。警告:
# http://openvpn.net/faq.html#dhcpcaveats
# 以下地址均指公众
# 由 opendns.com 提供的 DNS 服务器。
;推“dhcp选项DNS 208.67.222.222”
;推“dhcp选项DNS 208.67.220.220”

# 取消注释此指令以允许不同的
# 客户端能够“看到”彼此。
# 默认情况下,客户端只能看到服务器。
# 要强制客户端只能看到服务器,你
# 还需要适当的防火墙
#服务器的TUN/TAP接口。
;客户端到客户端

# 如果有多个客户端,请取消注释此指令
# 可能使用相同的证书/密钥连接
# 个文件或通用名称。建议
# 仅用于测试目的。对于生产用途,
# 每个客户端都应该有自己的证书/密钥
# 一对。
#
# 如果你还没有生成个人
# 每个客户端的证书/密钥对,
# 每个都有自己独特的“通用名称”,
# 取消注释此行。
;重复-cn

# keepalive 指令会导致类似 ping 的情况
# 要来回发送的消息
# 链接,以便双方知道何时
# 另一侧已经倒下。
# 每 10 秒 ping 一次,假设远程
# 如果在以下情况下未收到 ping 则表示对等端已关闭
# 120 秒的时间段。
保持活动 10 120

# 提供额外的安全保障
# 通过 SSL/TLS,创建“HMAC 防火墙”
# 帮助阻止 DoS 攻击和 UDP 端口泛洪。
#
# 生成:
# openvpn --genkey --secret ta.key
#
# 服务器和每个客户端必须有
# 该密钥的副本。
# 第二个参数应为“0”
服务器上为 #,客户端上为‘1’。
;tls-auth ta.key 0 # 此文件是秘密的
tls-密码“DEFAULT:@SECLEVEL = 0”

# 选择一个加密密码。
# 此配置项必须复制到
# 客户端配置文件也是如此。
;密码 BF-CBC # Blowfish (默认)
;密码 AES-128-CBC # AES
;密码 DES-EDE3-CBC # 三重 DES

# 在VPN链路上启用压缩。
# 如果您在这里启用它,您还必须
# 在客户端配置文件中启用它。
;comp-lzo

# 最大并发连接数
# 我们想要允许的客户端。
;最大客户端数 250

# 减少 OpenVPN 是一个好主意
# 初始化后的守护进程的权限。
#
# 你可以取消注释
# 非 Windows 系统。
;用户无人
;群组无人

# 持久选项将尝试避免
# 重启时访问某些资源
# 可能无法再访问,因为
权限降级的次数。
持久密钥
坚持-tun

# 输出一个简短的状态文件,显示
# 当前连接数,已截断
# 并且每分钟重写一次。
状态 openvpn-status.log

# 默认情况下,日志消息将发送到系统日志(或
# 在 Windows 上,如果作为服务运行,它们将转到
#“\Program Files\OpenVPN\log”目录)。
# 使用 log 或 log-append 来覆盖此默认值。
# “log” 将在 OpenVPN 启动时截断日志文件,
# 而“log-append”将附加到它。使用一个
# 或其他(但不能同时)。
;记录 openvpn.log
;日志附加 openvpn.log

#设置适当的日志级别
# 文件详细程度。
#
# 0 是静默的,除非发生致命错误
# 4 对于一般用途来说是合理的
# 5 和 6 可以帮助调试连接问题
# 9 非常冗长
动词 4

# 静音重复消息。最多 20
# 同一条消息的连续消息
#类别将被输出到日志中。
;静音 20

这是我的 ccd/Prezentace 文件:

iroute 192.168.1.0 255.255.255.0
推“路由 172.16.0.0 255.255.255.0”

这是我的 client.conf:

##############################################
# 客户端 OpenVPN 2.0 配置文件示例 #
# 用于连接到多客户端服务器。#
# #
# 此配置可供多个 #
# 个客户端,但是每个客户端都应该有 #
# 它自己的证书和密钥文件。#
# #
# 在 Windows 上,你可能需要重命名这个#
# 文件,因此它具有 .ovpn 扩展名 #
##############################################

# 指定我们是客户,并且我们
# 将提取某些配置文件指令
# 来自服务器。
客户

# 使用与上相同的设置
# 服务器。
# 在大多数系统上,VPN 将无法运行
# 除非你部分或全部禁用
# TUN/TAP 接口的防火墙。
;开发点击
开发调谐

# Windows 需要 TAP-Win32 适配器名称
# 来自网络连接面板
# 如果您有多个。在 XP SP2 上,
# 您可能需要禁用防火墙
# 表示 TAP 适配器。
;开发节点 MyTap

# 我们是否连接到 TCP 或
# UDP 服务器?使用与
# 在服务器上。
协议 TCP
#proto udp

# 服务器的主机名/IP 和端口。
# 你可以有多个远程条目
# 在服务器之间实现负载平衡。
故意隐藏的遥控器 1194

# 从远程选择一个随机主机
# 负载平衡列表。否则
# 按指定的顺序尝试主机。
;远程随机

# 继续无限期地尝试解决
# OpenVPN 服务器的主机名。非常有用
# 在非永久连接的机器上
# 连接到互联网,例如笔记本电脑。
解析-重试无限

# 大多数客户端不需要绑定到
# 特定的本地端口号。
不绑定

# 初始化后降级权限(仅限非 Windows)
;用户无人
;群组无人

# 尝试在重启后保留一些状态。
持久密钥
坚持-tun

# 如果您通过
# HTTP 代理到达实际的 OpenVPN
# 服务器,输入代理服务器/IP 和
# 此处为端口号。请参阅手册页
# 如果你的代理服务器需要
# 验证。
;http-proxy-retry # 连接失败时重试
;http-proxy [代理服务器] [代理端口号]

# 无线网络通常会产生大量
重复数据包的数量。设置此标志
# 消除重复数据包警告。
;静音重播警告

#SSL/TLS 参数。
# 更多信息请查看服务器配置文件
# 描述。最好使用
# 单独的 .crt/.key 文件对
# 为每个客户端。单个 ca
# 文件可用于所有客户端。
ca ca-测试.crt
证书Prezentace.crt
密钥 Prezenace.key

# 通过检查来验证服务器证书
# 该证书具有 nsCertType
# 字段设置为“服务器”。这是一个
# 重要的预防措施
# 这里讨论的潜在攻击:
# http://openvpn.net/howto.html#mitm
#
# 要使用此功能,您需要生成
# 您的服务器证书与 nsCertType
# 字段设置为“服务器”。build-key-server
easy-rsa 文件夹中的 # 脚本将执行此操作。
--remote-cert-tls 服务器

# 如果服务器上使用了 tls-auth 密钥
# 那么每个客户端也必须拥有该密钥。
;tls-auth ta.key 1
tls-密码“DEFAULT:@SECLEVEL = 1”

# 选择一个加密密码。
# 如果服务器上使用了密码选项
# 那么您也必须在这里指定它。
;密码 BF-CBC

# 在VPN链路上启用压缩。
# 不要启用此功能,除非它也是
# 在服务器配置文件中启用。
;comp-lzo

# 设置日志文件详细程度。
动词 3

# 静音重复消息
;静音 20

#auth-用户密码

非常感谢任何提示。客户端计算机 (Linux) 上的转发功能也已启用。

服务器的路由表:

 

内核 IP 路由表
目标网关 Genmask 标志 指标参考使用 Iface
0.0.0.0 隐藏 0.0.0.0 UG 0 0 0 enp1s0
10.1.0.0 0.0.0.0 255.255.255.0 U 0 0 0 tun0
172.16.0.0 0.0.0.0 255.255.0.0 U 0 0 0 虚拟
192.168.1.0 10.1.0.2 255.255.255.0 UG 0 0 0 tun0
212.158.144.64 0.0.0.0 255.255.255.240 U 0 0 0 enp1s0

客户端的路由表:

0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 eth0
10.1.0.0 0.0.0.0 255.255.255.0 U 0 0 0 tun0
172.16.0.0 10.1.0.1 255.255.255.0 UG 0 0 0 tun0
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0

答案1

网络中必须有双向有效路由。数据包带有源和目标。

默认情况下,客户端上的主机只有一条默认路由,匹配 0.0.0.0/0,因此所有不是发往本地网段的数据包都会发送到这个 IP。

在您的设置中,您有多个路由器 - 一个用于连接 VPN 网络,另一个可能为默认网关。客户端本地网络中的所有计算机都需要配置一条路由以通过172.16.0.0/16连接192.168.1.236

相关内容