Apache (Linux) httpd ascolta l'indirizzo IPv6 locale di collegamento

Vorrei che Apache ascoltasse l'indirizzo ipv6 locale di collegamento su una particolare interface. Ho la seguente linea nel mio httpd.conf:

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

Che si basa sulla documentazione Apache qui: https://httpd.apache.org/docs/2.4/bind.html "Gli indirizzi IPv6 devono essere racchiusi tra parentesi quadre"

I dettagli del mio sistema operativo / Apache sono i seguenti:

 $ 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 

Il risultato mostrato utilizzando journalctl -e è:

(22) Argomento non valido: AH00072: make_sock: imansible bind all'indirizzo [fe80 …..

IPv6 sta funzionando perché ho sshd e dnsmasq ascolto. Ho provato a aggiungere due diversi suffissi ID di ambito all'indirizzo. È ansible utilizzare l'interface net1 o il nome net1 come scopeid in entrambi i ping6 e sshd .

 $ 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 funziona con: ListenAddress fe80::a00:16ff:fe89:420f%3

o: ListenAddress fe80::a00:16ff:fe89:420f%net1

Quindi, con tutto questo in mente ho provato il seguente in httpd.conf

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

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

Aggiunta di entrambi gli ambiti di applicazione ha reso Apache fallito prima nel suo process di avvio. journalctl -e mostra un errore di syntax quando analizza httpd.conf come segue:

AH00526: Errore di syntax nella row 52 di /etc/httpd/conf/httpd.conf:
L'ID di field non è supportto

Apache ascolta l'ipv6 localhost se faccio Listen [::1]:80

Mi aspetto che Listen 80 per get Apache per legarsi sia ipv4 e ipv6, ma non lo fa. Si lega solo agli indirizzi ipv6 – mostra netstat:

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

In questo caso, Apache accetta le richieste sull'indirizzo locale-link su net1. Devo specificare 0.0.0.0:80 o un indirizzo specifico ipv4 per ascoltare su ipv4.

Quindi, come faccio a bind Apache a un indirizzo locale specifico di collegamento (non tutti – voglio evitare di ascoltare altre interfacce), oppure è imansible solo per Apache ascoltare un indirizzo ipv6 locale di collegamento?

  • IPv6: utilizzando un collegamento mtu maggiore del mtu del path predefinito
  • 6TO4 Windows 2003 DNS
  • Combina configurazioni lighttpd per IPv4 e IPv6
  • C'è un modo cross-browser per controllare solo host IPv6 da parte di wpad.dat?
  • Sono necessarie norme speciali per ip6tables?
  • Qual è la motivazione per DNS64?
  • Cercando un libro su IPv6
  • Interfaccia IPv6 di router Cisco 1721 bloccata a
  • One Solution collect form web for “Apache (Linux) httpd ascolta l'indirizzo IPv6 locale di collegamento”

    Dopo aver passato un po 'di tempo su questo, sembra che la documentazione di Apache potrebbe essere fuorviante, anche se forse avrei perso qualcosa. Dice che gli indirizzi IPv6 devono essere racchiusi tra parentesi quadre. Questo vale per gli indirizzi non collegati a livello locale. Ma ora ho scoperto che gli indirizzi link-locali possono essere utilizzati e devono includere un ID di ambito, ma senza le parentesi quadre. Vedi sotto:

    Documentazione 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 

    La mia 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 

    Come si può vedere, ho usato l'ID di interface per l'ID di field con la port 80 e il nome dell'interface per l'ID di field con la port 443. Questo è solo per dimostrare che l'ID o il nome dell'interface possono essere utilizzati correttamente come scope id.

    risultati:

     $ 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 
    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.