Ответ 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-адрес и не являются конкретными, вы можете увидеть трафик, который вы не хотели видеть. Это особенно актуально для систем, в которых работает сетевой менеджер, который, похоже, имеет собственный разум о том, какие интерфейсы добавлять и когда.