我正在标记TCP和UDP数据包,以便将它们发送到两个不同的接口(比如wlan0和eth0),我按照这个答案做了这个。
假设这个配置:
eth0 address: 192.168.0.84
wlan0 address: 192.168.1.22
我正在设置以下规则/路线:
#!/bin/bash
iptables -A PREROUTING -t mangle -p tcp -j MARK --set-mark 1
echo 201 routeTcp >> /etc/iproute2/rt_tables
ip rule add fwmark 1 table routeTcp
ip route add default via 192.168.0.0 dev eth0 table routeTcp
iptables -A PREROUTING -t mangle -p udp -j MARK --set-mark 2
echo 202 routeUdp >> /etc/iproute2/rt_tables
ip rule add fwmark 2 table routeUdp
ip route add default via 192.168.1.0 dev wlan0 table routeUdp
route -n
输出:
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 eth0
192.168.0.0 0.0.0.0 255.255.255.0 U 1 0 0 eth0
192.168.1.0 0.0.0.0 255.255.255.0 U 9 0 0 wlan0
ip route show
输出:
default via 192.168.0.1 dev eth0 proto static
192.168.0.0/24 dev eth0 proto kernel scope link src 192.168.0.84 metric 1
192.168.1.0/24 dev wlan0 proto kernel scope link src 192.168.1.22 metric 9
ip route show table routeUdp
:
default via 192.168.1.1 dev wlan0
ip route show table routeTcp
:
default via 192.168.0.1 dev eth0
iptables -nL -v --line-numbers -t mangle
输出:
Chain PREROUTING (policy ACCEPT 388K packets, 474M bytes)
num pkts bytes target prot opt in out source destination
1 360K 464M MARK tcp -- * * 0.0.0.0/0 0.0.0.0/0 MARK set 0x1
2 27269 11M MARK udp -- * * 0.0.0.0/0 0.0.0.0/0 MARK set 0x2
Chain INPUT (policy ACCEPT 385K packets, 474M bytes)
num pkts bytes target prot opt in out source destination
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 290K packets, 33M bytes)
num pkts bytes target prot opt in out source destination
Chain POSTROUTING (policy ACCEPT 290K packets, 33M bytes)
num pkts bytes target prot opt in out source destination
如何通过正确的界面检查数据包是否实际发送?
我一直在与tcpdump挣扎但没有成功。
感谢你们。
好吧,我确实使用tcpdump来监控eth0 / wlan0流量,以便查看TCP和UDP是否在预期的接口上运行。
—
Giancarlo 2015年
请不要使用route -n来显示路由表,它是一个过时的命令。使用ip route show table name1 *或者调用路由表。如果未指定名称,则将显示默认路由表。
—
MariusMatutiae 2015年
添加了ip route show output ...
—
Giancarlo 2015年
通过eth0显示的UDP数据包是直接发送到您的局域网还是整个互联网?
—
MariusMatutiae 2015年
ip route
并且iptables -S -t mangle
会更好。另外,你是如何使用tcpdump的?