如何使用tshark专门从网络命名空间内的网络接口捕获流量?在我的例子中,网络接口tun0被移动到称为vpn的网络命名空间中。
通常,运行tshark -f "port 53"会使输出混乱,因为它包括来自网络命名空间最终使用的主接口的DNS查询。
这是我的网络命名空间设置(关于它的价值,这是来自openvpn up脚本这里的:http://www.naju.se/articles/openvpn-netns.html)
$ ip netns add vpn
$ ip netns exec vpn ip link set dev lo up
$ ip link set dev tun0 up netns vpn mtu 1500
$ ip netns exec vpn ip addr add dev tun0 "10.14.0.3/16"
$ ip netns exec vpn ip addr add dev tun0 "$ifconfig_ipv6_local"/112
$ ip netns exec vpn ip route add default via 10.14.0.1
$ ip netns exec vpn ip route add default via "$ifconfig_ipv6_remote"发布于 2022-03-19 23:56:50
您可以继续使用在用ip netns add创建的网络命名空间中执行命令所用的未缩短语法:
ip netns exec vpn 比如:
ip netns exec vpn tshark -i tun0 -n -f 'port 53'请注意tshark's选项-n以避免触发DNS解析,特别是在捕获DNS流量时,如果没有该选项,级联DNS解析和tshark本身造成的捕获将污染原始流量。
顺便提一句,ip命令本身有一个快捷方式,允许用ip -n FOO BAR ...替换ip netns exec FOO ip BAR ...,但当然不能用于任何其他命令。许多OP的设置可以缩短为ip -n vpn ...而不是ip netns exec vpn ip ...。
https://unix.stackexchange.com/questions/696097
复制相似问题