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 / 问题 / 512636
Accepted
Lasse Michael Mølgaard
Lasse Michael Mølgaard
Asked: 2013-06-03 07:50:01 +0800 CST2013-06-03 07:50:01 +0800 CST 2013-06-03 07:50:01 +0800 CST

OpenVPN 上的 IPv6 路由

  • 772

试图了解 IPv6 如何与 OpenVPN 一起工作,所以我想设置以下方案。

我有一个 VPS 服务器 (Ubuntu),它被分配了一个 /48 子网。

ISP ipv6 gateway is XXXX:XXXX:XXXX::1
Server ipv6 address is XXXX:XXXX:XXXX:39::1

这个想法是任何连接到服务器的客户端都在 XXXX:XXXX:XXXX:39:2::/64 子网上获得一个 IP 地址。

服务器配置文件基于 OpenVPN 的示例配置,并添加了以下内容:

dev tun
tun-ipv6
server-ipv6 XXXX:XXXX:XXXX:39:2::/64
push "route-ipv6 XXXX:XXXX:XXXX:39::/48"

重新启动 OpenVPN 服务器没有问题。

服务器分配了以下 ip 地址:

eth0: XXXX:XXXX:XXXX:39::1/48
tun0: XXXX:XXXX:XXXX:39::2/64

客户被分配:

OpenVPN 点击:XXXX:XXXX:XXXX:39:2:0:1:0,我可以 ping XXXX:XXXX:XXXX:39::1 就好了。但是,从客户端 ping ISP 网关会使连接超时。

我可以从服务器 ping ISP ipv6 网关。

我在 Ubuntu 防火墙中允许来自 XXXX:XXXX:XXXX:39:2::/64 的流量。

我错过了什么?

我应该提到服务器正在运行 OpenVPN 版本 2.2.1 - 这是抱怨的原因吗?

routing
  • 1 1 个回答
  • 3725 Views

1 个回答

  • Voted
  1. Best Answer
    Lasse Michael Mølgaard
    2017-09-09T01:37:19+08:002017-09-09T01:37:19+08:00

    事实证明,将我的托管服务器用作 IPv6 网关并不是那么容易。尽管它是一个多步骤过程,但它是可行的。

    我最终在这里问了一点,所以下面是我在这个过程中学到的东西的总结。

    为了获得可路由的子网,我去了 Hurricane Electric,并从 Hurricane Electric 获得了一个路由 /48 子网。访问https://tunnelbroker.net了解有关如何获取您自己的子网的更多信息。

    他们会提供一个通过 IPv4 隧道路由的 IPv6,还会告诉你应该给你添加什么/etc/interfaces。

    我在隧道链路上的 IPv6 地址的格式为:2001:470:xxxx:xxx::/64。因此,应将以下行添加到/etc/interfaces:

    auto he-ipv6
    iface he-ipv6 inet6 v4tunnel
        address 2001:470:xxxx:xxx::2
        netmask 64
        endpoint <ipv4 address Tunnelbroker side> 
        local <public ipv4 address your side>
        ttl 255
        gateway 2001:470:xxxx:xxx::1
    

    但是由于我的服务器已经有一个公共 IPv6 地址,它会导致一些问题,在我可以从 Tunnelbroker 子网 ping 任何东西之前我们必须缓解这些问题。

    #Enter基于策略的路由。

    这个想法是服务器根据源 IPv6 地址决定它应该用于 IPv6 流量的出站链接。

    规则很简单。

    • 如果流量源自服务器本身,则使用默认网关。
    • 如果流量源自我的 /48 子网,则使用 IPv6 over IPv4 链接。

    这意味着您需要两个路由表。默认路由表(称为:)main和您自己的表(我称为我的mynet6)。

    首先为自定义路由表添加一个条目:

    echo 100     mynet6 > /etc/iproute2/rt_tables
    

    为了 agument 的缘故,可以说我被分配了子网2001:db8:cafe::/48。

    我制作了一个脚本,当 VPN 链接打开时由 OpenVPN 调用,因为我的 /48 子网仅驻留在我的 VPN 链接上。脚本有点像这样:

    # Reset IPv6 routing table.
    ip -6 rule flush
    
    # Add default IPv6 rules again - since they gets deleted by the initial rule 
    # flush command.
    ip -6 rule add priority 32766 from all table main
    
    # Reset Tunnelbroker routing table (table name: "mynet6").
    ip -6 route flush table mynet6
    
    # All traffic from my /48 subnet should be added to Tunnelbroker routing table
    ip -6 rule add priority 32000 from 2001:DB8:CAFE::/48 table mynet6
    
    # Add routeable VPN subnets to Tunnelbroker routing table
    ip -6 rule add from 2001:DB8:CAFE::/48 table he-ipv6
    
    # Remember to add a rule that if no machine does not respond to a 
    # packet address in my /48, then we should return unreachable. 
    # Else the package will be forwarded by default out through the 
    # Hurricane Electric connection.
    
    #(From the Internet)
    ip -6 route add unreachable 2001:DB8:CAFE::/48
    
    #(From my /48 subnet)
    ip -6 route add unreachable 2001:DB8:CAFE::/48 table mynet6
    
    # Any traffic that originates from VPN has to be forwarded via Tunnelbroker 
    # routing table using the tunnelbroker link (link name: he-ipv6).
    ip -6 route add default via 2001:470:xxxx:xxx::1 dev he-ipv6 table mynet6
    

    #验证配置

    您可以使用以下命令验证您的路由设置:

    ip -6 rule show

    它应该包含如下内容:

    0:      from all lookup local
    32000:  from 2001:db8:cafe::/48 lookup mynet6
    32766:  from all lookup main
    

    可以在以下位置找到 Tunnelbroker 链接的路由表:

    ip -6 route show table mynet6

    它应该输出如下内容:

    unreachable 2001:db8:cafe::/48 dev lo  metric 1024  error -113 pref medium
    default via 2001:470:xxxx:xxx::1 dev he-ipv6  metric 1024  pref medium
    

    您可以在此处找到默认路由表:

    ip -6 route show table main

    它应该有以下几行:

    unreachable 2001:db8:cafe::/48 dev lo  metric 1024  error -113 pref medium
    default via XXXX:XXXX:XXXX::1 dev eth0  metric 1024  pref medium
    

    这应该考虑服务器在从 /48 子网接收到流量时必须做的事情。如何将 /48 子网分配给自己的网络是一个完全不同的章节,我不会在这里介绍。:-)

    • 0

相关问题

  • 无法通过 Ubuntu VPN 访问外部网络

  • 将路由永久添加到 Solaris 10

  • Quagga 套件中的 ./configure --disable-zebra 代表什么?

  • 使用特定接口进行出站连接(Ubuntu 9.04)

  • Linux TC/策略路由工具

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