Changeset 23144


Ignore:
Timestamp:
2010-09-28T13:50:14+02:00 (6 years ago)
Author:
jow
Message:

[backfire] firewall: backport r23141, r23142 and r23143

Location:
branches/backfire/package/firewall
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • branches/backfire/package/firewall/Makefile

    r23063 r23144  
    1010 
    1111PKG_VERSION:=1 
    12 PKG_RELEASE:=17 
     12PKG_RELEASE:=18 
    1313 
    1414include $(INCLUDE_DIR)/package.mk 
  • branches/backfire/package/firewall/files/reflection.hotplug

    r22939 r23144  
    3535                config_foreach find_networks_cb zone "$1" 
    3636        } 
    37          
     37 
    3838        setup_fwd() { 
    3939                local cfg="$1" 
     
    8383                                [ "$proto" = tcpudp ] && proto="tcp udp" 
    8484 
     85                                [ "${inthost#!}" = "$inthost" ] || return 0 
     86                                [ "${exthost#!}" = "$exthost" ] || return 0 
     87 
    8588                                local p 
    8689                                for p in ${proto:-tcp udp}; do 
  • branches/backfire/package/firewall/files/uci_firewall.sh

    r23063 r23144  
    6363                export -n -- "$_var=$_min$_delim$_max" || \ 
    6464                export -n -- "$_var=${_min:-$_max}" 
     65} 
     66 
     67get_negation() { 
     68        local _var="$1" 
     69        local _flag="$2" 
     70        local _ipaddr="$3" 
     71 
     72        [ "${_ipaddr#!}" != "$_ipaddr" ] && \ 
     73                export -n -- "$_var=! $_flag ${_ipaddr#!}" || \ 
     74                export -n -- "$_var=${_ipaddr:+$_flag $_ipaddr}" 
    6575} 
    6676 
     
    109119                local msrc mdst 
    110120                for msrc in ${masq_src:-0.0.0.0/0}; do 
    111                         [ "${msrc#!}" != "$msrc" ] && msrc="! -s ${msrc#!}" || msrc="-s $msrc" 
     121                        get_negation msrc '-s' "$msrc" 
    112122                        for mdst in ${masq_dest:-0.0.0.0/0}; do 
    113                                 [ "${mdst#!}" != "$mdst" ] && mdst="! -d ${mdst#!}" || mdst="-d $mdst" 
     123                                get_negation mdst '-d' "$mdst" 
    114124                                $IPTABLES -A zone_${name}_nat -t nat $msrc $mdst -j MASQUERADE 
    115125                        done 
     
    354364        config_get ruleset $1 ruleset 
    355365 
     366        [ "$target" != "NOTRACK" ] || [ -n "$src" ] || { 
     367                echo "NOTRACK rule needs src" 
     368                return 
     369        } 
     370 
     371        local srcaddr destaddr 
     372        get_negation srcaddr '-s' "$src_ip" 
     373        get_negation destaddr '-d' "$dest_ip" 
     374 
    356375        local srcports destports 
    357376        get_portrange srcports "$src_port" ":" 
     
    359378 
    360379        ZONE=input 
    361         TARGET=$target 
    362         [ -z "$target" ] && target=DROP 
    363         [ -n "$src" -a -z "$dest" ] && ZONE=zone_$src 
    364         [ -n "$src" -a -n "$dest" ] && ZONE=zone_${src}_forward 
    365         [ -n "$dest" ] && TARGET=zone_${dest}_$target 
     380        TABLE=filter 
     381        TARGET="${target:-DROP}" 
     382 
     383        if [ "$TARGET" = "NOTRACK" ]; then 
     384                TABLE=raw 
     385                ZONE="zone_${src}_notrack" 
     386        else 
     387                [ -n "$src" ] && ZONE="zone_${src}${dest:+_forward}" 
     388                [ -n "$dest" ] && TARGET="zone_${dest}_${TARGET}" 
     389        fi 
    366390 
    367391        eval 'RULE_COUNT=$((++RULE_COUNT_'$ZONE'))' 
    368392 
    369393        add_rule() { 
    370                 $IPTABLES -I $ZONE $RULE_COUNT \ 
     394                $IPTABLES -t $TABLE -I $ZONE $RULE_COUNT \ 
     395                        $srcaddr $destaddr \ 
    371396                        ${proto:+-p $proto} \ 
    372397                        ${icmp_type:+--icmp-type $icmp_type} \ 
    373                         ${src_ip:+-s $src_ip} \ 
    374398                        ${srcports:+--sport $srcports} \ 
    375399                        ${src_mac:+-m mac --mac-source $src_mac} \ 
    376                         ${dest_ip:+-d $dest_ip} \ 
    377400                        ${destports:+--dport $destports} \ 
    378401                        -j $TARGET 
     
    440463                get_portrange natports "$dest_port" "-" 
    441464 
    442                 srcdaddr="$src_dip" 
     465                get_negation srcdaddr '-d' "$src_dip" 
    443466                get_portrange srcdports "$src_dport" ":" 
    444467 
     
    459482                get_portrange natports "$src_dport" "-" 
    460483 
    461                 srcdaddr="$dest_ip" 
     484                get_negation srcdaddr '-d' "$dest_ip" 
    462485                get_portrange srcdports "$dest_port" ":" 
    463486 
     
    470493        fi 
    471494 
     495        local srcaddr destaddr 
     496        get_negation srcaddr '-s' "$src_ip" 
     497        get_negation destaddr '-d' "$dest_ip" 
     498 
    472499        local srcports destports 
    473500        get_portrange srcports "$src_port" ":" 
     
    476503        add_rule() { 
    477504                $IPTABLES -I $natchain 1 -t nat \ 
     505                        $srcaddr $srcdaddr \ 
    478506                        ${proto:+-p $proto} \ 
    479                         ${src_ip:+-s $src_ip} \ 
    480507                        ${srcports:+--sport $srcports} \ 
    481                         ${srcdaddr:+-d $srcdaddr} \ 
    482508                        ${srcdports:+--dport $srcdports} \ 
    483509                        ${src_mac:+-m mac --mac-source $src_mac} \ 
     
    486512                [ -n "$dest_ip" ] && \ 
    487513                $IPTABLES -I ${fwdchain:-forward} 1 \ 
     514                        $srcaddr $destaddr \ 
    488515                        ${proto:+-p $proto} \ 
    489                         ${src_ip:+-s $src_ip} \ 
    490516                        ${srcports:+--sport $srcports} \ 
    491                         ${dest_ip:+-d $dest_ip} \ 
    492517                        ${destports:+--dport $destports} \ 
    493518                        ${src_mac:+-m mac --mac-source $src_mac} \ 
Note: See TracChangeset for help on using the changeset viewer.