我设置了一台连接到蜂窝 IPv4 网络(3G USB 加密狗)的笔记本电脑和连接到另一个 IPv4/IPv6 网络的 PC。两台电脑都已配置为作为 IPv6 路由器运行,并且各自都有自己的 IPv6 网络。
笔记本电脑通过 3G 网络连接到互联网,其中一个接口使用 IPv4 地址(私有地址,并且经常变化),另一个接口处于 AP 模式,提供自己的私有 IPv6 网络 (2001:db8:444::/64)。PC 通过组织网络连接到互联网,其中一个接口使用公共 IPv4 和 IPv6 地址,另一个接口处于 AP 模式,提供自己的私有 IPv6 网络 (2001:db8:222::/64)。两者均运行 Linux Ubuntu。
是否可以让两个 IPv6 网络(2001:db8:222::/64 和 2001:db8:444::/64)通过 IPv4 互联网进行通信?
在这种情况下,openvpn 是否有助于通过 IPv4-IPv4 隧道获取 IPv6 流量?
提前感谢帮助
答案1
这最容易方法是通过 IPv4 设置 VPN – 例如“tap”(L2)模式的 OpenVPN。
在站点 1(组织):
# /etc/openvpn/<site2>.conf 端口 22 漂浮 秘密 /etc/private/openvpn-<站点1>-<站点2>.key dev tap-<site2> 路由 /etc/openvpn/<site2>-configure.sh 脚本安全 2
# /etc/openvpn/<站点2>.sh ip 链路设置 $dev up ip 地址添加 2001:db8:111::1/64 dev $dev ip 路由添加 2001:db8:222::/64 dev $dev (可选) ip route add ::/0 dev $dev
在站点 2(笔记本电脑)上,实际上相同:
# /etc/openvpn/<site1>.conf 远程 <site1>-server.example.com 22 不绑定 秘密 /etc/private/openvpn-<站点1>-<站点2>.key dev tap-<site1> 路由 /etc/openvpn/<site1>-configure.sh 脚本安全 2
# /etc/openvpn/<站点1>-configure.sh ip 链路设置 $dev up ip 地址添加 2001:db8:222::1/64 dev $dev ip 路由添加 2001:db8:111::/64 dev $dev
用于openvpn --genkey --secret /etc/private/openvpn-site2.key
在您的笔记本电脑上创建加密密钥,然后将其复制到组织。此设置仅适用于单客户端连接,但配置非常简单,无需处理 TLS 证书。
如果双方都有静态 IP 地址,则可以使用内置的 Linux IP-in-IP 隧道功能。
从技术上讲,最简单的方法是使用 IPv6-over-v4 隧道,其类型与各种 IPv6 隧道代理所使用的类型完全相同 - 只是具有更具体的路由。
ip tunnel add tunnel-site2 mode sit local <local-ipv4> remote <remote-ipv4>
另一种是 GRE 隧道,即 PPTP 使用的类型。语法相同,只是带有mode gre
。
一旦您有了隧道接口,您就可以为其分配一个 IPv6 地址和/或配置路由。
不幸的是,他们没有选项来处理动态变化的客户端 IP 地址。