Anzeige:
Ergebnis 1 bis 4 von 4

Thema: iptables Firewall/Router für zweites Subnetz öffnen

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Registrierter Benutzer
    Registriert seit
    Nov 2002
    Beiträge
    21

    iptables Firewall/Router für zweites Subnetz öffnen

    Hi an Alle,

    ich habe schon vor einiger Zeit nach einem "alten" How-To eine iptables Firewall in Verbindung mit DSL als Routing-Lösung bei mir installiert. Das Script funktioniert soweit auch sehr gut. Ich kann Verbindungen von Außen direkt für den Server oder für Clients im Netzwerk freischalten - sprich direkten INPUT oder FORWARD nutzen.
    Der Linux Server fungiert also mit iptables und ppp0 als Router bzw. Standardgateway in meinem LAN.

    Da ich nun aber einen zweiten Standort in meine Überlegungen mit einbeziehen muss, habe ich mich näher mit VPNs befasst und bin bei OpenVPN hängengeblieben. Das funktioniert zwischen zwei unabhängigen Windows Rechnern schon sehr gut - würde es am Routing bzw. an der Firewall nicht scheitern, würde es wahrscheinlich auch schon mit dem Linux Server funktionieren.

    Mein Problem ist nun folgendes: Mein Firewall Script scheint nur das eine lokale Subnetz (192.168.0.0) mit einzubeziehen. Anfragen aus anderen lokalen Subnetzen oder in andere lokale Subnetze scheinen nicht akzeptiert zu werden.

    Mit welchen Regeln könnte ich es bewerkstelligen, dass der Linux Server unbehelligt seinem Dienst als Router nachgehen kann?
    Sprich, dass er Pakete die aus Subnetz 192.168.0.0 auf Schnittstelle eth1 kommen auf der Schnittstelle tun0 mit dem Subnetz 10.0.0.0 verarbeiten kann bzw. diese forwarden kann.

    Ich hoffe mein Problem ist klar geworden.

    Für das bessere Verständnis hänge ich auch noch das Firewall-Script an:
    Code:
    #!/bin/sh
    
    IPTABLES=/sbin/iptables
    
    LSMOD=/sbin/lsmod
    DEPMOD=/sbin/depmod
    MODPROBE=/sbin/modprobe
    GREP=/bin/grep
    AWK=/bin/awk
    SED=/bin/sed
    IFCONFIG=/sbin/ifconfig
    
    EXTIF="ppp0"
    INTIF="eth1"
    
    #  The following line will determine your external IP address.  This
    #  line is somewhat complex and confusing but it will also work for
    #  all NON-English Linux distributions:
    #
    EXTIP="`$IFCONFIG $EXTIF | $AWK \
     /$EXTIF/'{next}//{split($0,a,":");split(a[2],a," ");print a[1];exit}'`"
    
    # Assign the internal TCP/IP network and IP address
    INTNET="192.168.0.255/24"
    INTIP="192.168.0.2/24"
    
    # Setting a few other local variables
    #
    UNIVERSE="0.0.0.0/0"
    
    $DEPMOD -a
    
    if [ -z "` $LSMOD | $GREP ip_tables | $AWK {'print $1'} `" ]; then
       $MODPROBE ip_tables
    fi
    
    if [ -z "` $LSMOD | $GREP ip_conntrack | $AWK {'print $1'} `" ]; then
       $MODPROBE ip_conntrack
    fi
    
    if [ -z "` $LSMOD | $GREP ip_conntrack_ftp | $AWK {'print $1'} `" ]; then
       $MODPROBE ip_conntrack_ftp
    fi
    
    if [ -z "` $LSMOD | $GREP ip_conntrack_irc | $AWK {'print $1'} `" ]; then
       $MODPROBE ip_conntrack_irc
    fi
    
    if [ -z "` $LSMOD | $GREP iptable_nat | $AWK {'print $1'} `" ]; then
       $MODPROBE iptable_nat
    fi
    
    if [ -z "` $LSMOD | $GREP ip_nat_ftp | $AWK {'print $1'} `" ]; then
       $MODPROBE ip_nat_ftp
    fi
    
    echo "1" > /proc/sys/net/ipv4/ip_forward
    
    echo "1" > /proc/sys/net/ipv4/ip_dynaddr
    
    
    #Clearing any previous configuration
    $IPTABLES -P INPUT DROP
    $IPTABLES -F INPUT 
    $IPTABLES -P OUTPUT DROP
    $IPTABLES -F OUTPUT 
    $IPTABLES -P FORWARD DROP
    $IPTABLES -F FORWARD 
    $IPTABLES -F -t nat
    
    #Not needed and it will only load the unneeded kernel module
    #$IPTABLES -F -t mangle
    #
    # Flush the user chain.. if it exists
    if [ -n "`$IPTABLES -L | $GREP drop-and-log-it`" ]; then
       $IPTABLES -F drop-and-log-it
    fi
    
    # Delete all User-specified chains
    $IPTABLES -X
    
    # Reset all IPTABLES counters
    $IPTABLES -Z
    
    #Configuring specific CHAINS for later use in the ruleset
    echo "  Creating a DROP chain.."
    $IPTABLES -N drop-and-log-it
    $IPTABLES -A drop-and-log-it -j LOG --log-level info 
    $IPTABLES -A drop-and-log-it -j REJECT
    
    echo -e "\n   - Loading INPUT rulesets"
    
    $IPTABLES -t filter -P INPUT       ACCEPT
    $IPTABLES -t filter -P FORWARD     ACCEPT
    $IPTABLES -t filter -P OUTPUT      ACCEPT
    $IPTABLES -t nat    -P PREROUTING  ACCEPT
    $IPTABLES -t nat    -P POSTROUTING ACCEPT
    
    
    #######################################################################
    # INPUT: Incoming traffic from various interfaces.  All rulesets are 
    #        already flushed and set to a default policy of DROP. 
    #
    
    # loopback interfaces are valid.
    #
    $IPTABLES -A INPUT -i lo -s $UNIVERSE -d $UNIVERSE -j ACCEPT
    
    
    # local interface, local machines, going anywhere is valid
    #
    $IPTABLES -A INPUT -i $INTIF -s $INTNET -d $UNIVERSE -j ACCEPT
    
    
    # remote interface, claiming to be local machines, IP spoofing, get lost
    #
    $IPTABLES -A INPUT -i $EXTIF -s $INTNET -d $UNIVERSE -j drop-and-log-it
    
    
    # external interface, from any source, for ICMP traffic is valid
    #
    #  If you would like your machine to "ping" from the Internet, 
    #  enable this next line
    #
    #$IPTABLES -A INPUT -i $EXTIF -p ICMP -s $UNIVERSE -d $EXTIP -j ACCEPT
    
    
    # remote interface, any source, going to permanent PPP address is valid
    #
    #$IPTABLES -A INPUT -i $EXTIF -s $UNIVERSE -d $EXTIP -j ACCEPT
    
    
    # Allow any related traffic coming back to the MASQ server in
    #
    $IPTABLES -A INPUT -i $EXTIF -s $UNIVERSE -d $EXTIP -m state --state \
     ESTABLISHED,RELATED -j ACCEPT
    
    
    # ----- Begin OPTIONAL INPUT Section -----
    
    ## hier steht eigentlich noch viel mehr
    $IPTABLES -A INPUT -i $EXTIF -m state --state NEW,ESTABLISHED,RELATED -p tcp -s 0.0.0.0/0 -d $EXTIP --dport 21 -j ACCEPT
    
    # Catch all rule, all other incoming is denied and logged. 
    #
    $IPTABLES -A INPUT -s $UNIVERSE -d $UNIVERSE -j drop-and-log-it
    
    
    #######################################################################
    # OUTPUT: Outgoing traffic from various interfaces.  All rulesets are 
    #         already flushed and set to a default policy of DROP. 
    #
    
    # loopback interface is valid.
    #
    $IPTABLES -A OUTPUT -o lo -s $UNIVERSE -d $UNIVERSE -j ACCEPT
    
    # local interfaces, any source going to local net is valid
    #
    $IPTABLES -A OUTPUT -o $INTIF -s $EXTIP -d $INTNET -j ACCEPT
    
    # local interface, any source going to local net is valid
    #
    $IPTABLES -A OUTPUT -o $INTIF -s $INTIP -d $INTNET -j ACCEPT
    
    # outgoing to local net on remote interface, stuffed routing, deny
    #
    $IPTABLES -A OUTPUT -o $EXTIF -s $UNIVERSE -d $INTNET -j drop-and-log-it
    
    # anything else outgoing on remote interface is valid
    #
    $IPTABLES -A OUTPUT -o $EXTIF -s $EXTIP -d $UNIVERSE -j ACCEPT
    
    # Catch all rule, all other outgoing is denied and logged. 
    #
    $IPTABLES -A OUTPUT -s $UNIVERSE -d $UNIVERSE -j drop-and-log-it
    
    
    echo -e "   - Loading FORWARD rulesets"
    
    ### Beispiel
    $IPTABLES -A FORWARD -i $EXTIF -o $INTIF -p tcp --dport 25 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
    $IPTABLES -A PREROUTING -t nat -i ppp0 -p tcp --dport 25 -j DNAT --to-destination 192.168.0.11:25
    $IPTABLES -A FORWARD -t filter -i ppp0 -s 0/0 -p tcp --dport 25 -j ACCEPT
    
    echo "     - FWD: Allow all connections OUT and only existing/related IN"
    $IPTABLES -A FORWARD -i $EXTIF -o $INTIF -m state --state ESTABLISHED,RELATED \
     -j ACCEPT
    $IPTABLES -A FORWARD -i $INTIF -o $EXTIF -j ACCEPT
    
    # Catch all rule, all other forwarding is denied and logged. 
    #
    $IPTABLES -A FORWARD -j drop-and-log-it
    
    echo "     - NAT: Enabling SNAT (MASQUERADE) functionality on $EXTIF"
    #
    #More liberal form
    #$IPTABLES -t nat -A POSTROUTING -o $EXTIF -j MASQUERADE
    #
    #Stricter form
    $IPTABLES -t nat -A POSTROUTING -o $EXTIF -j SNAT --to $EXTIP

    Freue mich über jeden Tipp - das Thema iptables erschlägt mich einfach ...


    Grüße,

    Yannick

  2. #2
    Freidenker Avatar von suck
    Registriert seit
    Nov 2004
    Ort
    Abgrund + 1 Schritt
    Beiträge
    2.433
    Mein Problem ist nun folgendes: Mein Firewall Script scheint nur das
    eine lokale Subnetz (192.168.0.0) mit einzubeziehen. Anfragen aus
    anderen lokalen Subnetzen oder in andere lokale Subnetze scheinen nicht
    akzeptiert zu werden.
    Die anderen Subnetze müssen ebenfalls zu $INTNET gehören. Derzeit ist $INTNET sinngemäss als 192.169.0.??? definiert.
    Code:
    # Assign the internal TCP/IP network and IP address
    INTNET="192.168.0.255/24"
    INTIP="192.168.0.2/24"
    Wenn Du "/24" durch "/16" ersetzt, werden alle Netze mit 192.168.???.??? akzeptiert..
    Geändert von suck (06.10.06 um 02:49 Uhr)
    int main(){while(alive()){tik();tak();}return 0;}

  3. #3
    Registrierter Benutzer
    Registriert seit
    Nov 2002
    Beiträge
    21
    Hi,

    sehr geil, danke, das bringt mich schon mal ein sehr gutes Stück weiter!
    Damit kann ich nun von einem Client aus Subnetz 1 den Gateway des Subnetz 2 anpingen - sprich das Paket wird auf dem Linux Server intern schon an die zweite Schnittstelle geroutet - das ging vorher nicht.

    Allerdings komme ich nicht über den Gateway des anderen Subnetzes hinaus. Wahrscheinlich fehlt da noch eine Output Regel für die IP-Adresse des zweiten Gateway-Anschlusses?

    Jemand noch eine Idee?

    Habe jetzt folgende Anpassung vorgenommen:
    INTNET="192.168.0.255/16"
    INTIP="192.168.0.2/16"

    Die IP-Adresse des Routers im 2. Subnetz ist die 192.168.10.2 (Testweise).


    Grüße,

    Yannick

  4. #4
    Freidenker Avatar von suck
    Registriert seit
    Nov 2004
    Ort
    Abgrund + 1 Schritt
    Beiträge
    2.433
    Ich verstehe den Aufbau deines Netzwerkes noch nicht genau. Es gibt 2 Gateways? Beschreib doch mal an welchen Netzwerkschnittstellen, von welchem Gateway welches Netz dranhängt... ODe rnoch besser: Zeichne ne Skitze
    int main(){while(alive()){tik();tak();}return 0;}

Ähnliche Themen

  1. iptables rules, ,HELP, bitte
    Von MDK-user im Forum Router und Netzaufbau
    Antworten: 8
    Letzter Beitrag: 04.06.06, 11:25
  2. iptables und Microsoft VPN
    Von itomix im Forum Linux als Server
    Antworten: 1
    Letzter Beitrag: 04.01.05, 23:22
  3. [Routing] Fehler im Routing, einstellungen bei Windows
    Von -Sensemann- im Forum Router und Netzaufbau
    Antworten: 7
    Letzter Beitrag: 07.03.04, 17:02
  4. Antworten: 6
    Letzter Beitrag: 15.10.03, 22:38
  5. probleme mit meinen router - iptables
    Von Trikolon im Forum Router und Netzaufbau
    Antworten: 2
    Letzter Beitrag: 11.10.03, 22:55

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •