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"

  • Qual è il significato di "AH00485: il scoreboard è pieno, non a MaxRequestWorkers"?
  • Rendere i contenitori LXC direttamente accessibili con ipv6
  • Quali cambiamenti con l'authentication Kerberos in IPv6 quando tutti hanno un indirizzo IPv6 pubblico?
  • Come si può distinguere l'host e la port in un URL IPv6?
  • Proxy Squid: come colbind la port IPv4 + in ingresso a IPv6 in output
  • OpenVPN con i client ipv4 e ipv6 misti
  • 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?

    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.