[iptables] Lage performance

Pagina: 1
Acties:

  • Wirehead
  • Registratie: December 2000
  • Laatst online: 22-11-2025
Ik heb een probleem met m'n iptables script. Sedert ik een debian-router in gebruik heb, is m'n downloadsnelheid zo'n 10 keer lager dan normaal. (nu: 60KB/sec, vroeger 600KB/sec).

Ik vermoed dat er een en ander niet pluis is aan het script. Heb al gezocht via de search maar ik vind niks relevant.

Specs router:
• PII 333Mhz, 192MB RAM
• 10Mbit Realtek (rtl8029 chipset) gekoppeld aan de kabelmodem (eth1 in het script > via DHCP)
• 100Mbit Realtek (rtl8139 chipset) gekoppeld aan de switch (eth0 in het script > lokaal netwerk)
• Draaiend onder Debian, met Kernel 2.6.8.

Iemand een idee wat het kan zijn?


Het iptables-script:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
#! /bin/sh
#
IPT=/sbin/iptables

case "$1" in
  start)
        echo -n "Activating Firewall "

        # Turn on IP spoofing
        #############################################################
        for i in /proc/sys/net/ipv4/conf/*/rp_filter; do
            echo "1" > $i
        done

        # No ICMP redirects
        #############################################################
        echo "0" > /proc/sys/net/ipv4/conf/all/accept_redirects

        # Enable IP-forwarding
        #############################################################
        echo "1" > /proc/sys/net/ipv4/ip_forward

        # Set default policies, drop all
        #############################################################
        $IPT -F
        $IPT -X
        $IPT -Z
        $IPT -t nat -F
        $IPT -t nat -X
        $IPT -t nat -Z
        $IPT -P INPUT   DROP
        $IPT -P FORWARD DROP
        $IPT -P OUTPUT  DROP

        # Portforward SSH for ares
        #############################################################
        $IPT -A PREROUTING -i eth1 -s 0/0 -t nat -p tcp -d 0/0 --dport 5901 -j DNAT --to 192.168.0.2:5901

        # Add official IP to outgoing stuff
        #############################################################
        $IPT -A POSTROUTING -t nat -o eth1 -j MASQUERADE

        # Accept loopback traffic
        #############################################################
        $IPT -A INPUT  -i lo -j ACCEPT
        $IPT -A OUTPUT -o lo -j ACCEPT

        # Accept already established connections
        #############################################################
        $IPT -A INPUT   -m state --state ESTABLISHED,RELATED -j ACCEPT
        $IPT -A OUTPUT  -m state --state ESTABLISHED,RELATED -j ACCEPT
        $IPT -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

        # Add own tables
        #############################################################
        $IPT -N CHECKIN
        $IPT -N CHECKOUT
        $IPT -N CHECKFWD

        # Allow new connections in own tables
        #############################################################
        $IPT -A INPUT   -s 0/0 -d 0/0 -m state --state NEW -j CHECKIN
        $IPT -A OUTPUT  -s 0/0 -d 0/0 -m state --state NEW -j CHECKOUT
        $IPT -A FORWARD -s 0/0 -d 0/0 -m state --state NEW -j CHECKFWD


        #############################################################
        #############################################################
        ###
        ###                 Incoming Connections
        ### 
        #############################################################
        #############################################################

        # Drop suspicious packets
        #############################################################
        $IPT -A CHECKIN -p tcp --tcp-flags ALL ALL
        $IPT -A CHECKIN -p tcp --tcp-flags ALL FIN,URG,PSH
        $IPT -A CHECKIN -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG
        $IPT -A CHECKIN -p tcp --tcp-flags SYN,RST SYN,RST
        $IPT -A CHECKIN -p tcp --tcp-flags SYN,FIN SYN,FIN
        $IPT -A CHECKIN -p tcp --tcp-flags ALL NONE

        # Drop packets without syn-bit
        #############################################################
        $IPT -A CHECKIN -p tcp ! --syn -m state --state NEW -j DROP

        # Allow ICMP Type 8 (Echo Request)
        #############################################################
        $IPT -A CHECKIN -p icmp --icmp-type echo-request -j ACCEPT

        # Accept SSH connections (from every interface)
        #############################################################
        $IPT -A CHECKIN -p tcp -s 0/0 --sport 5900: -d 0/0 --dport 5900 -j ACCEPT

        # Accept HTTP connections (from every interface)
        #############################################################
        $IPT -A CHECKIN -p tcp -s 0/0 --sport 8000: -d 0/0 --dport 8000 -j ACCEPT
        
        # Accept DNS-answers
        #############################################################
        $IPT -A CHECKIN -p udp -s 192.168.0.2 --sport 53 -d 0/0 --dport 53: -j ACCEPT
        $IPT -A CHECKIN -p udp -s 192.168.0.3 --sport 53 -d 0/0 --dport 53: -j ACCEPT

        # Re-drop unneeded stuff
        #############################################################
        $IPT -A CHECKIN -s 0/0 -j DROP

        #############################################################
        #############################################################
        ###
        ###                  Outgoing connections
        ###
        #############################################################
        #############################################################

        # Accept outgoing PING
        #############################################################
        $IPT -A CHECKOUT -p icmp --icmp-type echo-request -j ACCEPT

        # Accept NTP
        #############################################################
        $IPT -A CHECKOUT -o eth1 -p udp -s 0/0 --sport 123 -d 0/0 --dport 123 -j ACCEPT

        # Accept WHOIS
        #############################################################
        $IPT -A CHECKOUT -o eth1 -p tcp -s 0/0 --sport 1024: -d 0/0 --dport 43 -j ACCEPT

        # Allow AUTH
        #############################################################
        $IPT -A CHECKOUT -p tcp -s 0/0 --sport 1024: -d 0/0 --dport 113 -j ACCEPT

        # Allow DNS
        #############################################################
        $IPT -A CHECKOUT -p udp -s 0/0 -d 192.168.0.2 --dport 53 -j ACCEPT
        $IPT -A CHECKOUT -p udp -s 0/0 -d 192.168.0.3 --dport 53 -j ACCEPT
        
        # Allow SMTP
        #############################################################
        $IPT -A CHECKOUT -o eth0 -p tcp -s 192.168.0.2 --sport 1024: -d 192.168.0.2 --dport 25 -j ACCEPT
        $IPT -A CHECKOUT -o eth0 -p tcp -s 192.168.0.3 --sport 1024: -d 192.168.0.3 --dport 25 -j ACCEPT


        # Re-drop unneeded stuff
        #############################################################
        $IPT -A CHECKOUT -s 0/0 -j DROP

        #############################################################
        #############################################################
        ###
        ###                       IP-Forwarding
        ###
        #############################################################
        #############################################################



        # Internet to SSH from ares
        #############################################################
        $IPT -A CHECKFWD -i eth1 -o eth0 -p tcp -s 0/0 --sport 1024: -d 192.168.0.2 --dport 5901 -j ACCEPT


        # Forward stuff
        #############################################################
        $IPT -A CHECKFWD -i eth0 -s 192.168.0.0/24 -d 0/0 -j ACCEPT

        # Outgoing ICMP
        #############################################################
        $IPT -A CHECKFWD -i eth0 -o eth1 -p icmp -s 192.168.0.0/24 --icmp-type echo-request -j ACCEPT

        # Outgoing FTP
        #############################################################
        $IPT -A CHECKFWD -i eth0 -o eth1 -p tcp  -s 192.168.0.0/24 --sport 1024: -d 0/0 --dport 21 -j ACCEPT

        # HTTP / HTTPS
        #############################################################
        $IPT -A CHECKFWD -i eth0 -o eth1 -p tcp -s 192.168.0.0/24 --sport 1024: -d 0/0 --dport 80 -j ACCEPT
        $IPT -A CHECKFWD -i eth0 -o eth1 -p tcp -s 192.168.0.0/24 --sport 1024: -d 0/0 --dport 443 -j ACCEPT

        # NTP
        #############################################################
        $IPT -A CHECKFWD -i eth0 -o eth1 -p udp -s 192.168.0.0/24 --sport 123 -d 0/0 --dport 123 -j ACCEPT

        # POP3, POP3/SSL, IMAP4, IMAP4/SSL from LAN
        #############################################################
        $IPT -A CHECKFWD -i eth0 -o eth1 -p tcp  -s 192.168.0.0/24 --sport 1024: -d 0/0 --dport 110 -j ACCEPT
        $IPT -A CHECKFWD -i eth0 -o eth1 -p tcp  -s 192.168.0.0/24 --sport 1024: -d 0/0 --dport 995 -j ACCEPT
        $IPT -A CHECKFWD -i eth0 -o eth1 -p tcp  -s 192.168.0.0/24 --sport 1024: -d 0/0 --dport 143 -j ACCEPT
        $IPT -A CHECKFWD -i eth0 -o eth1 -p tcp  -s 192.168.0.0/24 --sport 1024: -d 0/0 --dport 993 -j ACCEPT

        # ICQ / Jabber from LAN
        #############################################################
        $IPT -A CHECKFWD -i eth0 -o eth1 -p tcp -s 192.168.0.0/24 --sport 1024: -d 0/0 --dport 5190 -j ACCEPT
        $IPT -A CHECKFWD -i eth0 -o eth1 -p tcp -s 192.168.0.0/24 --sport 1024: -d 0/0 --dport 5222 -j ACCEPT
        $IPT -A CHECKFWD -i eth0 -o eth1 -p tcp -s 192.168.0.0/24 --sport 1024: -d 0/0 --dport 5223 -j ACCEPT

        # SILC and IRC from LAN
        #############################################################
        $IPT -A CHECKFWD -i eth0 -o eth1 -p tcp -s 192.168.0.0/24 --sport 1024: -d 0/0 --dport 706 -j ACCEPT
        $IPT -A CHECKFWD -i eth0 -o eth1 -p tcp -s 192.168.0.0/24 --sport 1024: -d 0/0 --dport 6668 -j ACCEPT


        # Drop rest
        #############################################################
        $IPT -A CHECKFWD -s 0/0 -j DROP

        echo "Done."
        ;;
  stop)
  
echo -n "Deactivating Firewall "
        # Flush rules
        #############################################################
        $IPT -F
        $IPT -X
        $IPT -Z

        $IPT -t nat -F
        $IPT -t nat -X
        $IPT -t nat -Z

        # Set Default Policies
        #############################################################
        $IPT -P INPUT   ACCEPT
        $IPT -P FORWARD ACCEPT
        $IPT -P OUTPUT  ACCEPT


        echo "Done."
        ;;

restart)
        $0 stop
        echo '0' > /proc/sys/net/ipv4/ip_forward
        $0 start
        ;;
  *)
        echo "Usage: /etc/init.d/firewall {start|stop|restart|}"
        exit 1
        ;;
esac

exit 0

Denon AVR-X2800H, Quadral Amun Mk.III, Technics SL-7, DIY PhonoPre, AT-152LP / 4.225kW Heckert Solar / SMA 3.0-1AV-41 / Kia e-Niro 64kWh First Edition


  • BoAC
  • Registratie: Februari 2003
  • Laatst online: 20:41

BoAC

Memento mori

Heb je al alleen de masquerading en ip_forward aanzetten uitgeprobeerd?

  • grep
  • Registratie: Augustus 2001
  • Laatst online: 30-01 13:52

grep

meer begrep...

Lijkt me eerlijk gezegd onwaarschijnlijk dat het aan iptables ligt. Denk eerder aan verkeerd geconfigureerde netwerk kaarten (full/half duplex) of een andersoortig netwerk probleem tussen je kabelmodem en uiteindelijk je pc.

  • cool_zero
  • Registratie: Juni 2001
  • Laatst online: 25-10-2022
En het volgende stukje doet volgens mij niets, dus dat lijkt me niet helemaal de bedoeling
code:
1
2
3
4
5
6
7
8
# Drop suspicious packets
#############################################################
$IPT -A CHECKIN -p tcp --tcp-flags ALL ALL
$IPT -A CHECKIN -p tcp --tcp-flags ALL FIN,URG,PSH
$IPT -A CHECKIN -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG
$IPT -A CHECKIN -p tcp --tcp-flags SYN,RST SYN,RST
$IPT -A CHECKIN -p tcp --tcp-flags SYN,FIN SYN,FIN
$IPT -A CHECKIN -p tcp --tcp-flags ALL NONE

  • strandbal
  • Registratie: Juli 2003
  • Nu online

strandbal

Was het maar zo'n feest.

Ik heb hier een aantal RTL8029 kaartjes (Ook wat winbond variantjes, zijn gewoon klonen) die hetzelfde gedrag vertonen, met die kaartjes haal ik 40kb/sec, terwijl ik met de RTL8029 die nu in m'n server op precies dezelfde plek zit wel gewoon 150kb/sec trek. Sluit een hardwareprobleem met de kaartjes dus niet uit :)

Hier stond een dode link.


  • Wirehead
  • Registratie: December 2000
  • Laatst online: 22-11-2025
Ik denk dat het inderdaad die 10Mbit NIC is. Maandag haal ik een 100Mbit Realtek'je en dan zal het wel opgelost zijn. Met het script is ook niets mis, en hebt het stuk die niets doet gewist.

Nogmaals bedankt :)

Denon AVR-X2800H, Quadral Amun Mk.III, Technics SL-7, DIY PhonoPre, AT-152LP / 4.225kW Heckert Solar / SMA 3.0-1AV-41 / Kia e-Niro 64kWh First Edition


Verwijderd

Het is nog maar de vraag of dat stukje niks doet. Met die regels kan je ongeldige Tcp besturings combinaties blokkeren.

Deze rules worden ook aangegeven in het bekende boek Linux Firewalls.

Ik weet niet precies hoe de TCP/IP stack van Linux hiermee omgaat, zover gaat mijn TCP/IP kennis niet. Maar ik kan me voorstellen dat je firewall zonder deze regels allemaal TCP reset pakketen naar de afzender stuurt om de verbinding op te heffen. In combinatie met spoofing is dit dan een krachtig wapen voor het uitvoeren van een DOS attack. Met deze regels kan je dan zo'n aanval voorkomen.

Theo de Raadt heeft hier ooit op kerneltrap een artikel over geschreven.

Maar goed ik weet dit dus niet zeker. Ik heb ze in iedergeval wel in mijn iptables script staan.

Misschien dat iemand met meer Linux TCP/IP kennis hier zijn licht over kan laten schijnen.

  • twiekert
  • Registratie: Februari 2001
  • Laatst online: 11:46
Verwijderd schreef op zaterdag 16 april 2005 @ 22:04:
Het is nog maar de vraag of dat stukje niks doet. Met die regels kan je ongeldige Tcp besturings combinaties blokkeren.
moet er dan geen target ( -j ) bij ? je zal toch aan moeten geven wat je met de pakketjes wil doen, ACCEPT, DROP of DENY

  • Wirehead
  • Registratie: December 2000
  • Laatst online: 22-11-2025
yup, moet inderdaad -j DROP bij. thnx :)

Denon AVR-X2800H, Quadral Amun Mk.III, Technics SL-7, DIY PhonoPre, AT-152LP / 4.225kW Heckert Solar / SMA 3.0-1AV-41 / Kia e-Niro 64kWh First Edition

Pagina: 1