如何使用 专门从网络命名空间内的网络接口捕获流量tshark
?在我的例子中,网络接口tun0
被移动到名为vpn
.
通常运行tshark -f "port 53"
会使输出混乱,因为它包括来自网络命名空间最终使用的主接口的 DNS 查询。
这是我的网络命名空间设置(对于它的价值,这是来自这里的 openvpn netns-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"
您可以继续使用与在创建的网络命名空间中执行命令相同的未缩短语法
ip netns add
:喜欢:
注意避免触发 DNS 解析
tshark
的选项,在捕获 DNS 流量时尤其重要,否则由自身引起的级联 DNS 解析和捕获会污染原始流量。-n
tshark
作为旁注,
ip
命令本身有一个快捷方式允许替换ip netns exec FOO ip BAR ...
为ip -n FOO BAR ...
,但当然这不能用于任何其他命令。很多 OP 的设置可以缩短为ip -n vpn ...
而不是ip netns exec vpn ip ...
.