Apache(Linux)httpd监听链接本地IPv6地址

我希望Apache在特定的接口上监听链路本地ipv6地址。 我有我的httpd.conf中的以下行:

Listen [fe80::a00:16ff:fe89:420f]:80 

这是基于这里的Apache文档: https : //httpd.apache.org/docs/2.4/bind.html “IPv6地址必须括在方括号”

我的操作系统/ Apache版本详细信息如下:

 $ httpd -v Server version: Apache/2.4.18 (Unix) Server built: Dec 14 2015 08:05:54 $ uname -rv 4.3.3-3-ARCH #1 SMP PREEMPT Wed Jan 20 08:12:23 CET 2016 

使用journalctl -e显示的结果是:

(22)无效参数:AH00072:make_sock:无法绑定到地址[fe80 …..

IPv6正在工作,因为我有sshd和dnsmasq监听。 我已经尝试追加两个不同的作用域ID后缀到地址。 您可以在ping6sshd使用接口标识3或名称net1作为scopeid。

 $ ip addr | grep -Po "^\d: \S+" 1: lo: 2: net0: 3: net1: $ for scopeid in 3 net1; do ping6 -c 1 fe80::a00:16ff:fe89:420f%$scopeid; done | grep loss 1 packets transmitted, 1 received, 0% packet loss, time 0ms 1 packets transmitted, 1 received, 0% packet loss, time 0ms 

sshd_config适用于: ListenAddress fe80::a00:16ff:fe89:420f%3

或者: ListenAddress fe80::a00:16ff:fe89:420f%net1

所以考虑到这一切,我在httpd.conf中尝试了以下内容

听[fe80 :: a00:16ff:fe89:420f%3]:80

Listen [fe80::a00:16ff:fe89:420f%net1]:80

在启动过程中,添加任何一个scopeid创build的Apache都会失败。 journalctl -e在parsinghttpd.conf时显示语法错误,如下所示:

AH00526:/etc/httpd/conf/httpd.conf的第52行的语法错误:
范围ID不受支持

如果我Listen [::1]:80 Apache监听localhost ipv6

我期望Listen 80能够将Apache绑定到ipv4和ipv6,但是它不会。 它只绑定到ipv6地址–netstat显示:

 tcp6 0 0 :::80 :::* LISTEN 

在这种情况下,Apache确实接受了net1上链路本地地址的请求。 我必须指定0.0.0.0:80或特定的ipv4地址来监听ipv4。

那么,如何让Apache绑定到一个特定的链路本地地址(不是所有的 – 我想避免在其他接口上监听),还是Apache不能监听链路本地ipv6地址?

花了一些时间在这似乎Apache文档可能会误导,虽然我可能错过了一些东西。 它说IPv6地址必须用方括号括起来。 非链接本地地址是这样的。 但是我现在已经发现可以使用链路本地地址,并且必须包含一个作用域ID,但没有方括号。 见下文:

Apache文档:

 $ wget -q -O- https://httpd.apache.org/docs/2.4/bind.html | grep -Pao "(?<=p.)IPv6[ az]+" IPv6 addresses must be enclosed in square brackets 

我的configuration:

 $ grep -R ^Listen /etc/httpd/conf/ /etc/httpd/conf/httpd.conf:Listen fe80::a00:16ff:fe89:420f%3:80 /etc/httpd/conf/extra/httpd-ssl.conf:Listen fe80::a00:16ff:fe89:420f%net1:443 

正如你所看到的,我使用了端口号为80的端口号,端口号为443的端口号。这只是为了显示接口ID或名称可以成功地用作范围ID。

结果:

 $ sudo netstat -pant | grep -i httpd tcp6 0 0 fe80::a00:16ff:fe89::80 :::* LISTEN 709/httpd tcp6 0 0 fe80::a00:16ff:fe89:443 :::* LISTEN 709/httpd