|
|
|
@ -91,23 +91,31 @@ if [ "$ACTION" = "add" ] && [ "$INTERFACE" = "wan" ]; then |
|
|
|
|
[ "${inthost#!}" = "$inthost" ] || return 0 |
|
|
|
|
[ "${exthost#!}" = "$exthost" ] || return 0 |
|
|
|
|
|
|
|
|
|
[ "${epmin#!}" != "$epmin" ] && \ |
|
|
|
|
extport="! --dport ${epmin#!}${epmax:+:$epmax}" || \ |
|
|
|
|
extport="--dport $epmin${epmax:+:$epmax}" |
|
|
|
|
|
|
|
|
|
[ "${ipmin#!}" != "$ipmin" ] && \ |
|
|
|
|
intport="! --dport ${ipmin#!}${ipmax:+:$ipmax}" || \ |
|
|
|
|
intport="--dport $ipmin${ipmax:+:$ipmax}" |
|
|
|
|
|
|
|
|
|
local p |
|
|
|
|
for p in ${proto:-tcp udp}; do |
|
|
|
|
case "$p" in |
|
|
|
|
tcp|udp) |
|
|
|
|
iptables -t nat -A nat_reflection_in \ |
|
|
|
|
-s $lanip/$lanmk -d $exthost \ |
|
|
|
|
-p $p --dport $epmin${epmax:+:$epmax} \ |
|
|
|
|
-j DNAT --to $inthost:$ipmin${ipmax:+-$ipmax} |
|
|
|
|
-p $p $extport \ |
|
|
|
|
-j DNAT --to $inthost:${ipmin#!}${ipmax:+-$ipmax} |
|
|
|
|
|
|
|
|
|
iptables -t nat -A nat_reflection_out \ |
|
|
|
|
-s $lanip/$lanmk -d $inthost \ |
|
|
|
|
-p $p --dport $ipmin${ipmax:+:$ipmax} \ |
|
|
|
|
-p $p $intport \ |
|
|
|
|
-j SNAT --to-source $lanip |
|
|
|
|
|
|
|
|
|
iptables -t filter -A nat_reflection_fwd \ |
|
|
|
|
-s $lanip/$lanmk -d $inthost \ |
|
|
|
|
-p $p --dport $ipmin${ipmax:+:$ipmax} \ |
|
|
|
|
-p $p $intport \ |
|
|
|
|
-j ACCEPT |
|
|
|
|
;; |
|
|
|
|
esac |
|
|
|
|