iptables,为DHCP设置DSCP?

时间:2016-03-31 15:35:17

标签: iptables dhcp

我正在尝试在DHCP数据包上设置DSCP位。虽然下面的udp工作正常,但数据包总是以16的DSCP发送。任何想法?

 iptables -t mangle -A FORWARD -p udp -j DSCP --set-dscp 1
 iptables -t mangle -A OUTPUT -p udp -j DSCP --set-dscp 1
 iptables -t mangle -A PREROUTING -p udp -j DSCP --set-dscp 1
 iptables -t mangle -A POSTROUTING -p udp -j DSCP --set-dscp 1

我正在使用dhclient - 我没有看到任何选项来设置它。

看起来dhclient硬编码在这里,fyi:

void assemble_udp_ip_header (interface, buf, bufix,
                             from, to, port, data, len)
        struct interface_info *interface;
        unsigned char *buf;
        unsigned *bufix;
        u_int32_t from;
        u_int32_t to;
        u_int32_t port;
        unsigned char *data;
        unsigned len;
{
        struct ip ip;
        struct udphdr udp;

        memset (&ip, 0, sizeof ip);

        /* Fill out the IP header */
        IP_V_SET (&ip, 4);
        IP_HL_SET (&ip, 20);
        ip.ip_tos = IPTOS_LOWDELAY;

1 个答案:

答案 0 :(得分:1)

我认为DHCP无法通过iptables捕获,因为它使用绕过整个netfilter机制的RAW套接字。有一些消息来源在此报告:

http://louwrentius.com/why-filtering-dhcp-traffic-is-not-always-possible-with-iptables.html

https://serverfault.com/questions/297383/unable-to-block-dhcp-and-other-traffic-on-input-chain