我有一台 Ubuntu 服务器 20.04,我无法在家外访问我的网站,我正在运行 bind9、Apache2、PHP、MariaDB,我使用 Cloudflare,并且启用了 IPv6,并且我在路由器上处于 DMZ 中,
ip address
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp0s25: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:23:24:08:58:1f brd ff:ff:ff:ff:ff:ff
inet 192.168.1.8/24 brd 192.168.1.255 scope global dynamic enp0s25
valid_lft 84322sec preferred_lft 84322sec
inet6 2604:99c0:8:2f0f:223:24ff:fe08:581f/64 scope global dynamic mngtmpaddr noprefixroute
valid_lft 43200sec preferred_lft 27000sec
inet6 fe80::223:24ff:fe08:581f/64 scope link
valid_lft forever preferred_lft forever
以下是我的 Cloudflare 设置的屏幕截图:
这是我的端口转发设置:
ADNS 传播检查显示主机名和 IPv6 已正确传播。
Ifconfig
enp0s25: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.8 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::223:24ff:fe08:581f prefixlen 64 scopeid 0x20<link>
ether 00:23:24:08:58:1f txqueuelen 1000 (Ethernet)
RX packets 39144 bytes 8484850 (8.4 MB)
RX errors 0 dropped 5561 overruns 0 frame 0
TX packets 27929 bytes 5369531 (5.3 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device interrupt 19 memory 0xf0500000-f0520000
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 70795 bytes 6729178 (6.7 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 70795 bytes 6729178 (6.7 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
答案1
您在问题中没有指出 IPv6 防火墙配置正确。IPv4 和 IPv6 防火墙是完全独立的,因为它们是独立的协议。
由于不使用 NAT,端口转发在 IPv6 中并不常用。即使您的暴露主机(通常被错误地标记为 DMZ)设置也只对一种协议有效。如果您必须输入 IPv4 地址,那就更加明显了。
处理 IPv6 防火墙规则对路由器来说更具挑战性;与以前不同,它不一定能控制本地网络上主机的 IPv6 地址。使用 SLAAC,他们可以自己选择。然后,前缀可以随时更改,从而再次更改所有地址。
您需要找到路由器的 IPv6 防火墙设置。在我的 FritzBox 上,我有专门的 IPv4/6 部分,如下所示:
也许可以尝试“端口转发”设置旁边的“防火墙”设置。
如果您的路由器不提供 IPv6 防火墙设置,则此方法无效。您应该改用 IPv4,可能还要结合使用动态 DNS 服务。
答案2
您的路由器屏幕截图显示您只设置了到本地 IPv4 地址的端口转发。您的路由器的 NAT 很可能阻止了对内部地址(甚至是 IPv6)的任何公共请求。
您要么需要公开您的本地 IPv6 地址以供公共请求(许多路由器都有允许这样做的“DMZ”设置)以便能够访问您的 Web 服务器的 IPv6 端,要么也为您的 IPv6 地址添加端口转发条目。
答案3
您首先需要在路由器中禁用 IPV6 防火墙。转到http://192.168.1.1并输入路由器管理员登录名和密码。进入后按照用户界面操作即可完成。
我最初也遇到过这个问题。我甚至打电话给我的 ISP,以为他们可能阻止了端口,但后来意识到我的错误。我从来没有想到我的 TP-LINK 路由器启用了 IPV6 防火墙。但现在我在 Ubuntu 上运行的 Apache 可以被外界访问。