如何在 m0n0wall 中端口转发 IPv6 数据包?
例如,我想将到达路由器端口 443 的流量转发到另一个 IPv6 地址:
- 界面:广域网
- 协议:TCP
- 外部端口范围:443
- 目标地址:2607:f8b0:4009:801::1053
- 目的端口范围:443
- 描述:https 转至安全服务器
或其他类型的服务:
- 界面:广域网
- 协议: TCP+UDP
- 外部端口范围:3784
- 目标地址:2607:f8b0:4009:801::1058
- 目的端口范围:3784
- 描述:文特里洛
IPv6 消除了对 NAT 的需要;但是我如何进行端口转发?
奖励问题
如何在 m0n0wall 中端口转发 IPv4?
例如,我想将到达路由器端口 443 的流量转发到另一个 IPv4 地址:
- 界面:广域网
- 协议:TCP
- 外部端口范围:443
- 目标地址:74.125.225.53
- 目的端口范围:443
- 描述:https 转至安全服务器
或其他类型的服务:
- 界面:广域网
- 协议: TCP+UDP
- 外部端口范围:3784
- 目标地址地址:74.125.225.58
- 目的端口范围:3784
- 描述:文特里洛
我知道该怎么做NAT到私有内部地址,但我的服务器不在 NAT 代理后面 - 它们直接连接到互联网,每个都有一个可公开路由的 IPv4 地址,例如
74.125.225.53
我希望人们只需要知道一个地址,例如:
superuser.com -> 64.34.119.12
但是我的 m0n0wall 路由器将数据包转发到适当的机器。
无关奖金的闲聊
我有一个使用 IPv6 直接连接到互联网的网络服务器,监听端口 80。
在过去,我会给人们一个地址:
超级用户网
该地址解析为路由器,路由器将数据包转发到适当的机器。
但随着 IPv6 的出现和 NAT 的取消,不再可能让人们地址名称,例如:
http://superuser.com
irc://superuser.com
ftp://superuser.com
news://superuser.com
https://superuser.com
ventrilo://superuser.com
torrent://superuser.com
不起作用。这是因为superuser.com
解析为相同的 IPv6 地址,例如:
2607:f8b0:4009:801::100e
其他服务器位于其他地址:
http -> 2607:f8b0:4009:801::1031
irc -> 2607:f8b0:4009:801::1041
ftp -> 2607:f8b0:4009:801::1059
news -> 2607:f8b0:4009:801::1026
https -> 2607:f8b0:4009:801::1053
ventrilo -> 2607:f8b0:4009:801::1058
torrent -> 2607:f8b0:4009:801::1097
因此用户现在被迫记住其他地址名称,例如:
www.superuser.com
wwws.superuser.com
ventrilo.superuser.com
torrent.superuser.com
irc.superuser.com
news.superuser.com
而不是单一的:
superuser.com
一切。
我喜欢只知道一个姓名。我想恢复它。我该如何恢复它?如何在 IPv6 中进行端口转发?
更新 2:
另一个问题是,当多个主机名被认为是同一台服务器时
http://www.superuser.com:80
http://m.superuser.com:80
http://mobile.superuser.com:80
http://english.superuser.com:80
http://spanish.superuser.com:80
http://latin.superuser.com:80
...
我真正想要的只是:
*.superuser.com
解析为同一个地址,并:80
转发给服务器。
答案1
我认为您正在寻找的可能是负载平衡器。但我认为 m0n0wall 没有这样的负载平衡器。
答案2
第一部分
IPv6 中没有 NAT(或者至少不应该有)。因此您不会转发端口。您可以使用一些选项来执行与 IPv4 中习惯的端口转换相同的操作:
- 在目标机器上使用相同的端口(看起来您正在这样做),因此您不需要转换端口。您只需创建防火墙规则以允许访问该端口。也不需要转换地址。
- 使用端口代理转换 TCP 或 UDP 端口和地址。本质上是静态 NAT。
奖金第 1 部分
这里没有 NAT 的 IPv4 的情况与上面关于没有 NAT 的 IPv6 的回应完全相同。
奖金第 2 部分
我不建议基于端口进行路由。基于端口号的路由违背了网络范式。路由应基于地址。而该地址可能基于 DNS。DNS 有一些扩展来指定服务和端口,称为 SRV 记录,但并非所有服务器(如 HTTP 或 SSH)都存在这些扩展。
如果您必须在端口上路由,那么您可以再次使用端口代理将某些 TCP 或 UDP 服务重定向到其他机器。
结论:
不要基于端口进行路由;而要基于地址进行路由。抱歉,但这意味着您需要为每项服务提供单独的 DNS 条目。