Habedieehreoidewuaschdhaud! Am Montag 27 August 2001 23:29 schrieb Andreas Koenecke:
Wegen der der unterschiedlichen MTU des ppp-Interfaces ppp0 des Routers und der Ethernet-Interfaces ethX der Clients und sonstiger, noch nicht geklärter Probleme, muss für ein funktionierendes Routing/Masquerading "getrickst" werden:
Hab' ich soweit verstanden. O.K. Klar.
Entweder muss auf den Clients die MTU der Netzwerk-Interfaces an die MTU des ppp-Interfaces (1492) angepasst werden *oder* auf dem Router wird "MSS-Clamping" gemacht.
Das einfachste wird IMHO wohl sein, den clients die kleinere MTU beizubringen, oder? Gibt es da unterschiede zwischen den WINxx- und den Linux-Clients bei der config?
Zum MSS-Clamping gibt es je nach PPPoE- und Kernel-Version verschiedene Möglichkeiten.
Verwende kernel 2.4.4 ("Eigenbau") da sonst mein USB-scanner nicht so will, wie ich ...
O.K. also nochmals ganz von vorne: [ Beste ASCII-Grafik des Jahres ;-) ]
Das hat ja auch ein wenig gedauert! ;-) Aber ich denke mal ein Bild sagt mehr als 1.000 Worte, zumal tu' ich mir dann auch leichter, wenn ich 'was erklären soll ... :-)
Eine Default-Route brauchst (darfst?) du auf dem Router nicht (zu) setzen. Das macht der pppd nach dem Verbindunsaufbau besser "automatisch"...
O.K. Hab' ich entfernt und klappt auch soweit ganz gut.
Bis auf die Default-Route auf dem Router sieht das für mich bestens aus.
Ist alles auch wunderbar eingetragen. So und nun zu Schritt zwei. Ich mache folgendes: 1. Ich beende die die T-DSL-Verbindung mittels adsl-stop, der Sicherheit wegen. 2. Ich beende meinen firewall.-script indem ich einfach alle Verbindungen wieder zulasse. 3. Ich starte einen client (WIN98) und schwups kann ich auf die SAMBA shared Verzeichnisse zugreifen. Internet ginge auch aber natürlich nicht jetzt gerade, weil ja adsl-stop noch "aktiv" ist. UND DANN. :-( 4. Ich starte meinen neuen firewall-script "gateway" und der schlägt entsprechend durch. Sprich dann geht gar nix mehr. Ich kann z.B. nicht t-lobgline anpingen, dader zugehörige Name nicht aufgelöst wird. Ich gehe mal davon aus, daß die Probleme, die ich mir selbst gebaut hab' nicht an der Netzwerkkonfiguration an sich liegen, sondern viel mehr an meinem firewall-script. Ich hab' das "corpus-delicti" hier mal abgedruckt. Sorry, wenn die Nachricht dadurch etwas groesser wird, aber ich denke, sonst ist die Unterstützung nur sehr schwierig machbar, oder? Also: #!/bin/tcsh # ========================================================= # Firewall-Skript fuer gatewayrechner im heimischen # Netzwerk bei Michael Nausch's server # --------------------------------------------------------- # Erste Version (V1.1) der Firewall # erste Gehversuche am 17.07.01 # zweiter Anlauf (V1.2) am 02.08.01 (Buch Seite 236 ff.) # - EXT device gaendert # dritter Anlauf (V1.3) am 05.08.01 # - modul ip_contrack_ftp.o geladen # vierte Version (V1.4) vom 19.08.01 # - for each - Schleife fuer die Mailserver eingetragen # ---------------------------------------------------------- # Neue Version (V2.0) der Firewall # erste Gehversuche am 19.08.01 # - Migration von "surfer" nach "gateway" # groesstenteils Uebernahme der Vorgaben aus dem Buch # Seite 246 ff. # echo "setting firewall rules for gateway (fw-mna)" # # ========================================================== # PART I: Variablen # ========================================================== set IPTABLES = /usr/sbin/iptables # ---------------------------------------------------------- # special ports set p_high = 1024:65535 # unprivileged ports set p_ssh = 1000:1023 # common ssh source ports # ---------------------------------------------------------- # interfaces set EXT = ppp0 set INT = eth1 set IF = ( $EXT $INT ) # ---------------------------------------------------------- # ip hosts set NS = ( 212.185.252.201 194.25.2.129 ) # t-longline NS set MS = ( 195.20.224.208 195.20.224.209 195.20.224.219 195.20.224.220 195.20.224.204 212.227.126.134 212.227.126.130 212.227.126.138 212.227.126.142 ) # POP3 und SMTP # Server bei # puretec.de set loghost = 192.168.10.10 # Syslog-client set INTERN = 192.168.10.0/255.255.255.0 # heimisches # Netzwerk # ========================================================== # PART II: Grundkonfiguration: absichern # ========================================================== # Kernel Module laden # ip_contrack_ftp depmod -a modprobe ip_conntrack_ftp modprobe ip_nat_ftp modprobe ip_conntrack modprobe ipt_MASQUERADE # dynamische Kernelparameter setzen echo "0" > /proc/sys/net/ipv4/ip_forward echo "1" > /proc/sys/net/ipv4/tcp_syncookies echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts echo "1" > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses echo "5" > /proc/sys/net/ipv4/icmp_destunreach_rate echo "5" > /proc/sys/net/ipv4/icmp_echoreply_rate echo "5" > /proc/sys/net/ipv4/icmp_paramprob_rate echo "10" > /proc/sys/net/ipv4/icmp_timeexceed_rate foreach if ($IF) echo "1" > /proc/sys/net/ipv4/conf/$if/rp_filter echo "0" > /proc/sys/net/ipv4/conf/$if/accept_redirects echo "0" > /proc/sys/net/ipv4/conf/$if/accept_source_route echo "0" > /proc/sys/net/ipv4/conf/$if/bootp_relay echo "1" > /proc/sys/net/ipv4/conf/$if/log_martians end # ---------------------------------------------------------- # Default Policy und flush $IPTABLES -P INPUT DROP $IPTABLES -P FORWARD DROP $IPTABLES -P OUTPUT DROP $IPTABLES -F # flush aller chains (Tabelle filter) $IPTABLES -t nat -F # flush aller chains (Tabelle nat) $IPTABLES -X # delete all userdefined chains # (Tabelle filter) # ---------------------------------------------------------- # lokale Prozesse $IPTABLES -A OUTPUT -o lo -j ACCEPT $IPTABLES -A INPUT -i lo -j ACCEPT # ========================================================== # PART III: endgueltige Filterregeln # ========================================================== # ---------------------------------------------------------- # ssh fuer Fernwartung # wird derzeit nicht benoetigt, unter Umstaenden spaeter # einfuegen # ---------------------------------------------------------- # DROP & LOG Chain $IPTABLES -N my_drop $IPTABLES -A my_drop -p ICMP -j LOG --log-prefix "DROP-ICMP " $IPTABLES -A my_drop -p UDP -j LOG --log-prefix "DROP-UDP " $IPTABLES -A my_drop -p TCP -j LOG --log-prefix "DROP-TCP " $IPTABLES -A my_drop -j DROP # ========================================================== # PART IV: Masquerading, generell bestehende Verbindungen # ========================================================== # ---------------------------------------------------------- # MASQUERADING $IPTABLES -t nat -A POSTROUTING -o $EXT -j MASQUERADE echo "1" > /proc/sys/net/ipv4/ip_forward # wieder einschalten echo "1" > /proc/sys/net/ipv4/ip_dynaddr # ---------------------------------------------------------- # ausgehende Pakete bei bereits aufgebauter Verbindungen $IPTABLES -A OUTPUT \ -m state --state ESTABLISHED,RELATED -j ACCEPT $IPTABLES -A FORWARD -i $INT -o $EXT \ -m state --state ESTABLISHED,RELATED -j ACCEPT # ---------------------------------------------------------- # Rueckkanal: eingehende Pakete zu einer bestehenden Verbindung $IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED \ -j ACCEPT $IPTABLES -A INPUT -m state --state NEW,INVALID -j my_drop $IPTABLES -A FORWARD -i $EXT -o $INT \ -m state --state ESTABLISHED,RELATED -j ACCEPT $IPTABLES -A FORWARD -i $EXT -o $INT \ -m state --state NEW,INVALID -j my_drop # ========================================================== # PART V: Filterregeln fuer lokale Dienste # ========================================================== # ---------------------------------------------------------- # ICMP # ping: 8 und 0, ausgehend $IPTABLES -A OUTPUT -p ICMP --icmp-type echo-request -j ACCEPT # ---------------------------------------------------------- # SYSLOG # wird vorerst nicht verwendet # ========================================================== # PART VI: Filterregeln fuer Forwarding # ========================================================== # ---------------------------------------------------------- # ICMP $IPTABLES -A FORWARD -o $EXT \ -p ICMP --icmp-type echo-reply -j ACCEPT # $IPTABLES -A INPUT -p ICMP --icmp-type echo-request -j my_drop # # source squench (4) # # $IPTABLES -A FORWARD -o $EXT -p ICMP --icmp-type source-quench -j ACCEPT # $IPTABLES -A INPUT -p ICMP --icmp-type source-quench -j my_drop # # time exceeded (11) unkritisch, daher freigeschaltet # # $IPTABLES -A FORWARD -o $EXT -p ICMP --icmp-type time-exceeded -j ACCEPT # $IPTABLES -A INPUT -p ICMP --icmp-type time-exceeded -j ACCEPT # # parameter problem (12) unkritisch, daher freigeschaltet # # $IPTABLES -A FORWARD -o $EXT -p ICMP --icmp-type parameter-problem -j ACCEPT # $IPTABLES -A INPUT -p ICMP --icmp-type parameter-problem -j ACCEPT # # destination unreachable (3) # # $IPTABLES -A FORWARD -o $EXT -p ICMP --icmp-type fragmentation-needed -j ACCEPT # # $IPTABLES -A INPUT -p ICMP --icmp-type fragmentation-needed -j ACCEPT # $IPTABLES -A INPUT -p ICMP --icmp-type destination-unreachable -j ACCEPT # # ---------------------------------------------------------- # DNS foreach ns ( $NS ) $IPTABLES -A FORWARD -o $EXT -m state --state NEW \ -p UDP --sport $p_high -d $ns --dport domain \ -j ACCEPT $IPTABLES -A FORWARD -o $EXT -m state --state NEW \ -p TCP --sport $p_high -d $ns --dport domain \ -j ACCEPT end # ---------------------------------------------------------- # SMTP, POP3 foreach ms ( $MS ) $IPTABLES -A FORWARD -o $EXT -m state --state NEW \ -p TCP --sport $p_high -d $ms --dport smtp \ -j ACCEPT $IPTABLES -A FORWARD -o $EXT -m state --state NEW \ -p TCP --sport $p_high -d $ms --dport pop3 \ -j ACCEPT end # ---------------------------------------------------------- # HTTP $IPTABLES -A FORWARD -o $EXT -m state --state NEW \ -p TCP --sport $p_high --dport http -j ACCEPT # ---------------------------------------------------------- # HTTP via SSL $IPTABLES -A FORWARD -o $EXT -m state --state NEW \ -p TCP --sport $p_high --dport https -j ACCEPT # ---------------------------------------------------------- # ident: reject $IPTABLES -A FORWARD -i $EXT -p TCP --dport auth --syn -j REJECT # ---------------------------------------------------------- # ftp, out, control connection $IPTABLES -A FORWARD -o $EXT -m state --state NEW \ -p TCP --sport $p_high --dport ftp -j ACCEPT # $IPTABLES -A OUTPUT -p TCP --sport $p_high --dport ftp -j ACCEPT # $IPTABLES -A INPUT -p TCP --sport $p_high --dport ftp ! --syn -j ACCEPT # ---------------------------------------------------------- # Ausputzer: Rest sperren, loggen $IPTABLES -A INPUT -j my_drop $IPTABLES -A FORWARD -j my_drop $IPTABLES -A OUTPUT -j REJECT echo "done (firewall rules active!)" Alles klar? Bei mir leider nicht. Bei meinem firewall-script für einen stand-alone Rechner hab'Ä ich alles soweit inhaltlich verstanden und ich bin auch etwas ehrlich, daß ich es geschafft habe, das Ding zum Laufen zu kriegen. D'rum nervt es mich umsomehr, da ich nicht mehr weiter weis, warum das schnöde Ding jetzt nicht funktionieren will. Andreas glaube mir, ich hab, das SuSE-Firewallbuch jetzt schon zum 3ten oder 4ten male durchgelesen und verdaut, aber ich trete scheinbar immer nur auf einer Stelle. :-( Vielleicht hast Du ja den entscheidenden Tip für mich, bitteeeeeeeeeeeeeeeee ;-) Pfiade, BC -- Michael Nausch Anzinger Str. 20 85586 Poing +49-8121-971940 (voice) +49-8121-971941 (fax) http://omni128.de michael@nausch.org