Подтвердить что ты не робот

Захват входящего трафика в tcpdump

В tcpdump, как я могу захватить весь входящий IP-трафик, предназначенный для моей машины? Меня не волнует мой локальный трафик.

Должен ли я просто сказать:

tcpdump ip dst $MyIpAddress and not src net $myIpAddress/$myNetworkBytes

... или я что-то не хватает?

4b9b3361

Ответ 1

В оболочке Bash попробуйте следующее:

tcpdump -i eth0 tcp and dst host $MyIpAddress and not src net $MyNetworkAddress/$myNetworkBytes

или эта эквивалентная формулировка:

tcpdump -i eth0 ip proto \\tcp and dst host $MyIpAddress and not src net $MyNetworkAddress/$myNetworkBytes

В моей системе это разрешается примерно так:

tcpdump -i eth0 tcp and dst host 10.0.0.35 and not src net 10.0.0.0/24

Если вы хотите увидеть весь трафик на целевом хосте, а не только трафик протокола TCP, который вы могли бы сделать:

tcpdump -i eth0 dst host $MyIpAddress and not src net $MyNetworkAddress/$myNetworkBytes

Некоторые примечания:

  • Я изменил $myIpAddress/$myNetworkBytes на $MyNetworkAddress/$myNetworkBytes. Это связано с тем, что явным намерением вашего правила является исключение трафика из вашей локальной сети, а правильный путь для указания сетевого адреса - указать сетевой наименьший IP-адрес (который называется сетевым адресом)/сетевая маска. Если вы укажете какой-либо адрес, отличный от младшего адреса в диапазоне для сети с сетевой маской $myNetworkBytes, вы получите сообщение об ошибке:

    tcpdump: non-network bits set in "10.0.0.3/24"
    
  • В первом примере "tcp" - это ключевое слово в языке выражения libpcap (man pcap-filter), тогда как во втором примере "tcp" используется как значение ip proto. Чтобы указать, что "tcp" во втором экземпляре является значением, а не другим ключевым словом "tcp" , мне нужно избежать "tcp" с двойной обратной косой чертой. Это должен быть двойной обратный слэш, чтобы интерпретатор Bash передавал один обратный слэш на интерпретатор libpcap (Bash ест первую обратную косую черту, libpcap получает вторую.) Чтобы уменьшить путаницу двойного побега, это может быть хорошо чтобы привыкнуть к двойному цитированию всей части выражения выражения команды:

    tcpdump -i eth0 "ip proto \tcp and dst host $MyIpAddress and not src net $MyNetworkAddress/$myNetworkBytes"
    
  • Чтобы избежать предупреждений и сюрпризов, лучше использовать спецификатор интерфейса -i eth0 или любой другой интерфейс. Не все интерфейсы обязательно имеют назначенный IP-адрес и не являются конкретными, вы можете увидеть трафик, который вы не хотели видеть. Это особенно актуально для систем, в которых работает сетевой менеджер, который, похоже, имеет собственный разум о том, какие интерфейсы добавлять и когда.

Ответ 2

Ни одно из указанных выше не очень хорошо подходит для коробки с несколькими ips.

Это очень хорошо работало для меня на DNS-сервере со многими связанными с ним ips:

tcpdump -l -n -i pub dst port 53 and inbound

Возможно, не работает во всех версиях tcpdump.

# tcpdump -V
tcpdump version 4.1-PRE-CVS_2012_03_26
libpcap version 1.4.0

Ответ 3

-Q      --direction = направление             Выберите направление направления отправки/получения, для которого пакеты должны             быть захваченным. Возможные значения: in', out 'и `inout'. Не             доступный на всех платформах.