通过OpenVPN的IPv6路由

试图了解IPv6如何与OpenVPN协同工作,所以我想设置下面的scheme。

我有一个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地址。

服务器configuration文件基于来自OpenVPN的示例configuration,并增加了以下内容:

 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网关。

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

我错过了什么?

我应该提到服务器运行OpenVPN版本2.2.1 – 是抱怨的原因?

  • 试图在两个openvpn客户端之间路由
  • OpenVPN客户端连接,但无法访问互联网
  • 我如何loggingOpenVPN数据包内容?
  • 获取openvpn客户端通过服务器转发所有stream量
  • 主机networking注入重置到我的TCP连接?
  • OpenVPN端口共享与Apache 443/10443不起作用
  • One Solution collect form web for “通过OpenVPN的IPv6路由”

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

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

    为了得到一个可路由的子网,我去了飓风电气公司(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任何东西之前,会导致一些问题,我们将不得不缓解这个问题。

    input基于策略的路由。

    这个想法是服务器根据源IPv6地址决定应该为IPv6通信应用哪个出站链路。

    规则很简单。

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

    这意味着你需要两个路由表。 默认的路由表(叫做main )和你自己的表(我叫mynet6 )。

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

     echo 100 mynet6 > /etc/iproute2/rt_tables 

    为agument清酒让我们说我被分配的子网2001:db8:cafe::/48

    我build立了一个在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 mynetv6 # 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 

    validationconfiguration

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

    ip -6 rule show

    它应该包含像这样的东西:

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

    Tunnelbroker链接的路由表可以通过以下方式find:

    ip -6 route show table mynet6

    它应该输出如下内容:

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

    你在这里find默认的路由表:

    ip -6 route show table main

    它应该包括以下几行:

     unreachable 2001:470:78d6::/48 dev lo metric 1024 error -113 pref medium default via XXXX:XXXX:XXXX::1 dev eth0 metric 1024 pref medium 

    这应该考虑服务器在接收来自/ 48子网的stream量时所做的事情。 如何将你的/ 48子网分配给你自己的networking是一个完全不同的章节,我不打算在这里覆盖。 🙂

    服务器问题集锦,包括 Linux(Ubuntu, Centos,Debian等)和Windows Server服务器.