LINUX.ORG.RU

На какой именно домен передаются пакеты?

 


0

1

У меня на вебсервере находится несколько сайтов на одном IP. Но команды iftop и «watch lsof -i :80» не показывают на какой именно из доменов идут соединения, везде фигурирует только один домен.

watch lsof -i :80

COMMAND   PID     USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
apache2 10599 www-data 27u IPv4 119820 0t0 TCP domain1.com:http->5x165x243x173.xxx.ru:53134 (ESTABLISHED)
apache2 11283 www-data 27u IPv4 126138 0t0 TCP domain1.com:http->spider-141-8-147-10.yandex.com:37743

iftop

domain1.com => vrn-nat-02.skv-telecom.ru 0b   57.9kb  74.2kb <= 0b   1.49kb  2.37kb
domain1.com => cable-home-193-110-115-68.krm.net.ua 320b 37.8kb 23.6kb <= 320b   2.09kb  1.30kb
domain1.com => 128-69-210-20.broadband.corbina.ru 0b 35.7kb 22.3kb

Файл /etc/hosts имеет такой вид:

# IPv4
127.0.0.1 localhost
176.9.98.3 domain1.com
176.9.98.3 domain2.com
176.9.98.3 domain3.com
# IPv6
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

Виртуальные хосты прописаны так /etc/apache2/sites-available/domain1.conf

<VirtualHost *:80>
ServerName domain1.com

Что нужно, чтобы например iftop правильно показывал на какой именно домен передаются пакеты?



Последнее исправление: h0lder (всего исправлений: 1)

Используйте tcpdump и анализируйте заголовок пакета. Либо wireshark, если хочется чего-либо графического.

kostik87 ★★★★★
()
Ответ на: комментарий от kostik87
tcpdump -i eth0 port 80

все равно фигурирует только один домен

22:24:33.686890 IP domain1.com.http > 91.202.163.148.kancleronline.net.2231: Flags [S.], seq 2277502111, ack 3894423203, win 29200, options [mss 1460,nop,nop,sackOK], length 0
22:24:33.751533 IP 91.202.163.148.kancleronline.net.2220 > domain1.com.http: Flags [.], ack 268, win 65269, length 0
h0lder
() автор топика

Ну не передаются пакеты на «домены», они передаются на IP-адреса. Так сложилось.

Можно наколхозить штуку, которая будет отслеживать, с какого запроса начинается данное http-соединение, запоминать это и сопоставлять с выводом netstat/iftop и прочего. Ничего готового не вспоминается (морда от wireshark позволяет легко разбираться, с чего началась сессия, в которую входит такой-то пакет, но с текущими соединениями она это не сопоставляет).

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

В http пакете указан адрес запрошенной страницы, включая и адрес домена (сайта).

kostik87 ★★★★★
()

Для того чтобы узнать домен нужно заглядывать внутрь содержимого пакета. Это умеет libpcap и соответственно почти все утилиты, работающие с этой библиотекой, проще всего, как уже писали выше, пользоваться wireshark или tcpdump. Если нужна статистика запросов по доменам - можно повесить эту работу на iptables.

Это если не используется https. Если он используется, то только средствами самого вебсервера.

wisp ★★
()

Пакеты идут на на домен, а на ip-адрес и порт. Как их обрабатывает получающий процесс - уже другой вопрос.

AnDoR ★★★★★
()

пакеты идут на айпи всегда. просто в теле пакета есть заголовок:

Host: example.com

именно так апач узнает, что пакет на этом интерфейсе предназначен такому-то виртуальному хосту апача.

так что тебе надо как-то узнать хттп-заголовок

moot ★★★★
()

tcpdump -n -A -s 0 -c 10 dst port 80 and greater 70
вот то что мне было нужно!

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