Linux网络:如何通过第二个IPv4接口将来自Internet的传入IPv6连接转发到本地网络中的其他计算机?

豪克

我有某种Debian服务器网关僵尸,它有两个网络接口:eth0wlan0(是的,wlan0...我知道。)。

eth0已连接到为其分配IPv6地址的Internet电缆调制解调器。假设这是仅IPv6的分配。(实际上,它使用DS Lite,但现在暂时忽略它。)

wlan0通过主网关连接到基于IPv4的本地网络,而主网关又是另一个Internet电缆调制解调器。第二个电缆调制解调器仅从提供程序获取IPv4地址,并使用NAT将端口转发到本地计算机。

服务器僵尸的重要部分/etc/network/interfaces如下所示:

allow-hotplug eth0 iface eth0 inet static
    # Ignore the following IPv4 stuff...
    # I just added this to connect to the cable modem more conveniently
    address 192.168.0.22 
    netmask 255.255.255.0
    gateway 192.168.0.1

auto wlan0 iface wlan0 inet static
    wpa-ssid [ssid] # only required for my wlan connection
    wpa-psk [key] # only required for my wlan connection
    address 192.168.1.22
    netmask 255.255.255.0

    # The following makes sure that the main IPv4 network
    # can be reached from this computer:
    #gateway 192.168.1.1 # can't use this because only one IPv4 gateway is allowed at a time
    post-up ip route add 192.168.1.0/24 dev wlan0 src 192.168.1.22 table rt2
    post-up ip route add default via 192.168.1.1 dev wlan0 table rt2
    post-up ip rule add from 192.168.1.22/24 table rt2
    post-up ip rule add to 192.168.1.22/32 table rt2

我现在想使用我的server-gateway-zombie完成以下任务:来自IPv6eth0适配器在特定端口上的连接应作为IPv4连接转发到网络中的wlan0计算机。我该怎么做?


以下是一些其他信息,可让您深入了解我为什么要这样做:

由于我有两个电缆调制解调器,一个是IPv4的调制解调器,一个是IPv6的调制解调器(至少与传入连接有关),因此我想执行某种与IP版本相关的负载平衡。

这意味着每当客户端可以使用IPv6连接到我的网络时,它将到达我的IPv6电缆调制解调器,该调制解调器随后将流量重定向到服务器-网关-僵尸,然后再次将其重定向到IPv4网络中的服务器。另一方面,每当客户端只能使用IPv4连接到我的网络时,仅IPv4的电缆调制解调器的NAT就会启动,并相应地重定向流量。

这可以通过添加为我的主机名创建两个DNS条目来实现:一个用于IPv4地址,一个用于IPv6地址。

豪克

另一个答案中,我找到了使用的另一个方向(IPv4-> IPv6)的非常简单的解决方案socat

基于该解决方案,我只是在server-gateway-zombie上为守护程序设置了socat以下socat参数:

TCP6-LISTEN:80,su=nobody,fork,reuseaddr TCP4:192.168.1.23:80

这样,端口80上的所有传入数据包都将被重新打包,然后发送到仅IPv4的HTTP服务器。问题解决了!

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章