如何在 Debian 上的 lighttpd 中限制 IPv6 监听地址

如何在 Debian 上的 lighttpd 中限制 IPv6 监听地址

我尝试使 lighttpd 只能从 Debian 系统上的本地主机使用。以下行位于/etc/lighttpd/lighttpd.conf

server.port = 80
server.bind = "127.0.0.1"
server.use-ipv6 = "disable"

然而,网络服务器也在所有 IPv6 地址上运行:

# netstat -tupan|grep lighttpd
tcp        0      0 127.0.0.1:80            0.0.0.0:*               LISTEN      519887/lighttpd     
tcp6       0      0 :::80                   :::*                    LISTEN      519887/lighttpd    

使用以下行而不是配置文件中以前打印的行,服务器将无法启动:

server.bind = "[::1]"

这意味着,我只收到有关已使用端口的错误消息,但该端口未使用!

# netstat -tupan|grep LISTEN|grep 80/; lighttpd -f /etc/lighttpd/lighttpd.conf; netstat -tupan|grep LISTEN|grep 80/
2023-04-27 16:50:24: (network.c.537) can't bind to socket: [::1]:80: Address already in use

如何限制 lighttpd 仅在本地主机上侦听(仅 IPv4、仅 IPv6 或 IPv4 和 IPv6)

答案1

由于您的 lighttpd.conf 是基于 Debian 的,因此默认的 /etc/lighttpd/lighttpd.conf 包含:

include_shell "/usr/share/lighttpd/use-ipv6.pl " + server.port

您应该注释掉该行以停止 lighttpd 侦听 IPv6

#include_shell "/usr/share/lighttpd/use-ipv6.pl " + server.port

如果您仍然想让 lighttpd 只能从 IPv6 上的本地主机使用,请添加

$SERVER["socket"] == "[::1]:80" { }

相关内容