• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Routing aber wie?

Hallo Leute,

habe probiert routing nach eurer anleitung zu aktivieren. Ich befinde mich in einer Schule und die ganze schule soll von dem server internet bekommen. Alle Rechner bekommen von einem DHCP Server der ebenfalls auf diesem Server eingerichtet ist eine Ip in dem Subnet 192.168.2.x. Das funktioniert auch alles super! Jedoch habe ich nach einer Anleitung von euch routing aktiviert und in der Susefirewall die nötigen einstellungen getroffen. Jedoch funktioniert internet nur auf dem server und nicht auf den clients. Die Rechner können sich alle gegenseitig anpingen internet geht jedoch nicht. Wisst ihr weiter?

MFG
Marco

Danke im Vorraus
 

framp

Moderator
Teammitglied
Marco-Bormann schrieb:
... Jedoch habe ich nach einer Anleitung von euch routing aktiviert und in der Susefirewall die nötigen einstellungen getroffen...
Die Glaskugel gibt leider nicht her WAS Du gemacht hast :roll: Ergo - poste mal WAS hast Du gemacht hast.
 

Black-man

Newbie
Also!

Mal ganz einfach. Ich weiss wie das ist, man ist neu und hat keine Ahnung wie anfangen.

Schritt 1.

Du bist ein Einsteiger und hast so oder so keine Ahnung von Iptables und co.

--->Dann lade dir ein Script herunter.

z.B meins das ich gerade verwende.

Meine Konfiguration:
eth0 Internet
eth1 Lan

Den beiden musst du eine Ip geben, d.h eth1 eine feste. z.B
192.168.1.0
Gateway keines
DNS keiner

eth0 kann mit DHCP konfiguriert sein. (Bei Cabel-Internet)
Wenn du DSL hast musst du anstatt eth0 das betreffende DSL-Gerät angeben. (jeder eth0 Eintrag abändern im Script)

oder gneriere dir dein eigenes:
http://www.harry.homelinux.org/


Code:
#!/bin/bash
#
### BEGIN INIT INFO
# Provides: IP-Paketfilter
# Required-Start: $network $local_fs
# Required-Stop: $local_fs
# Default-Start: 3 5
# Default-Stop: 0 1 2 4 6
# Short-Description: IP-Paketfilter
# Description: IP-Paketfilter Router      
### END INIT INFO
#

case "$1" in
  start)
    echo "Starte IP-Paketfilter"

    # iptables-Modul
    modprobe ip_tables
    # Connection-Tracking-Module
    modprobe ip_conntrack
    # Das Modul ip_conntrack_irc ist erst bei Kerneln >= 2.4.19 verfuegbar
    modprobe ip_conntrack_irc
    modprobe ip_conntrack_ftp

    # Tabelle flushen
    iptables -F
    iptables -t nat -F
    iptables -t mangle -F
    iptables -X
    iptables -t nat -X
    iptables -t mangle -X

    # Default-Policies setzen
    iptables -P INPUT DROP
    iptables -P OUTPUT DROP
    iptables -P FORWARD DROP

    # MY_REJECT-Chain
    iptables -N MY_REJECT

    # MY_REJECT fuellen
    iptables -A MY_REJECT -p tcp -j REJECT --reject-with tcp-reset
    iptables -A MY_REJECT -p udp -j REJECT --reject-with icmp-port-unreachable
    iptables -A MY_REJECT -p icmp -j DROP
    iptables -A MY_REJECT -j REJECT --reject-with icmp-proto-unreachable

    # MY_DROP-Chain
    iptables -N MY_DROP
    iptables -A MY_DROP -j DROP

    # Korrupte Pakete zurueckweisen
    iptables -A INPUT -m state --state INVALID -j DROP
    iptables -A OUTPUT -m state --state INVALID -j DROP
    iptables -A FORWARD -m state --state INVALID -j DROP

    # Stealth Scans etc. DROPpen
    # Keine Flags gesetzt
    iptables -A INPUT -p tcp --tcp-flags ALL NONE -j MY_DROP
    iptables -A FORWARD -p tcp --tcp-flags ALL NONE -j MY_DROP

    # SYN und FIN gesetzt
    iptables -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j MY_DROP
    iptables -A FORWARD -p tcp --tcp-flags SYN,FIN SYN,FIN -j MY_DROP

    # SYN und RST gleichzeitig gesetzt
    iptables -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j MY_DROP
    iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN,RST -j MY_DROP

    # FIN und RST gleichzeitig gesetzt
    iptables -A INPUT -p tcp --tcp-flags FIN,RST FIN,RST -j MY_DROP
    iptables -A FORWARD -p tcp --tcp-flags FIN,RST FIN,RST -j MY_DROP

    # FIN ohne ACK
    iptables -A INPUT -p tcp --tcp-flags ACK,FIN FIN -j MY_DROP
    iptables -A FORWARD -p tcp --tcp-flags ACK,FIN FIN -j MY_DROP

    # PSH ohne ACK
    iptables -A INPUT -p tcp --tcp-flags ACK,PSH PSH -j MY_DROP
    iptables -A FORWARD -p tcp --tcp-flags ACK,PSH PSH -j MY_DROP

    # URG ohne ACK
    iptables -A INPUT -p tcp --tcp-flags ACK,URG URG -j MY_DROP
    iptables -A FORWARD -p tcp --tcp-flags ACK,URG URG -j MY_DROP

    # Hier die Liste mit den nicht zu routenden Ports!
    # iptables -A FORWARD -p tcp --dport 80 -j DROP

    # Loopback-Netzwerk-Kommunikation zulassen
    iptables -A INPUT -i lo -j ACCEPT
    iptables -A OUTPUT -o lo -j ACCEPT

    # Maximum Segment Size (MSS) für das Forwarding an PMTU anpassen
    iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

    # Connection-Tracking aktivieren
    iptables -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
    iptables -A FORWARD -i ! eth0 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
    iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
    iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

    # SSH
    iptables -A INPUT -i eth0 -m state --state NEW -p tcp --dport 22 -j ACCEPT
    iptables -A INPUT -i eth1 -m state --state NEW -p tcp --dport 22 -j ACCEPT

    # ICMP Echo-Request (ping) zulassen und beantworten
    iptables -A INPUT -m state --state NEW -p icmp --icmp-type echo-request -j ACCEPT

    # IP-Adresse des LAN-Interfaces ermitteln
    LAN_IP=$(ifconfig eth1 | head -n 2 | tail -n 1 | cut -d: -f2 | cut -d" " -f 1)

    # NAT fuer HTTP
    # iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 0.0.0.0
    # iptables -A FORWARD -i eth0 -m state --state NEW -p tcp -d 0.0.0.0 --dport 80 -j ACCEPT
    # Benutze Source NAT (SNAT) fuer die aktuelle Verbindung in das LAN
    # iptables -t nat -A POSTROUTING -o eth1 -p tcp --dport 80 -j SNAT --to-source $LAN_IP
    
    # Default-Policies mit REJECT
    iptables -A INPUT -j MY_REJECT
    iptables -A OUTPUT -j MY_REJECT
    iptables -A FORWARD -j MY_REJECT

    # Forwarding/Routing
    echo "Aktiviere IP-Routing"
    echo 1 > /proc/sys/net/ipv4/ip_forward 2> /dev/null

    # Masquerading
    iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

    # SYN-Cookies
    echo 1 > /proc/sys/net/ipv4/tcp_syncookies 2> /dev/null

    # Stop Source-Routing
    for i in /proc/sys/net/ipv4/conf/*; do echo 0 > $i/accept_source_route 2> /dev/null; done

    # Stop Redirecting
    for i in /proc/sys/net/ipv4/conf/*; do echo 0 > $i/accept_redirects 2> /dev/null; done

    # Reverse-Path-Filter
    for i in /proc/sys/net/ipv4/conf/*; do echo 2 > $i/rp_filter 2> /dev/null; done

    # BOOTP-Relaying ausschalten
    for i in /proc/sys/net/ipv4/conf/*; do echo 0 > $i/bootp_relay 2> /dev/null; done

    # Proxy-ARP ausschalten
    for i in /proc/sys/net/ipv4/conf/*; do echo 0 > $i/proxy_arp 2> /dev/null; done

    # Ungültige ICMP-Antworten ignorieren
    echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses 2> /dev/null

    # ICMP Echo-Broadcasts ignorieren
    echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts 2> /dev/null

    # Max. 500/Sekunde (5/Jiffie) senden
    echo 5 > /proc/sys/net/ipv4/icmp_ratelimit

    # Speicherallozierung und -timing für IP-De/-Fragmentierung
    echo 262144 > /proc/sys/net/ipv4/ipfrag_high_thresh
    echo 196608 > /proc/sys/net/ipv4/ipfrag_low_thresh
    echo 30 > /proc/sys/net/ipv4/ipfrag_time

    # TCP-FIN-Timeout zum Schutz vor DoS-Attacken setzen
    echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout

    # Maximal 3 Antworten auf ein TCP-SYN
    echo 3 > /proc/sys/net/ipv4/tcp_retries1

    # TCP-Pakete maximal 15x wiederholen
    echo 15 > /proc/sys/net/ipv4/tcp_retries2

    ;;

  stop)
    echo "Stoppe IP-Paketfilter"
    # Tabelle flushen
    iptables -F
    iptables -t nat -F
    iptables -t mangle -F
    iptables -X
    iptables -t nat -X
    iptables -t mangle -X
    echo "Deaktiviere IP-Routing"
    echo 0 > /proc/sys/net/ipv4/ip_forward

    # Default-Policies setzen
    iptables -P INPUT ACCEPT
    iptables -P OUTPUT ACCEPT
    iptables -P FORWARD ACCEPT
    ;;

  status)
    echo "Tabelle filter"
    iptables -L -vn
    echo "Tabelle nat"
    iptables -t nat -L -vn
    echo "Tabelle mangle"
    iptables -t mangle -L -vn
    ;;

  *)
    echo "Fehlerhafter Aufruf"
    echo "Syntax: $0 {start|stop|status}"
    exit 1
    ;;

esac

Schritt 2.

Passe das Script an. Hier z.B die Ports die nicht geroutet werden, d.h die nicht weitergeleitet werden. Kann beliebig verändert werden.

Der # bedeutet: Wird auskommentiert, d.h so geht es nicht.

# Hier die Liste mit den nicht zu routenden Ports!
# iptables -A FORWARD -p tcp --dport 80 -j DROP

Nun die Ports, die auf dem Linux Rechner geöffnet sind. Bei mir sind jetzt Verbindungen aus dem Netz und Verbindungen vom Netzwerk aus offen. Wenn du ein Http-Server laufen lassen willst, dann musst du --dport 80 angeben. (Zeile kopieren und verändern.)

# SSH
iptables -A INPUT -i eth0 -m state --state NEW -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -i eth1 -m state --state NEW -p tcp --dport 22 -j ACCEPT

Schritt 3.

Die Installation ist ganz einfach.

!Besondere Hinweise fuer Nutzer des LSB-konformen Startskript-INIT-Headers!

Fuehren Sie die folgenden Kommandos aus, nachdem das Skript "firewall" nach /etc/init.d kopiert wurde:
chmod 755 /etc/init.d/firewall
cd /usr/sbin
ln -s ../../etc/init.d/firewall rcfirewall
chkconfig -a firewall
rcfirewall start

Das Skript kann unter SUSE Linux nun auch ueber den Runlevel-Editor im YaST2 gesteuert werden.

und der Router funktionierz. Er kann nun jederzeit mit "rcfirewall start" gestartet werden.

So ich hoffe ich konnte helfen.

Greez Black-man
 
Oben