LINUX.ORG.RU
решено ФорумAdmin

Apache не виден из интернета


6

3

Помогите, пожалуйста. Знаю, похожие темы были, но у меня немного другой случай. Уже который день бьюсь с проблемой, поиски в гугле мало к чему привели. Есть веб-сервер, который видно из локалки, но не видно извне. Сервер не подключен через роутер, он сам раздает интернет. IP - динамический. ДНС получаю через no-ip. SSH и FTP работают, то есть через инет можно попасть на сам сервер, а вот на апач нельзя.

Файл хоста настроен так:


<VirtualHost *:80>
        ServerAdmin admin@vampir1510.no-ip.biz
        ServerName vampir1510.no-ip.biz
        ServerAlias vampir1510.no-ip.biz
        DocumentRoot /var/www/share
        <Directory /var/www/share>
                Options FollowSymLinks Indexes MultiViews
                AllowOverride all
                order allow,deny
                allow from all
        </Directory>
               
        AddType application/x-httpd-php .php .php3 .php4 .php5 .phtml
        AddType application/x-httpd-php-source .phps
</VirtualHost>

Пробовал добавлять NameVirtualHost *:80 в начало - безрезультатно.

И еще:

neon@server:/etc/apache2/sites-available$ sudo netstat -tunpl | grep 80
tcp6       0      0 :::80                   :::*                    LISTEN      19391/apache2
tcp6       0      0 :::5800                 :::*                    LISTEN      3858/vino-server
udp        0      0 10.176.64.82:48097      0.0.0.0:*                           15053/python

Я относительно недавно начал изучать Линукс, не бейте сильно, если что-то упустил)

Перемещено leave из general

tcp6 0 0 :::80 :::* LISTEN 19391/apache2

Дак он у тебя на ipv4 не слушает, а только на ipv6. Должно быть еще:

tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 100500/apache2

anto215 ★★
()
Ответ на: комментарий от dubrovin_ak

iptables -L -v

Chain INPUT (policy ACCEPT 86M packets, 81G bytes)
 pkts bytes target     prot opt in     out     source               destination 

Chain FORWARD (policy ACCEPT 4105K packets, 2114M bytes)
 pkts bytes target     prot opt in     out     source               destination 
41345 2253K TCPMSS     tcp  --  any    any     anywhere             anywhere             tcpflags: SYN,RST/SYN TCPMSS clamp to PMTU
    0     0 REJECT     all  --  eth1   eth1    anywhere             anywhere             reject-with icmp-port-unreachable

Chain OUTPUT (policy ACCEPT 79M packets, 54G bytes)
 pkts bytes target     prot opt in     out     source               destination
vampir1510
() автор топика

Чтобы исключить, что кто-то рубит пакеты к апачу, можно проверить неткатом: выключаем апачь и запускаем

nc -l 80
И можно пробовать подключится к нему из прекрасного далека.. nc <servername> 80. Если чатик работает в обе стороны - проблема в настройках апача.

naszar
()
Ответ на: комментарий от sunny1983

httpd.conf пустой. Могу показать apache2.conf:


ServerName vampir1510.no-ip.biz

# Global configuration

#ServerRoot "/etc/apache2"

#
# The accept serialization lock file MUST BE STORED ON A LOCAL DISK.
#
LockFile ${APACHE_LOCK_DIR}/accept.lock

#
# PidFile: The file in which the server should record its process
# identification number when it starts.
# This needs to be set in /etc/apache2/envvars
#
PidFile ${APACHE_PID_FILE}

#
# Timeout: The number of seconds before receives and sends time out.
#
Timeout 300

#
# KeepAlive: Whether or not to allow persistent connections (more than
# one request per connection). Set to "Off" to deactivate.
#
KeepAlive On

#
# MaxKeepAliveRequests: The maximum number of requests to allow
# during a persistent connection. Set to 0 to allow an unlimited amount.
# We recommend you leave this number high, for maximum performance.
#
MaxKeepAliveRequests 100

#
# KeepAliveTimeout: Number of seconds to wait for the next request from the
# same client on the same connection.
#
KeepAliveTimeout 5

##
## Server-Pool Size Regulation (MPM specific)
## 

# prefork MPM
# StartServers: number of server processes to start
# MinSpareServers: minimum number of server processes which are kept spare
# MaxSpareServers: maximum number of server processes which are kept spare
# MaxClients: maximum number of server processes allowed to start
# MaxRequestsPerChild: maximum number of requests a server process serves
<IfModule mpm_prefork_module>
    StartServers          5
    MinSpareServers       5
    MaxSpareServers      10
    MaxClients          150
    MaxRequestsPerChild   0
</IfModule>

# worker MPM
# StartServers: initial number of server processes to start
# MinSpareThreads: minimum number of worker threads which are kept spare
# MaxSpareThreads: maximum number of worker threads which are kept spare
# ThreadLimit: ThreadsPerChild can be changed to this maximum value during a
#              graceful restart. ThreadLimit can only be changed by stopping
#              and starting Apache.
# ThreadsPerChild: constant number of worker threads in each server process
# MaxClients: maximum number of simultaneous client connections
# MaxRequestsPerChild: maximum number of requests a server process serves
<IfModule mpm_worker_module>
    StartServers          2
    MinSpareThreads      25
    MaxSpareThreads      75 
    ThreadLimit          64
    ThreadsPerChild      25
    MaxClients          150
    MaxRequestsPerChild   0
</IfModule>

# event MPM
# StartServers: initial number of server processes to start
# MinSpareThreads: minimum number of worker threads which are kept spare
# MaxSpareThreads: maximum number of worker threads which are kept spare
# ThreadsPerChild: constant number of worker threads in each server process
# MaxClients: maximum number of simultaneous client connections
# MaxRequestsPerChild: maximum number of requests a server process serves
<IfModule mpm_event_module>
    StartServers          2
    MinSpareThreads      25
    MaxSpareThreads      75 
    ThreadLimit          64
    ThreadsPerChild      25
    MaxClients          150
    MaxRequestsPerChild   0
</IfModule>

# These need to be set in /etc/apache2/envvars
User ${APACHE_RUN_USER}
Group ${APACHE_RUN_GROUP}

#
# AccessFileName: The name of the file to look for in each directory
# for additional configuration directives.  See also the AllowOverride
# directive.
#

AccessFileName .htaccess

#
# The following lines prevent .htaccess and .htpasswd files from being 
# viewed by Web clients. 
#
<Files ~ "^\.ht">
    Order allow,deny
    Deny from all
    Satisfy all
</Files>

#
DefaultType None


#
# HostnameLookups: Log the names of clients or just their IP addresses
# e.g., www.apache.org (on) or 204.62.129.132 (off).
# The default is off because it'd be overall better for the net if people
# had to knowingly turn this feature on, since enabling it means that
# each client request will result in AT LEAST one lookup request to the
# nameserver.
#
HostnameLookups Off

# ErrorLog: The location of the error log file.
# If you do not specify an ErrorLog directive within a <VirtualHost>
# container, error messages relating to that virtual host will be
# logged here.  If you *do* define an error logfile for a <VirtualHost>
# container, that host's errors will be logged there and not here.
#
ErrorLog ${APACHE_LOG_DIR}/error.log

#
# LogLevel: Control the number of messages logged to the error_log.
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
#
LogLevel warn

# Include module configuration:
Include mods-enabled/*.load
Include mods-enabled/*.conf

# Include list of ports to listen on and which to use for name based vhosts
Include ports.conf

#
# The following directives define some format nicknames for use with
# a CustomLog directive (see below).
# If you are behind a reverse proxy, you might want to change %h into %{X-Forwarded-For}i
#
LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %O" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent

# Include of directories ignores editors' and dpkg's backup files,
# see the comments above for details.

# Include generic snippets of statements
Include conf.d/

# Include the virtual host configurations:
Include sites-enabled/
vampir1510
() автор топика
Ответ на: комментарий от vampir1510

И еще 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

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>

Забыл уточнить, вдруг это важно, сижу под Debian Wheezy

vampir1510
() автор топика
Ответ на: комментарий от naszar

Попробовал неткатом отправить файл на комп в инете. Получил:

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>400 Bad Request</title>
</head><body>
<h1>Bad Request</h1>
<p>Your browser sent a request that this server could not understand.<br />
</p>
<hr>
<address>Apache/2.2.22 (Unix) PHP/5.3.10 Server at * Port 80</address>
</body></html>
vampir1510
() автор топика
Ответ на: комментарий от anto215

Нет, не ошибся. Эти строки говорят именно о том, то у ТС апач принимает соединения только по ipv6

ТС, попробуй заменить

Listen 80

на

Listen 0.0.0.0:80

Наверняка есть способ и лучше, но это первое что нагуглил. На своих ВМ я всегда полностью запрещаю ipv6 на уровне ядра.

router ★★★★★
()
Последнее исправление: router (всего исправлений: 1)
Ответ на: комментарий от router

Заменил, перезапустил, теперь стало

tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      18661/apache2
tcp6       0      0 :::5800                 :::*                    LISTEN      4518/vino-server
udp        0      0 95.26.84.31:58056       0.0.0.0:*                           19787/python
udp        0      0 95.26.84.31:38042       0.0.0.0:*                           19787/python

Все равно не могут попасть ко мне

vampir1510
() автор топика
Ответ на: комментарий от router

Это ересь.

Не в этом проблема.

ОП, iptables-save покажи, а также коротенько топологию расскажи (но чуть подробней чем в ОП-посте),

Ip0 ★★★★
()
Ответ на: комментарий от Ip0

iptables-save:

# Generated by iptables-save v1.4.14 on Thu Feb  6 01:49:43 2014
*mangle
:PREROUTING ACCEPT [12041370:12470380014]
:INPUT ACCEPT [10592984:11301511333]
:FORWARD ACCEPT [1443447:1168566035]
:OUTPUT ACCEPT [7823133:3382803527]
:POSTROUTING ACCEPT [9268414:4551490512]
COMMIT
# Completed on Thu Feb  6 01:49:43 2014
# Generated by iptables-save v1.4.14 on Thu Feb  6 01:49:43 2014
*filter
:INPUT ACCEPT [10592889:11301501819]
:FORWARD ACCEPT [1443388:1168562719]
:OUTPUT ACCEPT [7823059:3382796369]
-A FORWARD -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
-A FORWARD -i eth1 -o eth1 -j REJECT --reject-with icmp-port-unreachable
COMMIT
# Completed on Thu Feb  6 01:49:43 2014
# Generated by iptables-save v1.4.14 on Thu Feb  6 01:49:43 2014
*nat
:PREROUTING ACCEPT [166791:19340028]
:INPUT ACCEPT [153659:18486009]
:OUTPUT ACCEPT [97879:9262667]
:POSTROUTING ACCEPT [404:44763]
-A POSTROUTING -o ppp0 -j MASQUERADE
-A POSTROUTING -o eth1 -j MASQUERADE
COMMIT
# Completed on Thu Feb  6 01:49:43 2014

Итак: есть комп с установленным Debian. В компе матерника с двумя сетевыми портами (eth0, eth1). Комп соединяется с провайдером Beeline по vpn (ppp0) и раздает инет через другой (eth0) порт и далее через роутер Zyxel Keenetic, который сейчас выполняет лишь роль точки доступа wifi и 4-х портового коммутатора. Ну и к нему всякое разное по воздуху подцеплено. Провайдер выдает динамический ip, поэтому пользуюсь сервисом no-ip, привязал имя к айпишнику. На сервер можно зайти через ftp, ssh и даже майнкрафт (это из того, что пробовал поднять). А вот если вбить в браузере - ничего. Хотя из локальной сети он виден, вот.

vampir1510
() автор топика
Ответ на: комментарий от vampir1510

А провайдер не может резать? Обычно ограничиваются 25, но вдруг

router ★★★★★
()
Ответ на: комментарий от vampir1510

selinux есть/нет, включен/выключен?

Если из локалки работает, значит что-то конкретно с внешним интерфейсом.

telnet vampir1510.no-ip.biz 80 с локалхоста конектится нормально?

Ip0 ★★★★
()

у домашних провов обычно закрыты 80 порты

visual ★★★
()
Ответ на: комментарий от vampir1510

Можно поподробнее? Откуда необходимо пробовать подключиться и на что обратить внимание?

Еще раз: nc -l 80 запускаете на сервере завместо апача. После этого вам в консольку бедет сыпаться все, что приходит на 80 порт. Потом начинаете подключатся к этому серверу откуданибудь из интернета. Если все работает, вы можете устроить чатик между двумя консольками. (Потренируйтесь: в одной консоли nc -l 6666 и в другой nc 127.0.0.1 6666; все надписанное в одной консоли будет попадать в другую; единственно есть несколько версий нетката и у них немного различается синтаксис, я вам показал openbsd-netcat). Еще неткат умеет nc -vvz <server> <port> - просто проверить слушает ли ктонибудь <port> на <server>

-A POSTROUTING -o ppp0 -j MASQUERADE

Дык у вас же NAT. Надо 80 порт пробросить.

naszar
()
Ответ на: комментарий от naszar

Порты пробросил, как в инструкции. Все также, не видит. В iptables-save теперь появилось

-A PREROUTING -d 95.26.84.31/32 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.0.1

В данный момент netcat попробовать не смогу, а вот telnet vampir1510.no-ip.biz 80 пишет «Conected», так что вроде нормально.

По поводу провайдера: вряд ли. Год назад поднимал апач под виндой - все прекрасно виделось. Правда тогда все это было на основной рабочей машине, сидя через роутер, но все же это вряд ли к провайдеру.

selinux'а вроде нет.

Может еще какие конфиги показать?

vampir1510
() автор топика
Ответ на: комментарий от vampir1510

Если на vampir1510.no-ip.biz точно вы, то пинг к вам идет, а вот ack на syn к 80 не приходит... хотя к 22 коннектится. Так что надо рыть на сетевом уровне.

naszar
()
Ответ на: комментарий от vampir1510

Давайте тяжелую артиллерию.. запускаете sudo tcpdump -i any -w /tmp/all_cap.pcap и подключаетесь к своему vampir1510.no-ip.biz изнутри и снаружи.. потом ^C и /tmp/all_cap.pcap на какой-нибудь хостинг файлов и ссылку сюда. Потомучто странно: судя по нетстату апачь слушает, но нет ответов даже на syn'ы.. единственно стоит вопрос безопастности, ибо в файле будет весь ваш трафик за данный промежуток времени.. решайте сами.

naszar
()
Ответ на: комментарий от naszar

sudo tcpdump -i any -w /tmp/all_cap.pcap

ИМХО, я бы добавил port 80. Или host <удалённый адрес, с которого выполняется проверка>

router ★★★★★
()
Ответ на: комментарий от vampir1510

-A PREROUTING -d 95.26.84.31/32 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.0.1

Если я правильно понял, апач запущен на том же самом сервере, в который подключен кабель от провайдера. Поэтому это правило не нужно.

А поскольку IP динамический, то ещё и бесполезно. Тем более что уже есть MASQUERADE

router ★★★★★
()
Ответ на: комментарий от Ip0

Вряд ли именно оно. У меня тоже пчелайн, и веб-сервер работает. В личном кабинете сказано, что блокироваться может только 25 порт, и это можно отключить.

router ★★★★★
()
Ответ на: комментарий от naszar

Куда чего бл* пробросить?

Завязывайте уже с вредными советами.

У него сервер по совместительству рутер, web-сервер находится на томже хосте а не внутри ната.

Ip0 ★★★★
()

В общем, пока нет ответа насчет selinux могу еще посоветовать сменить порт на котором апач слушает, чтоб исключить вероятность блокировки порта провайдером.

Ip0 ★★★★
()
Ответ на: комментарий от Ip0

Пока нет ответа про selinux, нет смысла вешать apache на нестандартный порт - если selinux включен, то попытка обречена на провал.

router ★★★★★
()
Ответ на: комментарий от anto215

Дак он у тебя на ipv4 не слушает, а только на ipv6. Должно быть еще:

4.2.

tazhate ★★★★★
()
Ответ на: комментарий от router

Факт, но если он выключен, а проблема в билайне (как я понял из гуглежа у них есть свой «фаервол», который настраивается в личном кабинете), то это сразу будет видно.

Ip0 ★★★★
()
Ответ на: комментарий от Ip0

в личном кабинете у билайна настраивается только доступ к 25 порту (по крайней мере на тарифах с l2tp)

aol ★★★★★
()
Ответ на: комментарий от router

Покажи

sudo ls /selinux
sudo sestatus

Директория вроде пустая и

 sudo: sestatus: command not found 

ip route list

neon@server:~$ ip route list
0.0.0.0 dev eth1  scope link
default dev ppp0  scope link
10.176.64.0/21 dev eth1  proto kernel  scope link  src 10.176.64.82
78.107.1.156 via 10.176.64.1 dev eth1
78.107.1.156 dev ppp0  proto kernel  scope link  src 176.14.166.147
192.168.0.0/24 dev eth0  scope link
192.168.0.0/24 dev eth0  proto kernel  scope link  src 192.168.0.1

ip rule list

0:      from all lookup local
32766:  from all lookup main
32767:  from all lookup default

ip netns list - Ничего, как-то.

Куда чего бл* пробросить?

Завязывайте уже с вредными советами.

У него сервер по совместительству рутер, web-сервер находится на томже хосте а не внутри ната.

Значит надо убрать это из iptables-save?

vampir1510
() автор топика
Ответ на: комментарий от vinnni

Всем спасибо большое, проблемы больше нет. То есть нет вообще сервера, у меня удалили все из папки home и с внешнего жесткого диска 3тб. До свидания

vampir1510
() автор топика
Ответ на: комментарий от vinnni

Да я знаю, я глупый. Не подумал, что есть вот такие как ты. Мог бы просто сказать, мол такое дело...

vampir1510
() автор топика
Ответ на: комментарий от vinnni

А удалять всё нафига было? Детство в жопе заиграло?

Даже если на время забыть, что ты ТС'ы изрядно подгадил - зачем было компромат на самого себя заливать? У вас в/на до сих пор лихие 90?

router ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.