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.