Public bug reported:

Pertinent info:
Description:    Ubuntu 12.04.2 LTS
Release:        12.04

apache2:
  Installed: 2.2.22-1ubuntu1.4
  Candidate: 2.2.22-1ubuntu1.4
  Version table:
 *** 2.2.22-1ubuntu1.4 0
        500 http://us.archive.ubuntu.com/ubuntu/ precise-updates/main amd64 
Packages
        500 http://security.ubuntu.com/ubuntu/ precise-security/main amd64 
Packages
        100 /var/lib/dpkg/status
     2.2.22-1ubuntu1 0
        500 http://us.archive.ubuntu.com/ubuntu/ precise/main amd64 Packages

Issue:
Apache fails to start on boot when attempting to bind to an IPv6 address. 
boot.log shows the following (IP changed for privacy purposes):

(99)Cannot assign requested address: make_sock: could not bind to address 
[2001:db8::1]:80
no listening sockets available, shutting down
Unable to open logs
Action 'start' failed.
The Apache error log may have more information.
 * Starting web server apache2                                                 
[fail]

Starting manually (apachectl start) after boot starts the daemon as
expected.

Here is the inet6 section of my /etc/network/interfaces. Again, IPs
removed for privacy. The post-up/pre-down route directives are required
to access my provider's network:

iface eth0 inet6 static
 address 2001:db8::1
 netmask 64
 up /sbin/ifconfig eth0 inet6 add 2001:db8::2/64
 down /sbin/ifconfig eth0 inet6 del 2001:db8::2/64
 post-up /sbin/ip -f inet6 route add 2001:db8::ff:ff:ff:ff dev eth0
 post-up /sbin/ip -f inet6 route add default via 2001:db8::ff:ff:ff:ff
 pre-down /sbin/ip -f inet6 route del default via 2001:db8::ff:ff:ff:ff
 pre-down /sbin/ip -f inet6 route del 2001:db8::ff:ff:ff:ff dev eth0

Doing a little bit of research, it appears apache is trying to bind to
an IP in the tentative state. (source: http://pyro.eu.org/how-to/micro
/nginx-cannot-assign-requested-address-ipv6.txt).

Adding the while loop shown on at that URL to /etc/network/interfaces
did not help; however, adding it to the beginning of /etc/init.d/apache2
resolved the issue. Suggest implementing something similar as a fix;
have /etc/init.d/apache2 check for IPs in the tentative state and sleep
until resolved.

** Affects: apache2 (Ubuntu)
     Importance: Undecided
         Status: New

** Description changed:

  Pertinent info:
  Description:  Ubuntu 12.04.2 LTS
  Release:      12.04
  
  apache2:
-   Installed: 2.2.22-1ubuntu1.4
-   Candidate: 2.2.22-1ubuntu1.4
-   Version table:
-  *** 2.2.22-1ubuntu1.4 0
-         500 http://us.archive.ubuntu.com/ubuntu/ precise-updates/main amd64 
Packages
-         500 http://security.ubuntu.com/ubuntu/ precise-security/main amd64 
Packages
-         100 /var/lib/dpkg/status
-      2.2.22-1ubuntu1 0
-         500 http://us.archive.ubuntu.com/ubuntu/ precise/main amd64 Packages
+   Installed: 2.2.22-1ubuntu1.4
+   Candidate: 2.2.22-1ubuntu1.4
+   Version table:
+  *** 2.2.22-1ubuntu1.4 0
+         500 http://us.archive.ubuntu.com/ubuntu/ precise-updates/main amd64 
Packages
+         500 http://security.ubuntu.com/ubuntu/ precise-security/main amd64 
Packages
+         100 /var/lib/dpkg/status
+      2.2.22-1ubuntu1 0
+         500 http://us.archive.ubuntu.com/ubuntu/ precise/main amd64 Packages
  
  Issue:
  Apache fails to start on boot when attempting to bind to an IPv6 address. 
boot.log shows the following (IP changed for privacy purposes):
  
  (99)Cannot assign requested address: make_sock: could not bind to address 
[2001:db8::1]:80
  no listening sockets available, shutting down
  Unable to open logs
  Action 'start' failed.
  The Apache error log may have more information.
-  * Starting web server apache2                                                
 [fail]
+  * Starting web server apache2                                                
 [fail]
  
  Starting manually (apachectl start) after boot starts the daemon as
  expected.
  
  Here is the inet6 section of my /etc/network/interfaces. Again, IPs
  removed for privacy. The post-up/pre-down route directives are required
  to access my provider's network:
  
  iface eth0 inet6 static
-       address 2001:db8::1
-       netmask 64
-       up /sbin/ifconfig eth0 inet6 add 2001:db8::2/64
-       down /sbin/ifconfig eth0 inet6 del 2001:db8::2/64
-       post-up /sbin/ip -f inet6 route add 2001:db8::ff:ff:ff:ff dev eth0
-       post-up /sbin/ip -f inet6 route add default via 2001:db8::ff:ff:ff:ff
-       pre-down /sbin/ip -f inet6 route del default via 2001:db8::ff:ff:ff:ff
-       pre-down /sbin/ip -f inet6 route del 2001:db8::ff:ff:ff:ff dev eth0
+  address 2001:db8::1
+  netmask 64
+  up /sbin/ifconfig eth0 inet6 add 2001:db8::2/64
+  down /sbin/ifconfig eth0 inet6 del 2001:db8::2/64
+  post-up /sbin/ip -f inet6 route add 2001:db8::ff:ff:ff:ff dev eth0
+  post-up /sbin/ip -f inet6 route add default via 2001:db8::ff:ff:ff:ff
+  pre-down /sbin/ip -f inet6 route del default via 2001:db8::ff:ff:ff:ff
+  pre-down /sbin/ip -f inet6 route del 2001:db8::ff:ff:ff:ff dev eth0
  
  Doing a little bit of research, it appears apache is trying to bind to
  an IP in the tentative state. (source: http://pyro.eu.org/how-to/micro
  /nginx-cannot-assign-requested-address-ipv6.txt).
  
  Adding the while loop shown on at that URL to /etc/network/interfaces
- did not help; however, adding it to the beginning /etc/init.d/apache2
+ did not help; however, adding it to the beginning of /etc/init.d/apache2
  resolved the issue. Suggest implementing something similar as a fix;
  have /etc/init.d/apache2 check for IPs in the tentative state and sleep
  until resolved.

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1207384

Title:
  apache2 failure to start on boot when binding to IPv6 address

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/apache2/+bug/1207384/+subscriptions

-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to