Протоколировать сетевые соединения перед перемещением сервера?
Мы обновляем старый сервер баз данных, но хотим убедиться, что мы обновляем код на всех других серверах, подключенных к нему. Я думаю о зеркалировании сетевого порта и регистрации того, какие IP-адреса подключаются к серверу. Я думал о том, чтобы включить ведение журнала на самом сервере, но я не хочу влиять на его производительность, так как он все еще работает.
Есть ли какие-либо рекомендации по программному обеспечению, которые я мог бы использовать для регистрации IP-адресов? Это может быть Windows, Linux, FreeBSD, VM, LiveCD или что-то еще. Пока он работает на x86-совместимом компьютере, я смогу запустить его.
1 ответ
На какой ОС работает сам сервер базы данных? Если это Linux, вы можете добавить правило регистрации в конфигурацию локального брандмауэра с минимальным воздействием на сервер. Что-то вроде:
iptables -A INPUT -m state --state NEW -p tcp --dport <yourdbport> -j LOG --log-prefix "[database] "
Можете добавить -m limit --limit 4/s
ограничить это правило регистрацией только 4 раза в секунду (и т. д.), что, если скорость соединения высока, будет препятствовать захвату всего ввода-вывода. Это будет записывать строки в системный журнал, которые выглядят так:
[database] IN=eth0 OUT= MAC=00:16:3c:21:7c:f1:00:d0:00:6f:8c:00:08:00 SRC=a.b.c.d
DST=w.x.y.z LEN=48 TOS=0x00 PREC=0x00 TTL=114 ID=16448 DF PROTO=TCP SPT=59871
DPT=5900 WINDOW=8192 RES=0x00 SYN URGP=0
Информация, которую вы хотите это SRC=
поле.
Если вы настроили отдельную систему Linux (или FreeBSD) для получения трафика от зеркального порта, вы можете использовать tcpdump
записать IP-адреса. Что-то вроде:
tcpdump -w record_of_connections -i eth0 \
dst port <yourdbport> and 'tcp[tcpflags] & tcp-syn != 0'
Это позволит сопоставить все пакеты для порта yourdbport с установленным флагом SYN (например, они являются новой попыткой подключения). После запуска этого для файла вы можете извлечь IP-адреса следующим образом:
tcpdump -r record_of_connections -n
Который будет производить такие строки:
15:07:40.808035 IP 10.243.16.190.53967 > 10.243.18.22.http: Flags [S],
seq 1235802021, win 5840, options [mss 1380,sackOK,TS val 3739192250
ecr 0,nop,wscale 7], length 0
Где поля:
<time> <protocol> <src_addr>.<src_port> > <dest_addr>.<dest_port>: ...
Это означает, что вы можете получить только исходный IP-адрес, например так:
tcpdump -r record_of_connections -n |
awk '{print $3}' |
sed 's/\.[^.]*$//' |
sort -u
sort -u
дает вам уникальный список адресов.