在家里,我连接了一个 IPv6 地址,此外,我的提供商提供了一个类似 NAT 的设置,通过它我可以收到一个公共 IPv4 地址,我与其他客户共享(原因显然是我们的 IPv4 地址不足)。
因此,当我在 IPv4 网络上时,我无法访问家里的设备(例如我的 VPN 网关)。但是,我确实有一台同时具有 IPv4 和 IPv6 地址的服务器。因此,如果我通过我的服务器,应该可以访问我的家庭设备。
到目前为止,这是我的想法:由于在 IPv6 上,每个设备都有自己的 IP,我家中的服务器获得静态 IPv6 IP。我的远程服务器已经有静态 IPv4 和 IPv6。
当我现在想访问家里的 OpenVPN 服务器时,以前我会在路由器中打开端口 1194,NAT 会将连接传递到那里的服务器。在我的新场景中,我想连接到远程服务器上的端口 1194(或不同的,无关紧要),它应该采用该连接并将其隧道连接到我的主服务器(因为它们都具有 IPv6)。
从图形上看,这意味着:
移动设备 (IPv4) --> 远程服务器 (IPv4+IPv6) --> 家庭服务器 (IPv6)
但这应该只发生在选择的端口上(或者有比按端口选择更聪明的方法吗?)。
我的问题是,如何实现此设置?
这应该在哪个级别运行?如果我想通过端口来做,我显然必须在 TCP/UDP 层转发数据包。我的第一个想法是 iptables,但是 iptables 可以将数据包转发到远程 IP 吗?或者有其他软件可以吗?或者我应该在两台服务器之间创建一个隧道,然后在本地转发?我该怎么做?
我有一个带有两个网络接口的设置:eth0
和tap0
,桥接br0
bridge name bridge id STP enabled interfaces
br0 8000.************ no eth0
tap0
Run Code Online (Sandbox Code Playgroud)
除了本地 IPv6地址之外,既没有eth0
也tap0
没有 IP 地址eth0
:
2: eth0: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc fq_codel master br0 state UP group default qlen 1000
link/ether XX:XX:XX:XX:XX:XX brd ff:ff:ff:ff:ff:ff
inet6 fe80::XXXX:XXXX:XXXX:XXXX/64 scope link
valid_lft forever preferred_lft forever
41: tap0: <NO-CARRIER,BROADCAST,MULTICAST,PROMISC,UP> mtu 1500 qdisc fq_codel master br0 state DOWN group default qlen 100
link/ether YY:YY:YY:YY:YY:YY brd ff:ff:ff:ff:ff:ff
Run Code Online (Sandbox Code Playgroud)
但是,网桥具有静态 IPv4 地址和无状态配置的 IPv6 地址。因为我需要配置这个无状态的 IPv6 …