Ticket #5173: fw-mss-fix.diff

File fw-mss-fix.diff, 3.3 KB (added by nico, 8 years ago)

Proposed fix (against trunk, r17757)

  • package/firewall/files/firewall.config

     
    1616        option output   ACCEPT  
    1717        option forward  REJECT 
    1818        option masq             1  
     19        option mtu_fix  1 
    1920 
    2021config forwarding  
    2122        option src      lan 
    2223        option dest     wan 
    23         option mtu_fix  1 
    2424 
    2525# We need to accept udp packets on port 68, 
    2626# see https://dev.openwrt.org/ticket/4108 
  • package/firewall/files/uci_firewall.sh

     
    5151        config_set $ZONE_LIST $1 1  
    5252 
    5353        $IPTABLES -N zone_$1 
    54         $IPTABLES -N zone_$1_MSSFIX 
     54        $IPTABLES -t mangle -N zone_$1_MSSFIX 
    5555        $IPTABLES -N zone_$1_ACCEPT 
    5656        $IPTABLES -N zone_$1_DROP 
    5757        $IPTABLES -N zone_$1_REJECT 
     
    6363        $IPTABLES -N zone_$1_prerouting -t nat 
    6464        $IPTABLES -t raw -N zone_$1_notrack 
    6565        [ "$6" == "1" ] && $IPTABLES -t nat -A POSTROUTING -j zone_$1_nat 
     66        [ "$7" == "1" ] && $IPTABLES -t mangle -A POSTROUTING -j zone_$1_MSSFIX 
    6667} 
    6768 
    6869addif() { 
     
    8384 
    8485        logger "adding $network ($ifname) to firewall zone $zone" 
    8586        $IPTABLES -A input -i "$ifname" -j zone_${zone} 
    86         $IPTABLES -I zone_${zone}_MSSFIX 1 -o "$ifname" -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu 
     87        $IPTABLES -t mangle -I zone_${zone}_MSSFIX 1 -o "$ifname" -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu 
    8788        $IPTABLES -I zone_${zone}_ACCEPT 1 -o "$ifname" -j ACCEPT 
    8889        $IPTABLES -I zone_${zone}_DROP 1 -o "$ifname" -j DROP 
    8990        $IPTABLES -I zone_${zone}_REJECT 1 -o "$ifname" -j reject 
     
    106107 
    107108        logger "removing $network ($ifname) from firewall zone $zone" 
    108109        $IPTABLES -D input -i "$ifname" -j zone_$zone 
    109         $IPTABLES -D zone_${zone}_MSSFIX -o "$ifname" -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu 
     110        $IPTABLES -t mangle -D zone_${zone}_MSSFIX -o "$ifname" -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu 
    110111        $IPTABLES -D zone_${zone}_ACCEPT -o "$ifname" -j ACCEPT 
    111112        $IPTABLES -D zone_${zone}_DROP -o "$ifname" -j DROP 
    112113        $IPTABLES -D zone_${zone}_REJECT -o "$ifname" -j reject 
     
    143144 
    144145fw_clear() { 
    145146        $IPTABLES -F 
     147        $IPTABLES -t mangle -F 
     148        $IPTABLES -t mangle -X 
    146149        $IPTABLES -t nat -F 
    147150        $IPTABLES -t nat -X 
    148151        $IPTABLES -t raw -F 
     
    227230        config_get network $1 network 
    228231        config_get_bool masq $1 masq "0" 
    229232        config_get_bool conntrack $1 conntrack "0" 
     233        config_get_bool mtu_fix $1 mtu_fix "0" 
    230234 
    231235        load_policy $1 
    232236        [ "$conntrack" = "1" -o "$masq" = "1" ] && append CONNTRACK_ZONES "$name" 
    233237        [ -z "$network" ] && network=$name 
    234         create_zone "$name" "$network" "$input" "$output" "$forward" "$masq" 
     238        create_zone "$name" "$network" "$input" "$output" "$forward" "$masq" "$mtu_fix" 
    235239        fw_custom_chains_zone "$name" 
    236240} 
    237241 
     
    305309 
    306310        config_get src $1 src 
    307311        config_get dest $1 dest 
    308         config_get_bool mtu_fix $1 mtu_fix 0 
    309312        [ -n "$src" ] && z_src=zone_${src}_forward || z_src=forward 
    310313        [ -n "$dest" ] && z_dest=zone_${dest}_ACCEPT || z_dest=ACCEPT 
    311314        $IPTABLES -I $z_src 1 -j $z_dest 
    312         [ "$mtu_fix" -gt 0 -a -n "$dest" ] && $IPTABLES -I $z_src 1 -j zone_${dest}_MSSFIX 
    313315 
    314316        # propagate masq zone flag 
    315317        find_item "$src" $CONNTRACK_ZONES && append CONNTRACK_ZONES $dest