Apache2 không chạy trên cổng tcp IPv4


23

Tôi cần chạy Apache2 trên máy chủ Debian 7 của mình. Nhưng nó chỉ chạy trên cổng tcpv6, không chạy trên cổng tcpv4. Tôi đã cài đặt nó với cài đặt apt-get. Nếu tôi truy cập localhost hoặc 127.0.0.1 hoặc địa chỉ IPv4 máy chủ của tôi thì nó không hiển thị bất kỳ trang web nào.

My /etc/apache2/ports.conf:

# If you just change the port or add more ports here, you will likely also
# have to change the VirtualHost statement in
# /etc/apache2/sites-enabled/000-default
# This is also true if you have upgraded from before 2.2.9-3 (i.e. from
# Debian etch). See /usr/share/doc/apache2.2-common/NEWS.Debian.gz and
# README.Debian.gz

NameVirtualHost *:80
Listen 80

<IfModule mod_ssl.c>
 # If you add NameVirtualHost *:443 here, you will also have to change
 # the VirtualHost statement in /etc/apache2/sites-available/default-ssl
 # to <VirtualHost *:443>
 # Server Name Indication for SSL named virtual hosts is currently not
 # supported by MSIE on Windows XP.
 Listen 443
</IfModule>

<IfModule mod_gnutls.c>
 Listen 443
</IfModule>

netstat -plntu:

tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      3558/sshd       
tcp        0      0 0.0.0.0:3466            0.0.0.0:*               LISTEN      2820/mysqld     
tcp6       0      0 :::80                   :::*                    LISTEN      2097/apache2    
tcp6       0      0 :::22                   :::*                    LISTEN      3558/sshd       

3
Hãy thử thay đổi Listen 80thành Listen 0.0.0.0:80. Bạn có thể tham khảo tài liệu httpd.apache.org/docs/2.2/bind.html để biết thêm thông tin.
pradeepchhetri

@pradeepchhetri Cảm ơn bạn. Nó hoạt động. Tôi có thể truy cập vào địa chỉ máy chủ của mình từ bất kỳ máy tính nào và nó hiển thị nội dung (địa chỉ IP / some.php), nhưng tôi không cho phép truy cập vào some.php từ máy chủ này. Tôi đã thử localhost, 127.0.0.1 và IP bên ngoài: số cổng hoạt động từ PC khác ... Nhưng nó không hoạt động.
Mato

1
Bạn có thể gửi đầu ra của sudo iptables -nvLsudo sestatus? Tôi nghĩ rằng bạn có một số tường lửa cục bộ đang ngăn chặn.
pradeepchhetri

@Mato bạn cần làm rõ, khi nó hiển thị nội dung nhưng không hoạt động, bạn có nghĩa là nó hiển thị PHP thô của bạn thay vì chạy nó? Nếu vậy, bạn cần kích hoạt mô-đun PHP. Tôi nghĩ a2enmod php5nên làm điều đó cho bạn.
robbat2

3
Các máy Linux thường ẩn một ổ cắm IPv4 + IPv6 kép sau khi nghe địa chỉ IPv6 ::.
Pavel imerda

Câu trả lời:


32

Việc netstat chỉ hiển thị tcp6 ở đây không phải là vấn đề. Nếu bạn không chỉ định một địa chỉ để nghe, apache sẽ lắng nghe tất cả các họ địa chỉ được hỗ trợ bằng một ổ cắm duy nhất (vì lý do thiết kế, sshd sử dụng một ổ cắm duy nhất cho mỗi địa chỉ và họ địa chỉ, do đó hiển thị hai lần trong đầu ra netstat của bạn).

Đây là một trong những hệ thống của tôi, cho thấy apache chỉ có ổ cắm tcp6 và vẫn hoạt động tốt thông qua cả IPv4 và IPv6.

woodpecker ~ # netstat -anp |grep apache
tcp6       0      0 :::80    :::*       LISTEN      1637/apache2        
tcp6       0      0 :::443   :::*       LISTEN      1637/apache2        
woodpecker ~ # wget http://127.0.0.1/ -O /dev/null
--2013-12-25 08:52:38--  http://127.0.0.1/
Connecting to 127.0.0.1:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 45 [text/html]
...
# wget http://[::1]/ -O /dev/null
--2013-12-25 08:53:00--  http://[::1]/
Connecting to [::1]:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 45 [text/html]
...

Nếu bạn chạy wget http://127.0.0.1/ -O -trên máy chủ thì chuyện gì xảy ra? Liệu nó kết nối thành công? Nó có trả lại HTML thô cho trang web của bạn như mong đợi không?


cảm ơn, bây giờ nó hoạt động, nhưng tôi chỉ có một vấn đề nhỏ. Tôi đã viết về nó ở trên.
Mato

Bạn biết điều điên rồ là điều này luôn luôn là kinh nghiệm của tôi. Một cách tự nhiên. Là một lập trình viên mạng, tôi biết rõ về INADDR_ANYIN6ADDR_ANY_INIT. Nhưng hôm nay tôi đã thấy một số hành vi thực sự kỳ lạ. Không thay đổi tường lửa, không thay đổi Apache nhưng bằng cách nào đó, các máy chủ từ xa chỉ có thể kết nối qua IPv6 - đây là vấn đề đối với những người vẫn không có IPv6. Đó chắc chắn là một cái gì đó tôi sẽ giải quyết nhưng bạn hoàn toàn chính xác (mặc dù lời mời bạn đưa ra không áp dụng trong trường hợp của tôi không may).
Pryftan


1
  1. 127.0.0.1 chỉ cục bộ với một máy, bạn phải ở trên máy chủ trong trình duyệt để sử dụng địa chỉ ip / loopback cục bộ;

  2. Bạn có thể có một cổng chặn tường lửa;

  3. Hãy chắc chắn rằng apache đang chạy và hoạt động đúng, kiểm tra nhật ký lỗi;

  4. Kiểm tra lại tất cả các cấu hình apache của bạn;

  5. Bạn đang lưu trữ từ thư mục gốc www hoặc thư mục public_html của người dùng?

  6. Kiểm tra chủ sở hữu và quyền.


Gần năm 2019 (Chào mừng bạn đến tương lai):

  • Theo mặc định, hầu hết thế giới sử dụng ipv6 và nếu thất bại, hãy quay lại ipv4;

  • Bây giờ chúng ta có các đường hầm ipv4 trên ipv6 và vise-Versa;

  • Hầu hết các hệ điều hành, chương trình, máy khách và máy chủ đều làm điều này ngay bây giờ;

  • Chào mừng bạn đến với thế giới không còn NAT và phải phụ thuộc vào tường lửa / bộ lọc ngay trên thiết bị của bạn;

  • Tôi khuyên bạn nên cố gắng giữ cho tất cả các hệ thống của mình được xếp chồng lên nhau, hỗ trợ cả ipv4 và ipv6 cùng một lúc, vì vậy khi chuyển đổi ma thuật xảy ra, bạn vẫn hoạt động. Hệ điều hành, mạng, thậm chí ISP của tôi được xếp chồng lên nhau từ đầu đến cuối. Tôi có thể tắt ipv4 hoàn toàn nếu tôi muốn, nhưng những gì ở ngoài đó có thể không hoạt động nữa nếu không có đường hầm nào tồn tại trở lại ipv6 từ ipv4.


Tôi đã không biết có nên cho bạn +1 hay không - vì bạn đã sử dụng từ 'thư mục'. Nhưng ý tưởng không vô hiệu hóa IPv6 rất quan trọng - vì đảm bảo rằng tường lửa của bạn được cấu hình đúng cho IPv6. Tôi biết rằng nhiều người nghĩ NAT là bảo mật nhưng nhiều nhất đó chỉ là ảo ảnh (đó cũng là vấn đề đối với nhiều dịch vụ). Điều đó và các điểm khác của bạn đều hợp lệ vì vậy hãy có +1.
Pryftan

Tôi xin lỗi tôi có nghĩa là thư mục :-P
cdmlb

Vâng, vì điều đó tôi sẽ cho bạn thêm +1 nếu tôi có thể. Tôi khá ngạc nhiên và cũng khiêm tốn rằng bạn sẽ thay đổi nó. Tôi là một người theo chủ nghĩa thuần túy là tôi nghĩ tất cả những gì tôi có thể nói. Nó làm tôi bối rối và làm phiền tôi rằng một công ty nào đó đã từng sửa nó và sau đó đổi nó thành 'thư mục'. Có lẽ đó là để làm cho nó trở nên 'thân thiện' hơn với mọi người nhưng sau đó nó dường như đã được chấp nhận là từ thích hợp cho những người khác nên biết rõ hơn. Tôi không biết. Dù sao, toàn bộ danh sách của bạn là một cái gì đó tôi thực sự muốn nhiều người sẽ hiểu! Than ôi nhiều người không ...
Pryftan

-1

*

wget http://127.0.0.1/ -O / dev / null

* thể hiện kết nối với máy chủ cục bộ mà không xử lý IPv4 hoặc IPv6, nếu bạn thay đổi localhost (hoặc 127.0.0.1) thành địa chỉ IP IPv4 thực của máy chủ này, bạn không thể quên bất cứ điều gì vì bị từ chối kết nối.

Hãy thử mô tả IP của bạn trong các tệp cấu hình: NameVirtualhost: 80 Nghe: 80

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.