我有某种Debian服务器网关僵尸,它有两个网络接口:eth0
和wlan0
(是的,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] 删除。
我来说两句