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 / 问题 / 993051
Accepted
Lasse Michael Mølgaard
Lasse Michael Mølgaard
Asked: 2019-11-24 10:35:07 +0800 CST2019-11-24 10:35:07 +0800 CST 2019-11-24 10:35:07 +0800 CST

OpenVPN 网关不回复 IPv6 ping,但转发包

  • 772

我正在尝试调试我的 IPv6 网络并遇到了一个我无法理解的问题。

我使用 OpenVPN 作为我的 VPN 服务器,下面是设置的简图:

具有双宿主 VPN 服务器的 IPv6 网络 当我尝试从 VPN Client ( 2001:470:7875:1::2) ping 到 VPN Server ( 2001:470:7875:1::1) 时,所有包都被丢弃了,但奇怪的是:

我可以通过 IPv6 ping 任何其他主机(如 Google)或通过 IPv6 连接到同一 VPN 服务器的任何其他 VPN 客户端。

我还可以在其本地 IPv6 接口 ( ens3) 上 ping 我的 VPN 服务器。只有 VPN 服务器接口 ( tun0) 在直接 ping 时不响应。

因此,我想知道发生了什么?

由于我有两个 IPv6 链接到互联网的 IPv6 版本,我必须做基于策略的路由。规则非常简单。

  • 只有源自 VPN 服务器本身的 IPv6 包才允许通过本机 IPv6 链接发送。
  • 所有其他 IPv6 包必须由 Hurricane Electric IPv6 隧道处理。

这导致我在 VPN 服务器上的以下路由表:

该命令ip -6 rule show具有以下设置:

0:      from all lookup local
32000:  from 2001:470:7875::/48 lookup openvpn
32766:  from all lookup main

表local:

local ::1 dev lo proto kernel metric 0 pref medium
anycast 2001:470:1f14:2c7:: dev he-ipv6 proto kernel metric 0 pref medium
local 2001:470:1f14:2c7::2 dev he-ipv6 proto kernel metric 0 pref medium
anycast 2001:470:7875:1:: dev tun0 proto kernel metric 0 pref medium
local 2001:470:7875:1::1 dev tun0 proto kernel metric 0 pref medium
anycast 2a01:xxx:xxxx:: dev ens3 proto kernel metric 0 pref medium
local 2a01:xxx:xxxx:xxx::1 dev ens3 proto kernel metric 0 pref medium
anycast fe80:: dev ens3 proto kernel metric 0 pref medium
anycast fe80:: dev tun0 proto kernel metric 0 pref medium
anycast fe80:: dev he-ipv6 proto kernel metric 0 pref medium
local fe80::95d2:9e6b dev he-ipv6 proto kernel metric 0 pref medium
local fe80::5054:ff:fe66:f97f dev ens3 proto kernel metric 0 pref medium
local fe80::af96:f1e3:dbf3:96a7 dev tun0 proto kernel metric 0 pref medium
ff00::/8 dev ens3 metric 256 pref medium
ff00::/8 dev tun0 metric 256 pref medium
ff00::/8 dev he-ipv6 metric 256 pref medium

表main:

local ::1 dev lo proto kernel metric 256 pref medium
2001:470:1f14:2c7::/64 dev he-ipv6 proto kernel metric 256 pref medium
2001:470:7875:1::/64 dev tun0 proto kernel metric 256 pref medium
unreachable 2001:470:7875::/48 dev lo metric 1024 error -113 pref medium
2xxx:xxx:xxxx::/48 dev ens3 proto kernel metric 256 pref medium
fe80::/64 dev ens3 proto kernel metric 256 pref medium
fe80::/64 dev tun0 proto kernel metric 256 pref medium
fe80::/64 dev he-ipv6 proto kernel metric 256 pref medium
default via 2a01:xxx:xxxx::1 dev ens3 metric 1024 pref medium

表openvpn:

unreachable 2001:470:7875::/48 dev lo metric 1024 error -113 pref medium
default via 2001:470:1f14:2c7::1 dev he-ipv6 metric 1024 pref medium

有谁能给我指点一下吗?:-)


快速回顾一下路由表中无法到达的线路

2001:470:1f14:2c7::/64 dev he-ipv6 proto kernel metric 256 pref medium
2001:470:7875:1::/64 dev tun0 proto kernel metric 256 pref medium
unreachable 2001:470:7875::/48 dev lo metric 1024 error -113 pref medium

的范围2001:470:7875::/48是从2001:470:7875:0:0:0:0:0到2001:470:7875:ffff:ffff:ffff:ffff:ffff。

我已将子网分配2001:470:7875:1::/64给 VPN 隧道。

  • 2001:470:7875:1::/64是2001:470:7875::/48子网的一部分,这可能会导致路由表中的冲突。
  • 2001:470:1f14:2c7::/64不是子网的一部分,因此不会2001:470:7875::/48与路由表冲突。

没有其他 IP 范围正在使用,但将在未确定的以后日期。

记住最长前缀获胜给我们以下行为:

  • 子网的任何 IP 包2001:470:1f14:2c7::/64都将由 he-ipv6 接口处理。
  • 子网的任何 IP 包2001:470:7875:1::/64都将由 tun0 接口处理。
  • 2001:470:7875::/48 子网的所有其他IP 包将被回复为无法访问。
ipv6
  • 1 1 个回答
  • 229 Views

1 个回答

  • Voted
  1. Best Answer
    Lasse Michael Mølgaard
    2019-11-24T15:11:53+08:002019-11-24T15:11:53+08:00

    所以...

    经过更多的挖掘,我发现我的设置可以稍微改进一下,尽管我并不完全相信我已经覆盖了所有的基础。

    无论如何ip -6 rule show可以稍微调整一下。

    该行:

    32000:  from 2001:470:7875::/48 lookup openvpn
    

    由以下命令生成:

    ip -6 rule add priority 32000 from 2001:470:7875::/48 table openvpn
    

    这可以简化为:

    ip -6 rule add priority 32000 iif tun0 to 2000::/3 table openvpn
    

    这意味着基本上所有基于 IPv6 的流量都必须查找表openvpn ,当且仅当流量来自 VPN 链接并且目标地址属于2003::/3,这基本上是整个官方 IPv6 互联网 - 不包括 fe80::/10 和 fc 等本地地址::/7。

    最终结果是来自我的 VPN 链接的 IPv6 流量始终通过 Hurricane Electric 链接转发。

    要记住的事情。每当我从该范围内的可用地址池中添加一个新子网时, 2001:470:7875::/48我都必须输入两个条目。

    • 表中的一项main,说明如何将包从 VPN 服务器转发到新子网。
    • 表中的 Onopenvpn说明 VPN 客户端如何到达新子网。这通常是在通过 VPN 链接从一个客户端到另一个客户端的站点到站点流量时。

    无论如何:Ping 现在可以正常工作,我仍然可以通过 IPv6 ping Google。

    该命令ip -6 rule show现在提供以下输出:

    0:      from all lookup local
    32000:  from all to 2000::/3 iif tun0 lookup openvpn
    32766:  from all lookup main
    

    其他一切都是从最初的问题开始的。

    Traceroute 有点棘手,但只要使用 ICMP Echo 包就可以了。

    在我的 VPN 客户端上运行命令traceroute -6 -I google.com给出了以下跟踪:

    traceroute to google.com (2a00:1450:400e:80b::200e), 30 hops max, 80 byte packets
     1  2001:470:7875:1::1 (2001:470:7875:1::1)  16.868 ms  37.912 ms  37.847 ms
     2  tunnel547738.tunnel.tserv11.ams1.ipv6.he.net (2001:470:1f14:2c7::1)  37.777 ms  37.710 ms  37.647 ms
     3  10ge11-20.core1.ams1.he.net (2001:470:0:7d::1)  37.575 ms  37.509 ms  37.443 ms
     4  amsix-router.google.com (2001:7f8:1::a501:5169:1)  37.453 ms  52.425 ms  52.392 ms
     5  2001:4860:0:f8d::1 (2001:4860:0:f8d::1)  52.323 ms  52.259 ms  52.189 ms
     6  2001:4860:0:1::219f (2001:4860:0:1::219f)  36.456 ms  25.560 ms  18.169 ms
     7  ams17s01-in-x0e.1e100.net (2a00:1450:400e:80b::200e)  34.566 ms  34.502 ms  34.435 ms
    
    • 0

相关问题

  • IPv6 有哪些好的 IP 地址管理解决方案?[关闭]

  • 连接到 NAT 后启用 Teredo 的服务器

  • IPv4管理员的IPv6介绍[关闭]

  • 什么是支持 IPv6 胶水的又好又便宜的注册商?

  • 使用多少 IP V6 寻址?

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