[Ecn-sane] Fwd: [PATCH firewall3 v1 0/2] fix DSCP/MARK target implementation
Rich Brown
richb.hanover at gmail.com
Mon Mar 22 08:58:30 EDT 2021
From the OpenWrt-devel mailing list...
Dunno if a) you're aware of this, or b) if this is actually relevant...
Rich
> Begin forwarded message:
>
> From: Philip Prindeville <philipp_subx at redfish-solutions.com>
> Subject: Re: [PATCH firewall3 v1 0/2] fix DSCP/MARK target implementation
> Date: March 21, 2021 at 11:23:04 PM EDT
> To: Tony Ambardar <itugrok at yahoo.com>
> Cc: openwrt-devel at lists.openwrt.org
> Sender: "openwrt-devel" <openwrt-devel-bounces at lists.openwrt.org>
>
> Are you aware that many open source apps already do DSCP marking?
>
> I submitted the changes to Firefox, Thunderbird, Cyrus, Proftpd, Sendmail, Postfix, Curl, Wget, Apache... and this was more than 15 years ago.
>
> Why would you want to overwrite marking if it's already present?
>
>
>> On Mar 21, 2021, at 7:06 PM, Tony Ambardar via openwrt-devel <openwrt-devel at lists.openwrt.org> wrote:
>>
>> The sender domain has a DMARC Reject/Quarantine policy which disallows
>> sending mailing list messages using the original "From" header.
>>
>> To mitigate this problem, the original message has been wrapped
>> automatically by the mailing list software.
>> From: Tony Ambardar <itugrok at yahoo.com>
>> Subject: [PATCH firewall3 v1 0/2] fix DSCP/MARK target implementation
>> Date: March 21, 2021 at 7:06:17 PM MDT
>> To: openwrt-devel at lists.openwrt.org
>> Cc: Jo-Philipp Wich <jo at mein.io>, Tony Ambardar <itugrok at yahoo.com>
>>
>>
>> Currently, fw3 places all DSCP/MARK target rules into the PREROUTING chain,
>> and accepts but ignores a src device. This behaviour is impractical for
>> most common applications (e.g. QOS setup), since rules are applied to all
>> devices and in all directions. Fix this generally by honouring src/dest
>> device selection and placing the rules into the appropriate chain of the
>> mangle table.
>>
>> These changes revealed the process of resolving zones to devices can add
>> duplicates due to the presence of aliased interfaces. Fix this by filtering
>> the fw3_zone->devices list during creation.
>>
>> Thanks go to Jo-Philipp Wich <jo at mein.io> for sharing proof of concept code
>> on IRC and providing additional review afterwards.
>>
>> Tony Ambardar (2):
>> zone: avoid duplicates in devices list
>> rules: fix device and chain usage for DSCP/MARK targets
>>
>> rules.c | 68 ++++++++++++++++++++++++++++++++++++---------------------
>> zones.c | 9 +++++++-
>> 2 files changed, 51 insertions(+), 26 deletions(-)
>>
>> Testing
>> =======
>>
>> Regression testing was done to confirm the default OpenWrt firewall rules
>> are unchanged before and after this patch.
>>
>> Functional testing was carried out using the UCI firewall rules below. This
>> set of test cases would normally yield the following incorrect iptables
>> rules (from iptables-save, sorted by test):
>>
>> -A PREROUTING -p udp -m udp --dport 1945 -m comment --comment "!fw3: Test-1-Zone-Any-PRE" -j DSCP --set-dscp 0x00
>> -A PREROUTING -p tcp -m tcp --dport 1960 -m comment --comment "!fw3: Test-4-Any-Any-FORW" -j MARK --set-xmark 0x7/0xff
>> -A PREROUTING -p udp -m udp --dport 1965 -m comment --comment "!fw3: Test-5-Zone-Dev-IN" -j DSCP --set-dscp 0x2e
>> -A OUTPUT -p udp -m udp --dport 1975 -m comment --comment "!fw3: Test-7-Dev-Dev-OUT" -j DSCP --set-dscp 0x30
>>
>> After this change, the resulting iptables rules use the expected devices
>> and chains:
>>
>> -A PREROUTING -i br-lan -p udp -m udp --dport 1945 -m comment --comment "!fw3: Test-1-Zone-Any-PRE" -j DSCP --set-dscp 0x00
>> -A FORWARD -i br-lan -o eth0 -p udp -m udp --dport 1950 -m comment --comment "!fw3: Test-2-Zone-Zone-FORW" -j DSCP --set-dscp 0x08
>> -A POSTROUTING -o eth0 -p tcp -m tcp --dport 1955 -m comment --comment "!fw3: Test-3-Any-Zone-POST" -j MARK --set-xmark 0x3/0xff
>> -A FORWARD -p tcp -m tcp --dport 1960 -m comment --comment "!fw3: Test-4-Any-Any-FORW" -j MARK --set-xmark 0x7/0xff
>> -A INPUT -i br-lan -p udp -m udp --dport 1965 -m comment --comment "!fw3: Test-5-Zone-Dev-IN" -j DSCP --set-dscp 0x2e
>> -A OUTPUT -o eth0 -p tcp -m tcp --dport 1970 -m comment --comment "!fw3: Test-6-Dev-Zone-OUT" -j MARK --set-xmark 0xf/0xff
>> -A OUTPUT -p udp -m udp --dport 1975 -m comment --comment "!fw3: Test-7-Dev-Dev-OUT" -j DSCP --set-dscp 0x30
>>
>> UCI FW Rules
>> ------------
>>
>> config rule
>> option enabled '1'
>> option target 'DSCP'
>> option set_dscp 'BE'
>> option proto 'udp'
>> option dest_port '1945'
>> option name 'Test-1-Zone-Any-PRE'
>> option src 'lan'
>> option dest '*'
>>
>> config rule
>> option enabled '1'
>> option target 'DSCP'
>> option set_dscp 'CS1'
>> option proto 'udp'
>> option dest_port '1950'
>> option name 'Test-2-Zone-Zone-FORW'
>> option src 'lan'
>> option dest 'wan'
>>
>> config rule
>> option enabled '1'
>> option target 'MARK'
>> option set_mark '0x03/0xff'
>> option proto 'tcp'
>> option dest_port '1955'
>> option name 'Test-3-Any-Zone-POST'
>> option src '*'
>> option dest 'wan'
>>
>> config rule
>> option enabled '1'
>> option target 'MARK'
>> option set_mark '0x07/0xff'
>> option proto 'tcp'
>> option dest_port '1960'
>> option name 'Test-4-Any-Any-FORW'
>> option src '*'
>> option dest '*'
>>
>> config rule
>> option enabled '1'
>> option target 'DSCP'
>> option set_dscp 'EF'
>> option proto 'udp'
>> option dest_port '1965'
>> option name 'Test-5-Zone-Dev-IN'
>> option src 'lan'
>>
>> config rule
>> option enabled '1'
>> option target 'MARK'
>> option set_mark '0x0f/0xff'
>> option proto 'tcp'
>> option dest_port '1970'
>> option name 'Test-6-Dev-Zone-OUT'
>> option dest 'wan'
>>
>> config rule
>> option enabled '1'
>> option target 'DSCP'
>> option set_dscp 'CS6'
>> option proto 'udp'
>> option dest_port '1975'
>> option name 'Test-7-Dev-Dev-OUT'
>>
>> --
>> 2.25.1
>>
>>
>>
>>
>> _______________________________________________
>> openwrt-devel mailing list
>> openwrt-devel at lists.openwrt.org
>> https://lists.openwrt.org/mailman/listinfo/openwrt-devel
>
>
> _______________________________________________
> openwrt-devel mailing list
> openwrt-devel at lists.openwrt.org
> https://lists.openwrt.org/mailman/listinfo/openwrt-devel
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.bufferbloat.net/pipermail/ecn-sane/attachments/20210322/03f9419f/attachment.html>
More information about the Ecn-sane
mailing list