Не бачите, як апарат працює в netstat


10

Я просто граю з apache, і я змусив його працювати, тобто я можу підключитися до сервера за допомогою перегляду http://127.0.0.1та http://192.168.1.5я НЕ запускаю IPv6

І все-таки це результат 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?
муру

Два останніх рядки посилаються на apache, який прослуховується на портах 80 і 443. спробуйте запропонувати muru, щоб переглянути процес / pid.
Леті

@Letizia правильно, але він говорить tcp6 в першому стовпці і :: для ip, який IPv6, але я підключаюся до нього на IPv4 ???
meccooll

Відповіді:


17

TL; DR

Apache робить з'явиться у вашому netstatвиході, і він буде запущений. Ось чому ваш wgetдзвінок працює. Однак він пов'язаний з вашою IPv6 адресою, а не з IPv4. Відображення адрес обробляє переклад, коли це необхідно.

Йдемо за документами

Очевидно, тут є якийсь механізм резервного захисту IPv6-IPv4. Власне кажучи, я ще не використовую IPv6 у своїй локальній мережі:

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

Важливо зауважити, що незалежно від того, як ви звертаєтесь до машини, зрештою, це все та сама послуга та порт. Решта в основному залежить від вашого веб-переглядача та служб роздільної здатності DNS. Однак для отримання додаткової інформації про те, як Apache впорається з цим, ви можете ознайомитися з їх документацією :

Одним з ускладнюючих факторів для адміністраторів Apache є те, чи може IPv6-розетка обробляти і IPv4-з'єднання, і IPv6-з'єднання. Для обробки IP-з'єднань IPv4 із сокетом IPv6 використовується IPv4-відображена IPv6-адреса, яка дозволена за замовчуванням на більшості платформ, але заборонена за замовчуванням на FreeBSD, NetBSD та OpenBSD, щоб відповідати загальносистемній політиці на цих платформах. У системах, де заборонено за замовчуванням, спеціальний параметр настройки може змінити цю поведінку для Apache.

В основному мова йде про обробку IPv4 і IPv6 сокетів таким чином, щоб уникнути більшості проблем, пов’язаних із сумісністю між платформами та керуванням сокетами. Як ви можете прочитати, на платформах Linux, таких як Ubuntu, ця проблема вирішується за допомогою IPv4-відображених IPv6-адрес . У документації також зазначено:

Якщо ви хочете, щоб Apache обробляв лише IPv4-з'єднання, незалежно від того, що підтримуватимуть ваша платформа та APR, вкажіть 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
Ху не знав про відображення адрес, тому мені доводиться стежити за відкритими портами як на IPv6, так і на IPv4.
meccooll

приєднався до "askubuntu", щоб підтвердити це питання та відповісти !!!
Прем
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.