|
| apache(1+2), Freebsd 5.0 kører ikke ipv4 Fra : Leif Neland |
Dato : 26-10-02 01:06 |
|
På et tidspunkt er min hjemme/testserver, der kører FreeBSD 5.0-CURRENT,
holdt op med at ville køre apache på tcp4, den lytter kun på tcp6. (ipv6)
Jeg har opdateret kernen, og kompileret ny apache2, med standard .conf-fil,
det hjælper ikke.
Jeg har prøvet at skifte til port 800, men stadig lytter den kun på tcp6, så
det er ikke et firewallspørgsmål.
Andre services (ftp, smtp, imap, ssh) fungerer udemærket må tcp4.
Hvad kan være galt?
Og lidt off-topic, kan WinXP køre ipv6? Skal jeg blot lave en AAAA-record?
Leif
| |
Alex Holst (26-10-2002)
| Kommentar Fra : Alex Holst |
Dato : 26-10-02 08:53 |
|
Leif Neland <leifn@neland.dk> wrote:
> På et tidspunkt er min hjemme/testserver, der kører FreeBSD 5.0-CURRENT,
> holdt op med at ville køre apache på tcp4, den lytter kun på tcp6. (ipv6)
>
....
>
> Hvad kan være galt?
Du har muligvis angivet et uheldigt argument til Listen i httpd.conf.
--
I prefer the dark of the night, after midnight and before four-thirty,
when it's more bare, more hollow. http://a.mongers.org
| |
Peter Makholm (26-10-2002)
| Kommentar Fra : Peter Makholm |
Dato : 26-10-02 11:19 |
|
"Leif Neland" <leifn@neland.dk> writes:
> På et tidspunkt er min hjemme/testserver, der kører FreeBSD 5.0-CURRENT,
> holdt op med at ville køre apache på tcp4, den lytter kun på tcp6. (ipv6)
Hvordan observerer du at den kun lytter på IPv6?
Linuxkernens implementation af IPv6 har nogle sjove features der gør
at hvis et program binmder sig til en tcp6-port kommer der en fejl når
den binder sig til samme tcp4-port, men det virker stadig på grund af
IPv4->IPv6 mapningen.
Jeg er dog næsten sikker på at denne feature ikke findes i
KAME-implementationen, som jeg mener at alle *BSD'erne er baseret på.
> Og lidt off-topic, kan WinXP køre ipv6? Skal jeg blot lave en AAAA-record?
Da jeg alligevel var inde på ipv6.org fandt jeg lige følgende side til
dig:
< http://www.ipv6.org/impl/windows.html>
--
Peter Makholm | There are 10 kinds of people. Those who count in
peter@makholm.net | binary and those who don't
http://hacking.dk |
| |
Leif Neland (29-10-2002)
| Kommentar Fra : Leif Neland |
Dato : 29-10-02 06:20 |
|
"Peter Makholm" <peter@makholm.net> skrev i en meddelelse
news:87y98l4i6g.fsf@xyzzy.adsl.dk...
> "Leif Neland" <leifn@neland.dk> writes:
>
> > På et tidspunkt er min hjemme/testserver, der kører FreeBSD 5.0-CURRENT,
> > holdt op med at ville køre apache på tcp4, den lytter kun på tcp6.
(ipv6)
>
> Hvordan observerer du at den kun lytter på IPv6?
>
netstat -an
Active Internet connections (including servers)
Proto Recv-Q Send-Q Local Address Foreign Address (state)
tcp6 0 0 *.80 *.* LISTEN
F.ex. telnet lytter på begge protokoller:
tcp6 0 0 *.23 *.* LISTEN
tcp4 0 0 *.23 *.* LISTEN
Det er med "Listen 80" i httpd.conf
Med "Listen 192.168.5.11:80"
Active Internet connections (including servers)
Proto Recv-Q Send-Q Local Address Foreign Address (state)
tcp4 0 0 192.168.5.11.80 *.* LISTEN
> Linuxkernens implementation af IPv6 har nogle sjove features der gør
> at hvis et program binmder sig til en tcp6-port kommer der en fejl når
> den binder sig til samme tcp4-port, men det virker stadig på grund af
> IPv4->IPv6 mapningen.
>
> Jeg er dog næsten sikker på at denne feature ikke findes i
> KAME-implementationen, som jeg mener at alle *BSD'erne er baseret på.
Det ser ud til, at apache binder sig til ipv6, hvis den kan, og ellers til
ipv4.
Den binder sig ikke til begge.
I apache2's listen.c:
#if APR_HAVE_IPV6
static int default_family = APR_UNSPEC;
#else
static int default_family = APR_INET;
#endif
static void find_default_family(apr_pool_t *p)
{
#if APR_HAVE_IPV6
/* We know the platform supports IPv6, but this particular
* system may not have IPv6 enabled. See if we can get an
* AF_INET6 socket and bind to an ephemeral port. (On most
* systems, getting an AF_INET6 socket is a sufficient test.
* On certain levels of OpenUNIX, getting the socket is
* successful but bind always returns ENETUNREACH.)
*/
if (default_family == APR_UNSPEC) {
apr_status_t sock_rv;
apr_socket_t *tmp_sock;
apr_sockaddr_t *sa;
if ((sock_rv = apr_socket_create(&tmp_sock, APR_INET6, SOCK_STREAM,
p))
== APR_SUCCESS &&
apr_sockaddr_info_get(&sa, NULL, APR_INET6, 0, 0, p) ==
APR_SUCCESS &&
apr_bind(tmp_sock, sa) == APR_SUCCESS) {
default_family = APR_INET6;
}
else {
default_family = APR_INET;
}
if (sock_rv == APR_SUCCESS) {
apr_socket_close(tmp_sock);
}
}
#endif
}
Så vidt jeg forstår, så lyttes enten på "0.0.0.0" eller "::", ikke begge
dele.
Det må vist være en apache-bug...
Leif
| |
Bo Simonsen (29-10-2002)
| Kommentar Fra : Bo Simonsen |
Dato : 29-10-02 08:32 |
|
Hej Leif!
29 Oct 02 kl.05:20 skrev Leif Neland til All:
LN> Så vidt jeg forstår, så lyttes enten på "0.0.0.0" eller "::", ikke
LN> begge dele.
Jeg havde det samme problem med ssh engang. Men jeg bruger ikke ipv6 mere, så
jeg fik aldrig løst det.
Bo
| |
Leif Neland (29-10-2002)
| Kommentar Fra : Leif Neland |
Dato : 29-10-02 06:29 |
|
"Peter Makholm" <peter@makholm.net> skrev i en meddelelse
news:87y98l4i6g.fsf@xyzzy.adsl.dk...
> "Leif Neland" <leifn@neland.dk> writes:
>
> > På et tidspunkt er min hjemme/testserver, der kører FreeBSD 5.0-CURRENT,
> > holdt op med at ville køre apache på tcp4, den lytter kun på tcp6.
(ipv6)
>
> Hvordan observerer du at den kun lytter på IPv6?
RTFM:
http://httpd.apache.org/docs-2.0/bind.html
On some platforms, such as NetBSD, binding to the IPv6 wildcard address
("::") does not allow Apache to accept connections on IPv4 interfaces. In
this situation, multiple Listen directives are required, as shown below:
Listen 0.0.0.0:80
Listen [::]:0
Apache does not currently detect this, so the Listen statements must be
edited manually by the administrator.
Det kunne de da godt skrive i default httpd.conf'en...
Leif
begin 666 up.gif
M1TE&.#EA"P`+`( ``/___T!8<2'Y! ``````+ `````+``L```(0C(^IRP8-
,XHHTT7NN;KRC`@`[
`
end
| |
|
|