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 / 问题 / 1069824
Accepted
pacoverflow
pacoverflow
Asked: 2021-07-17 06:49:11 +0800 CST2021-07-17 06:49:11 +0800 CST 2021-07-17 06:49:11 +0800 CST

无法将以前使用的静态 IP 地址分配给 OpenVPN 客户端

  • 772

我们有一个带有以下 server.conf 的 OpenVPN 服务器:

local x.x.x.x
port 1194
proto tcp
dev tap
ca ca.crt
cert server.crt
key server.key
dh dh.pem
auth SHA512
tls-crypt tc.key
topology subnet
server 10.8.0.0 255.255.0.0
ifconfig-pool-persist ipp.txt
client-config-dir /etc/openvpn/ccd
client-to-client
keepalive 10 120
cipher AES-256-CBC
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
verb 3
crl-verify crl.pem

我们还在 AWS 中有一个运行 OpenVPN 客户端的 Linux 实例,我们通过将具有客户端通用名称的文件添加到/etc/openvpn/ccd具有以下内容的 OpenVPN 服务器目录中,成功为其分配了静态 IP 地址 10.8.0.2:

ifconfig-push 10.8.0.2 255.255.0.0

现在我们想用 Windows Server 2019 实例替换该 Linux 实例,并为其提供相同的 10.8.0.2 静态 IP 地址。所以我们做了以下事情:

  • 删除 AWS 中的 Linux 实例
  • 在 OpenVPN 服务器上使用Nyr OpenVPN openvpn-install.sh 脚本撤销 Linux 客户端
  • /etc/openvpn/server/easy-rsa/pki/index.txt从 OpenVPN 服务器的文件中删除了 Linux 客户端
  • /etc/openvpn/server/easy-rsa/pki/revoked/certs_by_serial从 OpenVPN 服务器的目录中删除了 Linux 客户端的证书
  • 删除 OpenVPN 服务器/etc/openvpn/ccd目录中的 Linux 客户端文件
  • 删除了 OpenVPN 服务器的/etc/openvpn/server/ipp.txt文件(因为它与 Linux 客户端关联了 10.8.0.2)
  • 在 OpenVPN 服务器的/etc/openvpn/ccd目录中为 Windows Server 2019 实例添加了一个新文件ifconfig-push 10.8.0.2 255.255.0.0
  • 在 AWS 中创建了一个 Windows Server 2019 实例
  • 在 Windows Server 2019 实例上安装OpenVPN 2.4.9

Windows Server 2019 实例具有以下 OpenVPN 客户端配置文件:

client
dev tap
proto tcp
remote x.x.x.x 1194
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
auth SHA512
cipher AES-256-CBC
ignore-unknown-option block-outside-dns
block-outside-dns
verb 3

当我们在 Windows Server 2019 实例上启动 OpenVPN 客户端时,OpenVPN 客户端日志文件中会显示以下内容:

Wed Jul 14 01:15:02 2021 [server] Peer Connection Initiated with [AF_INET]x.x.x.x:1194
Wed Jul 14 01:15:03 2021 SENT CONTROL [server]: 'PUSH_REQUEST' (status=1)
Wed Jul 14 01:15:03 2021 PUSH: Received control message: 'PUSH_REPLY,route-gateway 10.8.0.1,ping 10,ping-restart 120,ifconfig 10.8.0.2 255.255.0.0,peer-id 0,cipher AES-256-GCM'
Wed Jul 14 01:15:03 2021 OPTIONS IMPORT: timers and/or timeouts modified
Wed Jul 14 01:15:03 2021 OPTIONS IMPORT: --ifconfig/up options modified
Wed Jul 14 01:15:03 2021 OPTIONS IMPORT: route-related options modified
Wed Jul 14 01:15:03 2021 OPTIONS IMPORT: peer-id set
Wed Jul 14 01:15:03 2021 OPTIONS IMPORT: adjusting link_mtu to 1658
Wed Jul 14 01:15:03 2021 OPTIONS IMPORT: data channel crypto options modified
Wed Jul 14 01:15:03 2021 Data Channel: using negotiated cipher 'AES-256-GCM'
Wed Jul 14 01:15:03 2021 Outgoing Data Channel: Cipher 'AES-256-GCM' initialized with 256 bit key
Wed Jul 14 01:15:03 2021 Incoming Data Channel: Cipher 'AES-256-GCM' initialized with 256 bit key
Wed Jul 14 01:15:03 2021 interactive service msg_channel=0
Wed Jul 14 01:15:03 2021 open_tun
Wed Jul 14 01:15:03 2021 TAP-WIN32 device [Local Area Connection] opened: \\.\Global\{526EF9D3-DC84-41B0-B139-F1D4BAEFBF4F}.tap
Wed Jul 14 01:15:03 2021 TAP-Windows Driver Version 9.24 
Wed Jul 14 01:15:03 2021 Notified TAP-Windows driver to set a DHCP IP/netmask of 10.8.0.2/255.255.0.0 on interface {526EF9D3-DC84-41B0-B139-F1D4BAEFBF4F} [DHCP-serv: 10.8.0.0, lease-time: 31536000]
Wed Jul 14 01:15:03 2021 Successful ARP Flush on interface [11] {526EF9D3-DC84-41B0-B139-F1D4BAEFBF4F}
Wed Jul 14 01:15:03 2021 Block_DNS: WFP engine opened
Wed Jul 14 01:15:03 2021 Block_DNS: Using existing sublayer
Wed Jul 14 01:15:03 2021 Block_DNS: Added permit filters for exe_path
Wed Jul 14 01:15:03 2021 Block_DNS: Added block filters for all interfaces
Wed Jul 14 01:15:03 2021 Block_DNS: Added permit filters for TAP interface
Wed Jul 14 01:15:08 2021 TEST ROUTES: 0/0 succeeded len=-1 ret=0 a=0 u/d=down
Wed Jul 14 01:15:08 2021 Route: Waiting for TUN/TAP interface to come up...
Wed Jul 14 01:15:13 2021 TEST ROUTES: 0/0 succeeded len=-1 ret=0 a=0 u/d=down
Wed Jul 14 01:15:13 2021 Route: Waiting for TUN/TAP interface to come up...
Wed Jul 14 01:15:14 2021 TEST ROUTES: 0/0 succeeded len=-1 ret=0 a=0 u/d=down
Wed Jul 14 01:15:14 2021 Route: Waiting for TUN/TAP interface to come up...
Wed Jul 14 01:15:15 2021 TEST ROUTES: 0/0 succeeded len=-1 ret=0 a=0 u/d=down
Wed Jul 14 01:15:15 2021 Route: Waiting for TUN/TAP interface to come up...
Wed Jul 14 01:15:16 2021 TEST ROUTES: 0/0 succeeded len=-1 ret=0 a=0 u/d=down
Wed Jul 14 01:15:16 2021 Route: Waiting for TUN/TAP interface to come up...
Wed Jul 14 01:15:17 2021 TEST ROUTES: 0/0 succeeded len=-1 ret=0 a=0 u/d=down
Wed Jul 14 01:15:17 2021 Route: Waiting for TUN/TAP interface to come up...
Wed Jul 14 01:15:18 2021 TEST ROUTES: 0/0 succeeded len=0 ret=1 a=0 u/d=up
Wed Jul 14 01:15:18 2021 WARNING: this configuration may cache passwords in memory -- use the auth-nocache option to prevent this
Wed Jul 14 01:15:18 2021 Initialization Sequence Completed

如您所见,Windows Server 2019 实例上的 OpenVPN 客户端正在从 OpenVPN 服务器接收 10.8.0.2 IP 地址。但是,我ipconfig在命令行窗口中反复运行,并且每隔 15 秒就会看到以下情况:

  • OpenVPN 网络适配器(称为“TAP-Windows 适配器 V9”)在几秒钟内获得 169.254.211.103 的 IP 地址。
  • 然后 OpenVPN 网络适配器在大约一秒钟内获得 10.8.0.2 的 IP 地址。在这一秒内,10.8.0.1(OpenVPN 服务器)的 ping 将成功。在那一秒之外,10.8.0.1 的 ping 将失败。
  • 然后 OpenVPN 网络适配器丢失了 10.8.0.2 IP 地址,并且在接下来的约 12 秒内没有任何 IP 地址。
  • 获取 169.254.xx 地址,然后获取和丢失 10.8.0.2 地址的过程每 15 秒重复一次。

然后我决定看看如果我尝试为 Windows Server 2019 提供一个以前从未使用过的不同静态 IP 地址会发生什么。我修改了 OpenVPN 服务器/etc/openvpn/ccd目录中的 Windows Server 2019 文件,为其提供了一个静态 IP 地址 10.8.0.11:

ifconfig-push 10.8.0.11 255.255.0.0

然后我在 Windows Server 2019 实例上重新启动了 OpenVPN 客户端,它可以工作了!客户端成功使用了 10.8.0.11 IP 地址,并且完全没有丢失它。

那么,为什么 Windows Server 2019 实例一直丢失 10.8.0.2 的地址,这个地址之前被 Linux 客户端使用过呢?从我上面列出的步骤中可以看出,我从 OpenVPN 服务器上撤销了 Linux 客户端,并删除了我在 OpenVPN 服务器上可以找到的 Linux 客户端通用名称的所有痕迹。

我们希望 Windows Server 2019 实例使用 10.8.0.2 地址,因为我们已经编写了脚本,假设 10.8.0.2 将是静态 IP,并将这些脚本发送给第三方。如果可能的话,坚持使用 10.8.0.2 会更容易。

更新:

几天没看Windows Server 2019实例,现在又看了一遍。令人惊讶的是,它的 IP 地址为 10.8.0.2,而且从未消失。一切都按预期工作。我不知道为什么,因为我没有改变任何东西。

所以我在 Windows Server 2019 实例上重新启动了 OpenVPN 客户端,看看会发生什么,现在又回到了获取 169.254.xx 地址然后每 15 秒获取和丢失 10.8.0.2 地址的行为。

windows networking openvpn ip-address
  • 1 1 个回答
  • 384 Views

1 个回答

  • Voted
  1. Best Answer
    pacoverflow
    2021-10-08T12:28:02+08:002021-10-08T12:28:02+08:00

    这是一个 IP 地址冲突,如 Windows Server 2019 实例上的系统事件日志所示。

    我们有一些额外的 Linux 服务器运行 OpenVPN 客户端(不同于我在问题中提到的 Linux 客户端)。这些 Linux 服务器中的每一个都设置了一个 IP 地址为 10.8.0.2 的网桥。该网桥将 OpenVPN 客户端的 tap0 接口连接到连接到供应商设备的 eth1 接口。此设置允许在 Windows Server 2019 实例上运行的供应商软件连接到设备。

    我关闭了 Linux 服务器并重新启动了 Windows Server 2019 实例。Windows Server 2019 实例能够获得 10.8.0.2 而不会丢失它。然后我启动了 Linux 服务器,现在一切正常。Windows Server 2019 和 Linux 实例很高兴,在 Windows Server 上运行的软件能够通过 OpenVPN 连接到连接到 Linux 服务器的设备。

    因此,解决方案是确保 Windows Server 2019 实例在任何 Linux 实例设置其网桥之前启动。

    编辑:一个更简单的解决方案是重新启动 OpenVPN 服务器,然后立即在 Windows Server 2019 实例上启动 OpenVPN 客户端。在任何 Linux 实例能够重新连接到 OpenVPN 服务器之前,它将获得 10.8.0.2。

    • 0

相关问题

  • 您最喜欢的云计算提供商是什么?[关闭]

  • Vanilla Powershell 是否足以成为 Windows 和 DB 服务器管理员的语言?

  • 为什么添加新驱动器后我的磁盘驱动器访问速度如此之慢?

  • 在 Windows Server 2003 下使用 wscipt 从 .asp 文件运行 .exe

  • 最佳混合环境(OS X + Windows)备份?[关闭]

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