我基本上是尝试在 wlan0 接口(Ubuntu 18.04)上实现一个 tap 接口,即将每个通过 wlan0(传入和传出)的数据包镜像到另一个接口(tap0)。
我已经使用以下配置启动了 tap0/etc/network/interfaces
:
allow-hotplug tap0
auto tap0
iface tap0 inet manual
pre-up ip tuntap add tap0 mode tap user root
pre-up ip addr add 192.168.2.52/24 dev tap0
up ip link set dev tap0 up
post-up ip route del 192.168.2.0/24 dev tap0
post-up ip route add 192.168.2.52/32 dev tap0
post-down ip link del dev tap0
然后,我尝试使用以下 iptable 规则将流量从 wlan0 路由到 tap0:
iptables -A FORWARD -i wlan0 -o tap0 -j ACCEPT
iptables -A FORWARD -i tap0 -i wlan0 -j ACCEPT
然后我尝试使用tcpdump -ni tap0 -vv
但它没有显示任何数据包。
PS:我也尝试过以下方法:
方法 1:
通过编辑调出点击界面/etc/rc.local
和:
tunctl -t tap0
ifconfig tap0 192.168.2.52 netmask 255.255.255.0 up
iptables -t nat -A POSTROUTING -s 192.168.2.52/24 -j MASQUERADE
tcpdump -ni tap0 -vv still shows no packets.
方法 2:
# For incoming traffic
tc qdisc add dev wlan0 ingress
tc filter add dev wlan0 parent ffff: \
protocol all prio 2 u32 \
match u32 0 0 flowid 1:1 \
action mirred egress mirror dev tap0
# For outgoing traffic
tc qdisc replace dev wlan0 parent root handle 10: prio
tc filter add dev wlan0 parent 10: \
protocol all prio 2 u32 \
match u32 0 0 flowid 10:1 \
action mirred egress mirror dev tap0
请帮忙。谢谢!