50abb1a714d75cd5ee12fd5937b2aa0f929b7700
3 iptables
="/sbin/iptables"
4 iptablesrestore
="/sbin/iptables-restore"
5 ifconfig
="/sbin/ifconfig"
9 #pimp files must be generated by optional-tools/make-pimp utility
10 pimp_2way_nat
="/dev/shm/pimp-2way-nat.tmp"
11 pimp_snat
="/dev/shm/pimp-snat.tmp"
12 etchosts
="/mnt/mtdblock0/hosts"
13 restoretmp
="/dev/shm/iptables-restore.tmp"
14 restoredata
="/mnt/mtdblock0/iptables-restore.in"
26 echo "*nat" > $restoretmp
27 echo ":PREROUTING ACCEPT [0:0]" >> $restoretmp
28 echo ":POSTROUTING ACCEPT [0:0]" >> $restoretmp
29 echo ":OUTPUT ACCEPT [0:0]" >> $restoretmp
31 # ===============================================================
32 # Symetrical SNAT-DNAT using indexed iptables
33 # ===============================================================
35 echo -n "Generating new iptables-restore data - two way SNAT/DNAT "
37 for czfip
in `$grep -v ^# $pimp_2way_nat|$cut -f 1 -d " "`
39 pubip
=`$grep "$czfip " $pimp_2way_nat|$cut -f 2 -d " "`
40 czffirstindex
=priv_
`ipcalc -n $czfip/$czffirstbitmask|$grep Network|$cut -f 4 -d \ |tr [./] _`
41 czfsecondindex
=priv_
`ipcalc -n $czfip/$czfsecondbitmask|$grep Network|$cut -f 4 -d \ |tr [./] _`
42 czfthirdindex
=priv_
`ipcalc -n $czfip/$czfthirdbitmask|$grep Network|$cut -f 4 -d \ |tr [./] _`
43 czffourthindex
=priv_
`ipcalc -n $czfip/$czffourthbitmask|$grep Network|$cut -f 4 -d \ |tr [./] _`
44 pubfirstindex
=pub_
`ipcalc -n $pubip/$pubfirstbitmask|$grep Network|$cut -f 4 -d \ |tr [./] _`
45 pubsecondindex
=pub_
`ipcalc -n $pubip/$pubsecondbitmask|$grep Network|$cut -f 4 -d \ |tr [./] _`
47 if ! $grep $czffirstindex $restoretmp > /dev
/null
49 echo :$czffirstindex "- [0:0]" >> $restoretmp
50 echo -A POSTROUTING
-d ! 10.0.0.0/8 -s `ipcalc -n $czfip/$czffirstbitmask|$grep Network|$cut -f 4 -d \ ` -o $wan1 -j $czffirstindex >> $restoretmp
51 echo -A POSTROUTING
-d ! 10.0.0.0/8 -s `ipcalc -n $czfip/$czffirstbitmask|$grep Network|$cut -f 4 -d \ ` -o $wan2 -j $czffirstindex >> $restoretmp
52 echo -A POSTROUTING
-d ! 10.0.0.0/8 -s `ipcalc -n $czfip/$czffirstbitmask|$grep Network|$cut -f 4 -d \ ` -o $wan3 -j $czffirstindex >> $restoretmp
53 echo -A POSTROUTING
-d ! 10.0.0.0/8 -s `ipcalc -n $czfip/$czffirstbitmask|$grep Network|$cut -f 4 -d \ ` -o $wan4 -j $czffirstindex >> $restoretmp
56 if ! $grep $czfsecondindex $restoretmp > /dev
/null
58 echo :$czfsecondindex "- [0:0]" >> $restoretmp
59 echo -A $czffirstindex -s `ipcalc -n $czfip/$czfsecondbitmask|$grep Network|$cut -f 4 -d \ ` -o $wan1 -j $czfsecondindex >> $restoretmp
60 echo -A $czffirstindex -s `ipcalc -n $czfip/$czfsecondbitmask|$grep Network|$cut -f 4 -d \ ` -o $wan2 -j $czfsecondindex >> $restoretmp
61 echo -A $czffirstindex -s `ipcalc -n $czfip/$czfsecondbitmask|$grep Network|$cut -f 4 -d \ ` -o $wan3 -j $czfsecondindex >> $restoretmp
62 echo -A $czffirstindex -s `ipcalc -n $czfip/$czfsecondbitmask|$grep Network|$cut -f 4 -d \ ` -o $wan4 -j $czfsecondindex >> $restoretmp
65 if ! $grep $czfthirdindex $restoretmp > /dev
/null
67 echo :$czfthirdindex "- [0:0]" >> $restoretmp
68 echo -A $czfsecondindex -s `ipcalc -n $czfip/$czfthirdbitmask|$grep Network|$cut -f 4 -d \ ` -o $wan1 -j $czfthirdindex >> $restoretmp
69 echo -A $czfsecondindex -s `ipcalc -n $czfip/$czfthirdbitmask|$grep Network|$cut -f 4 -d \ ` -o $wan2 -j $czfthirdindex >> $restoretmp
70 echo -A $czfsecondindex -s `ipcalc -n $czfip/$czfthirdbitmask|$grep Network|$cut -f 4 -d \ ` -o $wan3 -j $czfthirdindex >> $restoretmp
71 echo -A $czfsecondindex -s `ipcalc -n $czfip/$czfthirdbitmask|$grep Network|$cut -f 4 -d \ ` -o $wan4 -j $czfthirdindex >> $restoretmp
74 if ! $grep $czffourthindex $restoretmp > /dev
/null
76 echo :$czffourthindex "- [0:0]" >> $restoretmp
77 echo -A $czfthirdindex -s `ipcalc -n $czfip/$czffourthbitmask|$grep Network|$cut -f 4 -d \ ` -o $wan1 -j $czffourthindex >> $restoretmp
78 echo -A $czfthirdindex -s `ipcalc -n $czfip/$czffourthbitmask|$grep Network|$cut -f 4 -d \ ` -o $wan2 -j $czffourthindex >> $restoretmp
79 echo -A $czfthirdindex -s `ipcalc -n $czfip/$czffourthbitmask|$grep Network|$cut -f 4 -d \ ` -o $wan3 -j $czffourthindex >> $restoretmp
80 echo -A $czfthirdindex -s `ipcalc -n $czfip/$czffourthbitmask|$grep Network|$cut -f 4 -d \ ` -o $wan4 -j $czffourthindex >> $restoretmp
83 if ! $grep $pubfirstindex $restoretmp > /dev
/null
85 echo :$pubfirstindex "- [0:0]" >> $restoretmp
86 echo -A PREROUTING
-i $wan1 -d `ipcalc -n $pubip/$pubfirstbitmask|$grep Network|$cut -f 4 -d \ ` -j $pubfirstindex >> $restoretmp
87 echo -A PREROUTING
-i $wan2 -d `ipcalc -n $pubip/$pubfirstbitmask|$grep Network|$cut -f 4 -d \ ` -j $pubfirstindex >> $restoretmp
88 echo -A PREROUTING
-i $wan3 -d `ipcalc -n $pubip/$pubfirstbitmask|$grep Network|$cut -f 4 -d \ ` -j $pubfirstindex >> $restoretmp
89 echo -A PREROUTING
-i $wan4 -d `ipcalc -n $pubip/$pubfirstbitmask|$grep Network|$cut -f 4 -d \ ` -j $pubfirstindex >> $restoretmp
92 if ! $grep $pubsecondindex $restoretmp > /dev
/null
94 echo :$pubsecondindex "- [0:0]" >> $restoretmp
95 echo -A $pubfirstindex -i $wan1 -d `ipcalc -n $pubip/$pubsecondbitmask|$grep Network|$cut -f 4 -d \ ` -j $pubsecondindex >> $restoretmp
96 echo -A $pubfirstindex -i $wan2 -d `ipcalc -n $pubip/$pubsecondbitmask|$grep Network|$cut -f 4 -d \ ` -j $pubsecondindex >> $restoretmp
97 echo -A $pubfirstindex -i $wan3 -d `ipcalc -n $pubip/$pubsecondbitmask|$grep Network|$cut -f 4 -d \ ` -j $pubsecondindex >> $restoretmp
98 echo -A $pubfirstindex -i $wan4 -d `ipcalc -n $pubip/$pubsecondbitmask|$grep Network|$cut -f 4 -d \ ` -j $pubsecondindex >> $restoretmp
101 echo -A $pubsecondindex -i $wan1 -d $pubip/32 -j DNAT
--to-destination $czfip >> $restoretmp
102 echo -A $pubsecondindex -i $wan2 -d $pubip/32 -j DNAT
--to-destination $czfip >> $restoretmp
103 echo -A $pubsecondindex -i $wan3 -d $pubip/32 -j DNAT
--to-destination $czfip >> $restoretmp
104 echo -A $pubsecondindex -i $wan4 -d $pubip/32 -j DNAT
--to-destination $czfip >> $restoretmp
106 echo -A $czffourthindex -s $czfip/32 -o $wan1 -j SNAT
--to-source $pubip >> $restoretmp
107 echo -A $czffourthindex -s $czfip/32 -o $wan2 -j SNAT
--to-source $pubip >> $restoretmp
108 echo -A $czffourthindex -s $czfip/32 -o $wan3 -j SNAT
--to-source $pubip >> $restoretmp
109 echo -A $czffourthindex -s $czfip/32 -o $wan4 -j SNAT
--to-source $pubip >> $restoretmp
115 echo -n "Generating new iptables-restore data - one way SNAT "
117 # ===============================================================
118 # SNAT only using indexed iptables (should be rather function, hmm)
119 # ===============================================================
121 for czfip
in `$grep -v ^# $pimp_snat|$cut -f 1 -d " "`
123 pubip
=`$grep "$czfip " $pimp_snat|$cut -f 2 -d " "`
124 czffirstindex
=priv_
`ipcalc -n $czfip/$czffirstbitmask|$grep Network|$cut -f 4 -d \ |tr [./] _`
125 czfsecondindex
=priv_
`ipcalc -n $czfip/$czfsecondbitmask|$grep Network|$cut -f 4 -d \ |tr [./] _`
126 czfthirdindex
=priv_
`ipcalc -n $czfip/$czfthirdbitmask|$grep Network|$cut -f 4 -d \ |tr [./] _`
127 czffourthindex
=priv_
`ipcalc -n $czfip/$czffourthbitmask|$grep Network|$cut -f 4 -d \ |tr [./] _`
129 if ! $grep $czffirstindex $restoretmp > /dev
/null
131 echo :$czffirstindex "- [0:0]" >> $restoretmp
132 echo -A POSTROUTING
-d ! 10.0.0.0/8 -s `ipcalc -n $czfip/$czffirstbitmask|$grep Network|$cut -f 4 -d \ ` -o $wan1 -j $czffirstindex >> $restoretmp
133 echo -A POSTROUTING
-d ! 10.0.0.0/8 -s `ipcalc -n $czfip/$czffirstbitmask|$grep Network|$cut -f 4 -d \ ` -o $wan2 -j $czffirstindex >> $restoretmp
134 echo -A POSTROUTING
-d ! 10.0.0.0/8 -s `ipcalc -n $czfip/$czffirstbitmask|$grep Network|$cut -f 4 -d \ ` -o $wan3 -j $czffirstindex >> $restoretmp
135 echo -A POSTROUTING
-d ! 10.0.0.0/8 -s `ipcalc -n $czfip/$czffirstbitmask|$grep Network|$cut -f 4 -d \ ` -o $wan4 -j $czffirstindex >> $restoretmp
138 if ! $grep $czfsecondindex $restoretmp > /dev
/null
140 echo :$czfsecondindex "- [0:0]" >> $restoretmp
141 echo -A $czffirstindex -s `ipcalc -n $czfip/$czfsecondbitmask|$grep Network|$cut -f 4 -d \ ` -o $wan1 -j $czfsecondindex >> $restoretmp
142 echo -A $czffirstindex -s `ipcalc -n $czfip/$czfsecondbitmask|$grep Network|$cut -f 4 -d \ ` -o $wan2 -j $czfsecondindex >> $restoretmp
143 echo -A $czffirstindex -s `ipcalc -n $czfip/$czfsecondbitmask|$grep Network|$cut -f 4 -d \ ` -o $wan3 -j $czfsecondindex >> $restoretmp
144 echo -A $czffirstindex -s `ipcalc -n $czfip/$czfsecondbitmask|$grep Network|$cut -f 4 -d \ ` -o $wan4 -j $czfsecondindex >> $restoretmp
147 if ! $grep $czfthirdindex $restoretmp > /dev
/null
149 echo :$czfthirdindex "- [0:0]" >> $restoretmp
150 echo -A $czfsecondindex -s `ipcalc -n $czfip/$czfthirdbitmask|$grep Network|$cut -f 4 -d \ ` -o $wan1 -j $czfthirdindex >> $restoretmp
151 echo -A $czfsecondindex -s `ipcalc -n $czfip/$czfthirdbitmask|$grep Network|$cut -f 4 -d \ ` -o $wan2 -j $czfthirdindex >> $restoretmp
152 echo -A $czfsecondindex -s `ipcalc -n $czfip/$czfthirdbitmask|$grep Network|$cut -f 4 -d \ ` -o $wan3 -j $czfthirdindex >> $restoretmp
153 echo -A $czfsecondindex -s `ipcalc -n $czfip/$czfthirdbitmask|$grep Network|$cut -f 4 -d \ ` -o $wan4 -j $czfthirdindex >> $restoretmp
156 if ! $grep $czffourthindex $restoretmp > /dev
/null
158 echo :$czffourthindex "- [0:0]" >> $restoretmp
159 echo -A $czfthirdindex -s `ipcalc -n $czfip/$czffourthbitmask|$grep Network|$cut -f 4 -d \ ` -o $wan1 -j $czffourthindex >> $restoretmp
160 echo -A $czfthirdindex -s `ipcalc -n $czfip/$czffourthbitmask|$grep Network|$cut -f 4 -d \ ` -o $wan2 -j $czffourthindex >> $restoretmp
161 echo -A $czfthirdindex -s `ipcalc -n $czfip/$czffourthbitmask|$grep Network|$cut -f 4 -d \ ` -o $wan3 -j $czffourthindex >> $restoretmp
162 echo -A $czfthirdindex -s `ipcalc -n $czfip/$czffourthbitmask|$grep Network|$cut -f 4 -d \ ` -o $wan4 -j $czffourthindex >> $restoretmp
165 echo -A $czffourthindex -s $czfip/32 -o $wan1 -j SNAT
--to-source $pubip >> $restoretmp
166 echo -A $czffourthindex -s $czfip/32 -o $wan2 -j SNAT
--to-source $pubip >> $restoretmp
167 echo -A $czffourthindex -s $czfip/32 -o $wan3 -j SNAT
--to-source $pubip >> $restoretmp
168 echo -A $czffourthindex -s $czfip/32 -o $wan4 -j SNAT
--to-source $pubip >> $restoretmp
174 echo COMMIT
>> $restoretmp
175 mv $restoretmp $restoredata
This page took 0.414587 seconds and 3 git commands to generate.