Проверьте наличие пакетов, помеченных iptables

Проверьте наличие пакетов, помеченных iptables

Я помечаю пакеты 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.

Спасибо вам, ребята.

решение1

Вероятно, это не так: ваши команды маршрутизации неверны: вы используете

   ip route add default via 192.168.0.0 dev eth0 table routeTcp
   ip route add default via 192.168.1.0 dev wlan0 table routeUdp

в то время как они должны быть

   ip route add default via 192.168.0.1 dev eth0 table routeTcp
   ip route add default via 192.168.1.1 dev wlan0 table routeUdp

еслиВаши шлюзы — 192.168.0.1 и 192.168.1.1 соответственно; если нет, пожалуйста, измените их соответствующим образом.

Что касается проверки,

     tcpdump -i eth0 -n udp

в одном терминале, и

     tcpdump -i wlan0 -n tcp

в другом терминале; они должныобавозвращатьсянетпересечение пакетов.

РЕДАКТИРОВАТЬ:

Извините, я забыл, что нам нужно различать входящие и исходящие пакеты, только исходящие пакеты разделяются. Пожалуйста, используйте

       tcpdump -i wlan0 -n tcp and src host The_IP_ADDRESS_of_Wlan0
       tcpdump -i eth0 -n udp and src host The_IP_ADDRESS_of_eth00

Связанный контент