netstat에서 아파치가 실행되지 않는 경우


10

나는 단지 아파치를 가지고 놀고 있는데 그것이 작동하도록했다. 즉, 인터넷을 검색하여 서버에 연결할 수 http://127.0.0.1있고 http://192.168.1.5IPv6을 실행하지 않는다.

그러나 이것은 netstat의 결과입니다

$ sudo service apache2 status
 * apache2 is running
$ netstat -an | grep :80
tcp6       0      0 :::80                   :::*                    LISTEN

$ wget 127.0.0.1
--2014-06-26 01:32:15--  http://127.0.0.1/
Connecting to 127.0.0.1:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 11510 (11K) [text/html]
Saving to: ‘index.html’

100%[=====================================================================================================>] 11,510      --.-K/s   in 0s      

2014-06-26 01:32:15 (161 MB/s) - ‘index.html’ saved [11510/11510]

나는 그것이 분명히하는 일반 TCP에서 듣는 것을 기대하고있었습니다!?

편집하다:

$ netstat -a | grep LISTEN
tcp        0      0 localhost:ipp           *:*                     LISTEN     
tcp        0      0 localhost:mysql         *:*                     LISTEN     
tcp6       0      0 ip6-localhost:ipp       [::]:*                  LISTEN     
tcp6       0      0 [::]:https              [::]:*                  LISTEN     
tcp6       0      0 [::]:http               [::]:*                  LISTEN     

Edit2 : 왜 다운 투표? 내가 무엇을 놓칠 수 있습니까?


netstat -a | grep LISTEN 및 포스트 출력
Lety

결과를 게시했습니다
meccooll

시도 netstat -p했습니까?
muru

마지막 두 줄은 포트 80과 443에서 수신 대기중인 아파치입니다. 프로세스 / pid를 보려면 muru 제안을 시도하십시오.
Lety

@Letizia 맞습니다.하지만 첫 번째 열에 tcp6이 있고 :: IPv6 인 ip의 경우 IPv4에서 연결하고 있습니까 ???
meccooll

답변:


17

TL; DR

아파치는 않습니다 당신에 표시 netstat출력, 그리고 됩니다 실행. 그래서 당신의 wget전화가 작동합니다. 그러나 IPv4 주소 대신 IPv6 주소에 바인딩됩니다. 주소 매핑은 필요할 때 변환을 처리합니다.

문서 이동

여기에는 분명히 IPv6-IPv4 대체 메커니즘이 있습니다. 실제로 로컬 네트워크에서 IPv6을 사용하지 않습니다.

$ netstat -tunla | grep LISTEN | grep 80
tcp6       0      0 :::80                   :::*                    LISTEN

컴퓨터를 어떻게 처리하든 결국에도 동일한 서비스 및 포트라는 점에 유의해야합니다. 나머지는 주로 브라우저 및 DNS 확인 서비스에 달려 있습니다. 그러나 Apache가이를 처리하는 방법에 대한 자세한 내용은 해당 설명서를 참조하십시오 .

Apache 관리자에게는 복잡한 요소 중 하나는 IPv6 소켓이 IPv4 연결과 IPv6 연결을 모두 처리 할 수 ​​있는지 여부입니다. IPv6 소켓으로 IPv4 연결을 처리하는 것은 대부분의 플랫폼에서 기본적으로 허용되지만 해당 플랫폼의 시스템 전체 정책과 일치시키기 위해 FreeBSD, NetBSD 및 OpenBSD에서는 기본적으로 허용되지 않는 IPv4 매핑 된 IPv6 주소를 사용합니다. 기본적으로 허용되지 않는 시스템에서는 특수한 구성 매개 변수가 Apache의이 동작을 변경할 수 있습니다.

기본적으로 이는 크로스 플랫폼 호환성 및 소켓 처리와 관련된 대부분의 문제를 피하는 방식으로 IPv4 및 IPv6 소켓을 모두 처리하는 것입니다. 읽을 수 있듯이 Ubuntu와 같은 Linux 플랫폼에서이 문제는 IPv4 매핑 IPv6 주소를 사용하여 해결 됩니다. 이 문서에는 또한 다음과 같이 명시되어 있습니다.

플랫폼 및 APR의 지원 여부에 관계없이 Apache가 IPv4 연결 만 처리하도록하려면 모든 Listen 지시문에 IPv4 주소를 지정하십시오.

ports.conf파일 에 다음과 같은 내용이 표시 됩니다.

Listen 0.0.0.0:80 # Or...
Listen 127.0.0.1:80 # Or...
Listen 192.0.2.1:80

다음 netstat출력 중 하나가 발생합니다 ...

$ netstat -tunla | grep LISTEN | grep 80
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN 
$ netstat -tunla | grep LISTEN | grep 80
tcp        0      127.0.0.1:80              127.0.0.1:80            LISTEN
$ netstat -tunla | grep LISTEN | grep 80
tcp        0      192.0.2.1:80              192.0.2.1:80            LISTEN 

아름답지만 IPv6를 사용할 수없는 청취자. 위의 설정은 일반적으로 /etc/apache2/ports.conf(또는 apache2.conf이전 버전의 경우 직접) 설정됩니다 . 기본값 Listen 80은입니다. 자동 바인딩 을 수행합니다 ( 예 : 설명서에 지정된 IPv6 사양 준수).


1
Huh는 주소 매핑에 대해 몰랐으므로 IPv6과 IPv4 모두에서 열린 포트를 조심해야합니다.
meccooll

"askubuntu"에 가입하여이 질문을지지하고 답변을드립니다 !!!
Prem
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.