标记机器(客户端和路由器)之间的数据包?

标记机器(客户端和路由器)之间的数据包?

我可以在客户端OUTPUT链上标记数据包并在路由器上添加 iproute 策略以通过特定网关路由它们吗?这是我尝试做的,但它不起作用。

我客户的 mangle 表转储:

Chain OUTPUT (policy ACCEPT 13884 packets, 2327K bytes)
 pkts bytes target     prot opt in     out     source               destination         
13917 2330K MARK       all  --  *      *       0.0.0.0/0            0.0.0.0/0            MARK set 0x2

Chain POSTROUTING (policy ACCEPT 13889 packets, 2328K bytes)
 pkts bytes target     prot opt in     out     source               destination         
13889 2328K LOG        all  --  *      *       0.0.0.0/0            0.0.0.0/0            mark match 0x2 LOG flags 0 level 4

iptables路由器上的 mangle 表的 INPUT 链转储:

Chain INPUT (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 LOG        all  --  *      *       0.0.0.0/0            0.0.0.0/0            mark match 0x2 LOG flags 0 level 4
 2074  196K ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
   88 14890 ACCEPT     all  --  ethint *       0.0.0.0/0            0.0.0.0/0           
    0     0 ACCEPT     all  --  eth0   *       0.0.0.0/0            0.0.0.0/0           

经过一段时间并发送测试数据包(来自通过 wifi 连接到路由器的客户端的 ping,发送到 Intranet 外部的主机),路由器上的 LOG 计数器保持为零。

问题

  • 我的包裹怎么了?
  • 我的包裹在哪里丢失了标记?

答案1

数据包上的标记是存储在内核数据结构中的值。当内核处理数据包时,它会跟随数据包。它不是数据包本身的一部分。它不通过网络发送。您不能在一台主机上设置标记并在另一台主机上读取它。

相反,做什么取决于您想要实现的目标。如果可以的话,请在同一主机上进行过滤和修改。如果您必须在路由器上进行修改,您可以安排应用程序在数据包中包含一些您可以过滤的内容。

有时,您将无法避免在客户端上进行过滤(例如,如果它取决于外部因素,例如发送数据包的用户)和路由器上的损坏(例如,如果您需要将数据包重新路由到某个路由器不路由的地址)。在这种情况下,有一种通用方法来“标记”IP 数据包:为您的客户端分配多个 IP 地址,将客户端上的数据包修改为使用不同的传出 IP 地址根据您用于标记的条件,并根据客户端的 IP 地址在路由器上执行额外的修改。

相关内容