# Gentoo Router basteln

## utang

da mein Netzwerk nun funzt =) möchte ich n Router basteln...

habe n bissel mit Goolge gespielt und mal das wichtigste herraus gefischt ...,

da ich mir unsicher bin wollte ich nochmal sichergehen und Nachfragen ob das alles hinhauen könnte ... 

- würde mich freuen wenn jeamnd noch n paar LINKS hätte gerade mit eufsetzen eines routers mittels Gentoo, vlt. nochwas gutes zu den IPTABLES

also als würde das so machen wollen:

1. 

```
echo "1" > /proc/sys/net/ipv4/ip_forward
```

    (Damit wird das routing aktiviert.)

2. 

```
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
```

    (Aktiviert das masquieren der Datenpackete)

```
iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmt
```

    (Korrigiert den MTU Wert. Auch für die Clients)

```
iptables -A INPUT -i ppp0 -m state --state ESTABLISHED,RELATED -j ACCEPT
```

(Läst nur Pakete durch, die vom Client explizit angefordert wurden.)

In welche datei kann ich das am besten kopieren,dass das beim booten automatisch geladen wird. 

3. 

/etc/resolv.conf 

```
nameserver <IP>  

nameserver <IP> 
```

--> würde dies für einen anfang reichen?

--> verbesserungs Vorschläge/Tipps/Hinweise gerade auch zu IPTables/NAT/Masq sind herzlich willkommen !!

----------

## andreh

 *utang wrote:*   

> In welche datei kann ich das am besten kopieren,dass das beim booten automatisch geladen wird.

 

Schreibe dir ganz einfach ein Script, welches sich in /etc/init.d befindet und meinetwegen firewall heisst. Am besten verfolgst du bei der Erstellung dieses Scripts den Gentoo Linux rc-script Guide. Wenn du dann fertig bist, einfach per

```
# rc-update add firewall default
```

das Script beim booten starten lassen.

Als Hilfe fuer iptables, schau einfach mal auf der netfilter/iptables Seite nach, dort findet man schoene Anleitungen.

best regards, andreh

----------

## tux-fan

Hier ist 'ne Menge zum Thema Router/Firewall zu finden.

http://www.linuxguruz.org/iptables/

P.S. Diese Zeile allein bewirkt garnix, da die default Policy auf ACCEPT steht.

iptables -A INPUT -i ppp0 -m state --state ESTABLISHED,RELATED -j ACCEPT

----------

## utang

danke für die Links!

habe dazu noch ... verwendet.

http://www.netfilter.org/documentation/index.html#HOWTO

habe nun n Firewallscript und möchte gerne das es nochmal begutachtet wird =) bin mir da nicht sicher ab das alles hinhaut.... 

kurze info vom Router....

eth0 = verbindung zum DSL-Modem

eth1 = verbindung zum Netzwerk

mein Firewall-script:

```
#!/bin/sh

  # Schnittstelle zum lokalen Netzwerk

  IFACE_INT=eth0

  # Internetschnittstelle

  IFACE_EXT=ppp0

  # Loopback device

  IFACE_LO=lo

# ++ POLICIES ++

# ++++++++++++

  # Default-Policies setzen - alles fliegt raus

  iptables -P INPUT DROP

  iptables -P FORWARD DROP

  iptables -P OUTPUT DROP

  # Einschalten von ip-Forwarding

  echo "1" > /proc/sys/net/ipv4/ip_forward

# ++ INCOMING ++

# ++++++++++++

  # Soll nicht sein

  iptables -A INPUT -p TCP ! --syn -m state --state NEW -j DROP

  # Vom internen Netz alles erlauben

  iptables -A INPUT -i $IFACE_INT -j ACCEPT

  # Vom Loopback Alles erlauben

  iptables -A INPUT -i $IFACE_LO -j ACCEPT

  # Vom Internet: Darf nicht sein

  iptables -A INPUT -i $IFACE_EXT  -s 10.0.0.0/8 -j DROP

  iptables -A INPUT -i $IFACE_EXT  -s 172.16.0.0/12 -j DROP

  iptables -A INPUT -i $IFACE_EXT  -s 192.168.0.0/24 -j DROP

  # Vom Internet Erlauben von bereits initialisierten Verbindungen

  iptables -A INPUT -i $IFACE_EXT -m state \ --state ESTABLISHED,RELATED -j ACCEPT

# ++ FORWARDING ++

# +++++++++++++++

  # Lokal -> Internet: Alles erlauben

  iptables -A FORWARD -i $IFACE_INT -o $IFACE_EXT -j ACCEPT

  # Internet -> Lokales: Nur Verkehr über bereits bestehende Verbindungen erlauben

  iptables -A FORWARD -i $IFACE_EXT -o $IFACE_INT -m state \

--state ESTABLISHED,RELATED -j ACCEPT

# ++ OUTGOING ++

# +++++++++++++

  # Ins lokale Netzwerk: Alles erlauben

  iptables -A OUTPUT -o $IFACE_INT -j ACCEPT

  # Ans Loopback: Alles erlauben

  iptables -A OUTPUT -o $IFACE_LO -j ACCEPT

  # Ins INternet : Alles erlauben

  iptables -A OUTPUT -o $IFACE_EXT -j ACCEPT

  # Masquerading

  iptables -A POSTROUTING -o $IFACE_EXT -t nat -j MASQUERADE

  # Alles was bis hier kommt, mitprotokollieren

  iptables -A OUTPUT -j LOG --log-prefix "Nicht raus: "

  iptables -A FORWARD -j LOG --log-prefix "Nicht durch: "

  iptables -A INPUT -j LOG --log-prefix "Nicht rein: " 
```

----------

## tzimmer

Ich konnte in deinen Regeln keine Fehler erkennen, bin allerdings auch nicht so geskillt was iptables angeht...   :Very Happy: 

Wollte nur darauf hinweisen, dass man doch unter gentoo das schon vorhandene /etc/init.d/iptables skript nutzen kann. Man muss es mit start initialisieren, dann kloppt man die Befehle der Reihe nach ein... Beim stoppen des Dienstes werden die Regeln automatisch gespeichert und beim nächsten starten wieder geladen.

Ist zwar zum ersten Regeln aufstellen und dranrumspielen etwas kompliziert, aber wenn man es einmal hat, finde ich den Weg sehr elegant...

----------

## silverter

Auf der folgende Seite findest Du ein super gute hilfe zum Aufstellen von firewall rules. Läuft ganz gut für mich und ist einfach an Deiner Wünsche anzupassen: 

http://www.ecst.csuchico.edu/~dranch/LINUX/index-linux.html

Hope this helps:

Ps: Pardon my bad german, trying hard...  :Smile: 

----------

## utang

Frage: kann ich mein komplettes script ohne veränderungen einfach in die /etc/init.d/iptables einfügen?

wird das /etc/init.d/iptables automatisch gestartet oder müsste ich das manuell machen?

----------

## silverter

Wenn Du /etc/init.d/iptables hast, dann kannst Du es automatisch starten indem Du folgendes Komando ausführst: 

```
rc-update add iptables default
```

Correct me if I'm wrong.

regards,

----------

## utang

erstmal danke das du mich unterstütze und mir hilfst !  :Rolling Eyes: 

die /etc/init.d/iptables fehlt mir ... 

FRAGE: ist das eine vom User selber erstellte Datei oder muss ich sie via "emerge iptables" erst ziehen und installieren lassen?

FRAGE2: wenn ich die dann habe könnte ich aber das komplette script wie oben beschrieben hineinschreiben,ohne veränderung?

----------

## andreh

 *utang wrote:*   

> die /etc/init.d/iptables fehlt mir ... 
> 
> FRAGE: ist das eine vom User selber erstellte Datei oder muss ich sie via "emerge iptables" erst ziehen und installieren lassen?
> 
> 

 

Hast du iptables ueberhaupt schon installiert?

```
osiris:~$ qpkg -f /etc/init.d/iptables 

net-firewall/iptables *
```

 *utang wrote:*   

> FRAGE2: wenn ich die dann habe könnte ich aber das komplette script wie oben beschrieben hineinschreiben,ohne veränderung?

 

Koennen kann man viel. Mir waere ein eigenes Script lieber, muss aber nicht heissen, dass du das jetzt lassen sollst.

----------

## hulk2nd

also als linux router kann ich dir nur fli4l empfehlen. den haste ratzfatz konfiguriert und is echt saugeil. is natürlich auch linux! und kann echt alles was ein router können soll. www.fli4l.de passt sogar auf eine diskette, wenn du nicht zig extras willst. aber falls doch kannstes natürlich auch auf ner platte installieren.

grüsse, hulk

----------

## utang

also, ich habe nun mein script versucht nach dem rc-tutorial zuergänzen.

mein script:

```
#!/sbin/firewall

opts="start"

depend() {

        need logger net

}

start() {

    ebegin "Starting Firewall"

  # Schnittstelle zum lokalen Netzwerk

  IFACE_INT=eth0

  # Internetschnittstelle

  IFACE_EXT=ppp0

  # Loopback device

  IFACE_LO=lo

# ++ POLICIES ++

# ++++++++++++

  # Default-Policies setzen - alles fliegt raus

  iptables -P INPUT DROP

  iptables -P FORWARD DROP

  iptables -P OUTPUT DROP

  # Einschalten von ip-Forwarding

  echo "1" > /proc/sys/net/ipv4/ip_forward

# ++ INCOMING ++

# ++++++++++++

  # Soll nicht sein

  iptables -A INPUT -p TCP ! --syn -m state --state NEW -j DROP

  # Vom internen Netz alles erlauben

  iptables -A INPUT -i $IFACE_INT -j ACCEPT

  # Vom Loopback Alles erlauben

  iptables -A INPUT -i $IFACE_LO -j ACCEPT

  # Vom Internet: Darf nicht sein

  iptables -A INPUT -i $IFACE_EXT  -s 10.0.0.0/8 -j DROP

  iptables -A INPUT -i $IFACE_EXT  -s 172.16.0.0/12 -j DROP

  iptables -A INPUT -i $IFACE_EXT  -s 192.168.0.0/24 -j DROP

  # Vom Internet Erlauben von bereits initialisierten Verbindungen

  iptables -A INPUT -i $IFACE_EXT -m state \ --state ESTABLISHED,RELATED -j ACCEPT

# ++ FORWARDING ++

# +++++++++++++++

  # Lokal -> Internet: Alles erlauben

  iptables -A FORWARD -i $IFACE_INT -o $IFACE_EXT -j ACCEPT

  # Internet -> Lokales: Nur Verkehr über bereits bestehende Verbindungen erlauben

  iptables -A FORWARD -i $IFACE_EXT -o $IFACE_INT -m state \

--state ESTABLISHED,RELATED -j ACCEPT

# ++ OUTGOING ++

# +++++++++++++

  # Ins lokale Netzwerk: Alles erlauben

  iptables -A OUTPUT -o $IFACE_INT -j ACCEPT

  # Ans Loopback: Alles erlauben

  iptables -A OUTPUT -o $IFACE_LO -j ACCEPT

  # Ins INternet : Alles erlauben

  iptables -A OUTPUT -o $IFACE_EXT -j ACCEPT

  # Masquerading

  iptables -A POSTROUTING -o $IFACE_EXT -t nat -j MASQUERADE

  # Alles was bis hier kommt, mitprotokollieren

  iptables -A OUTPUT -j LOG --log-prefix "Nicht raus: "

  iptables -A FORWARD -j LOG --log-prefix "Nicht durch: "

  iptables -A INPUT -j LOG --log-prefix "Nicht rein: "

   eend $? "uiui, Probleme beim starten der Firewall"

}
```

--> so dann habe ich es in "/etc/init.d/" kopiert

--> dann habe ich als root "chmod +x /etc/init.d/firewall" es ausführbar gemacht.

--> "rc-update add firewall default" schein auch funktioniert zu haben

```
rc-update add firewall default

 * firewall added to runlevel default...

 * Caching service dependencies...                                                                                           [ ok ]

 * rc-update complete.

```

--> habe dann meine 2 Interfaces via "/etc/init.d/net.ethX restart" #1,2 

neu gestartet aber es scheint noch nicht zu funktionieren... hat wer eine idee?

----------

## Genone

rc-update fügt das Skript nur zum Runlevel hinzu, startet es aber nicht. Da fehlt noch entweder ein Reboot oder ein 

```
/etc/init.d/iptables start
```

----------

## utang

habe ich gemacht und das netzwerk funzt,(der win XP rechner kann meinen router anpingen) allerdings klappt der inet zugriff nicht ... habe auch meinen router als Gateway eingetragen ...

----------

## kopfarzt

Ist zwar ziemlich egal, aber in dieser Regel solltest du 12 gegen 16 tauschen:

```
iptables -A INPUT -i $IFACE_EXT  -s 172.16.0.0/12 -j DROP
```

Welche IP Adressen verwendest Du im internen Netz?

Was steht im Logfile (Du logst ja gut mit)?

Was genau geht nicht? (Was hast Du probiert?).

Welche module sind bei Dir geladen (lsmod)?

Für eine Firewall muß man u.U. auch einige zusätzliche Kernelmodule laden, zb. ip_conntrack usw.

Eigenes /etc/init.d script habe ich mir nicht geschrieben, weil das vorhandene /etc/init.d/iptables eine gegebene iptables situation abspeichern und beim nächsten Boot automatisch wieder anlegen kann, was für meine Zwecke reicht.

kopfarzt

----------

## utang

 *Quote:*   

> Welche IP Adressen verwendest Du im internen Netz?

 

Router (lian):

iface_eth0="192.168.0.0 broadcast 192.168.255.255 netmask 255.255.0.0"

iface_eth1="192.168.99.1 broadcast 192.168.99.255 netmask 255.255.255.0"

WIN_XP_Client_1(celestine):

IP:  192.168.99.2

BR: 192.168.99.255

NM: 255.255.255.0

GW: 192.168.99.1

DNS: <ip>

DNS2: <ip>

/etc/hosts

```
127.0.0.1       localhost

127.0.0.1       localhost.klan.blaaa

192.168.99.1    lian.klan.blaaa lian

192.168.99.2    celestine.klan.blaaa    celestine
```

Router:

ifconfig eth0

```
ifconfig eth0

eth0      Protokoll:Ethernet  Hardware Adresse 00:90:27:5A:44:C2

          inet Adresse:192.168.0.0  Bcast:192.168.255.255  Maske:255.255.0.0

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:349169 errors:0 dropped:0 overruns:0 frame:0

          TX packets:209702 errors:0 dropped:0 overruns:0 carrier:0

          Kollisionen:22 Sendewarteschlangenlänge:100

          RX bytes:468176807 (446.4 Mb)  TX bytes:17746841 (16.9 Mb)

          Interrupt:10 Basisadresse:0xe800 Speicher:d9202000-d9202038
```

ifconfig eth1

```
ifconfig eth1

eth1      Protokoll:Ethernet  Hardware Adresse 00:90:27:84:9E:73

          inet Adresse:192.168.99.1  Bcast:192.168.99.255  Maske:255.255.255.0

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:909 errors:0 dropped:0 overruns:0 frame:0

          TX packets:232 errors:0 dropped:0 overruns:0 carrier:0

          Kollisionen:0 Sendewarteschlangenlänge:100

          RX bytes:84352 (82.3 Kb)  TX bytes:10968 (10.7 Kb)

          Interrupt:11 Basisadresse:0xec00 Speicher:d9201000-d9201038
```

route -n

```
route -n

Kernel IP Routentabelle

Ziel            Router          Genmask         Flags Metric Ref    Use Iface

217.5.98.133    0.0.0.0         255.255.255.255 UH    0      0        0 ppp0

192.168.99.0    0.0.0.0         255.255.255.0   U     0      0        0 eth1

192.168.0.0     0.0.0.0         255.255.0.0     U     0      0        0 eth0

0.0.0.0         217.5.98.133    0.0.0.0         UG    0      0        0 ppp0
```

 *Quote:*   

> Was steht im Logfile (Du logst ja gut mit)?

 

 nein, weil ich nicht genau weiss wie..., und auf dem client läuft WIN_XP

 *Quote:*   

> Was genau geht nicht? (Was hast Du probiert?).

 

auf dem Router geht PING ins INET und ins Netzwerk

[B]ping -c3 www.gentoo.org

```
ping -c3 www.gentoo.org

PING www.gentoo.org (128.193.0.36): 56 octets data

64 octets from 128.193.0.36: icmp_seq=0 ttl=51 time=229.3 ms

64 octets from 128.193.0.36: icmp_seq=1 ttl=51 time=235.5 ms

64 octets from 128.193.0.36: icmp_seq=2 ttl=51 time=232.1 ms

--- www.gentoo.org ping statistics ---

3 packets transmitted, 3 packets received, 0% packet loss

round-trip min/avg/max = 229.3/232.3/235.5 ms
```

ping -c3 celestine

```
ping -c3 celestine

PING celestine.klan.blaaa (192.168.99.2): 56 octets data

64 octets from 192.168.99.2: icmp_seq=0 ttl=128 time=0.6 ms

64 octets from 192.168.99.2: icmp_seq=1 ttl=128 time=0.3 ms

64 octets from 192.168.99.2: icmp_seq=2 ttl=128 time=0.3 ms

--- celestine.klan.blaaa ping statistics ---

3 packets transmitted, 3 packets received, 0% packet loss

round-trip min/avg/max = 0.3/0.4/0.6 ms
```

auf dem XP_client geht der Ping zum Router aber nicht ins INET

 *Quote:*   

> Welche module sind bei Dir geladen (lsmod)?

 

nur das Modul der Netzwerkkarten

lsmod

```
lsmod

Module                  Size  Used by    Not tainted

e100                   59444   2
```

----------

## easy2k

Ich ha be das folgendermaßen angestellt.

Auf dem gentoo Router alle Firewallrules in die schell eingegeben und mit iptables-save abgespeichert. Anschliesend 

rc-update add iptables default

und alles funzte wie es sollte.

Ein lsmod auf dem Router sollte etwa so aussehen

```

gentoo root # lsmod

Module                  Size  Used by    Not tainted

ppp_async               8096   1 

ppp_generic            19132   3  [ppp_async]

slhc                    5392   0  [ppp_generic]

ipt_REJECT              3288   4  (autoclean)

iptable_filter          1740   1  (autoclean)

ipt_MASQUERADE          1464  35  (autoclean)

iptable_nat            18396   1  (autoclean) [ipt_MASQUERADE]

ip_conntrack           24136   1  (autoclean) [ipt_MASQUERADE iptable_nat]

ip_tables              13568   6  [ipt_REJECT iptable_filter ipt_MASQUERADE iptable_nat]

8139too                16776   2 

mii                     2608   0  [8139too]

gentoo root # 

```

----------

## MasterOfMagic

also bei einem router mit ppp oder ippp device hab ich das firewall script immer von ip-up und ip-down starten lassen bzw. in local.start und local.stop aufgerufen. die regeln hab ich einfach in ein shell script reingegeben, dass von den obengenannten scripts gestartet wurde. so bist du bei disconnect immer auf der sicheren seite.

mfg

masterofmagic

----------

## utang

könntest du das etwas detailierter erklären da mit ich das nachmachen kann ... , bin am verzweifeln ... =(

----------

## utang

also nachdem ich die firewall mal gestoppt und die folgenden Zeilen manuell eingegeben habe:

echo "1" > /proc/sys/net/ipv4/ip_forward

iptables -A POSTROUTING -o ppp0 -t nat -j MASQUERADE 

funktionierte das routing und der client kam ins Inet ...

nun möchte ich gerne versuchen mein script in die /etc/init.d/iptables aufzunehmen in der Hoffnung das es dann irgendwie geht, da ich noch nicht soviel erfahrung habe möchte ich gerne wissen ob das script dann so ok und funktionstüchtig wäre ..

/etc/init.d/iptables (unverändert)

```
#!/sbin/runscript

# Copyright 1999-2003 Gentoo Technologies, Inc.

# Distributed under the terms of the GNU General Public License, v2 or

# later

# $Header: /home/cvsroot/gentoo-x86/net-firewall/iptables/files/iptables.init,v 1.1 2003/03/11 21:50:24 mholzer Exp $

opts="start stop save"

depend() {

   need logger net

}

start() {

   ebegin "Loading iptables state and starting firewall"

   # This variable is set in /etc/conf.d/iptables

   if [ ! -f ${IPTABLES_SAVE} ]

   then

      einfo "Not starting iptables. First create some rules then run"

      einfo "/etc/init.d/iptables save"

   else

      einfo "Restoring iptables ruleset"

      /sbin/iptables-restore ${SAVE_RESTORE_OPTIONS} < ${IPTABLES_SAVE}

      if [ "${ENABLE_FORWARDING_IPv4}" = "yes" ] ; then

         einfo "Enabling forwarding for ipv4"

         echo "1" > /proc/sys/net/ipv4/conf/all/forwarding

      fi

      if [ "${ENABLE_FORWARDING_IPv6}" = "yes" ] ; then

         einfo "Enabling forwarding for ipv6"

         echo "1" > /proc/sys/net/ipv6/conf/all/forwarding

               fi

   fi

   eend $?

}

stop() {

   ebegin "Stopping firewall and saving iptables state"

      # This way we don't forget to save changes

      /sbin/iptables-save ${SAVE_RESTORE_OPTIONS} > ${IPTABLES_SAVE}

      # set sane defaults that disable forwarding

      if [ -f /proc/sys/net/ipv4/conf/all/forwarding ] ; then

         echo "0" > /proc/sys/net/ipv4/conf/all/forwarding

      fi

      if [ -f /proc/sys/net/ipv6/conf/all/forwarding ] ; then

         echo "0" > /proc/sys/net/ipv6/conf/all/forwarding

      fi

      for a in `cat /proc/net/ip_tables_names`; do

         iptables -F -t $a

         iptables -X -t $a

         if [ $a == nat ]; then

            iptables -t nat -P PREROUTING ACCEPT

            iptables -t nat -P POSTROUTING ACCEPT

            iptables -t nat -P OUTPUT ACCEPT

         elif [ $a == mangle ]; then

            iptables -t mangle -P PREROUTING ACCEPT

            iptables -t mangle -P INPUT ACCEPT

            iptables -t mangle -P FORWARD ACCEPT

            iptables -t mangle -P OUTPUT ACCEPT

            iptables -t mangle -P POSTROUTING ACCEPT

         elif [ $a == filter ]; then

            iptables -t filter -P INPUT ACCEPT

            iptables -t filter -P FORWARD ACCEPT

            iptables -t filter -P OUTPUT ACCEPT

         fi

      done

   eend $?

}

save() {

        ebegin "Saving iptables state"

        /sbin/iptables-save ${SAVE_RESTORE_OPTIONS} > ${IPTABLES_SAVE}

        eend $?

}

```

/etc/init.d/iptables(modifiziert)

```
#!/sbin/runscript

# Copyright 1999-2003 Gentoo Technologies, Inc.

# Distributed under the terms of the GNU General Public License, v2 or

# later

# $Header: /home/cvsroot/gentoo-x86/net-firewall/iptables/files/iptables.init,v 1.1 2003/03/11 21:50:24 mholzer Exp $

opts="start stop save"

depend() {

   need logger net

}

start() {

   ebegin "Loading iptables state and starting firewall"

   # This variable is set in /etc/conf.d/iptables

   if [ ! -f ${IPTABLES_SAVE} ]

   then

      einfo "Not starting iptables. First create some rules then run"

      einfo "/etc/init.d/iptables save"

   else

      einfo "Restoring iptables ruleset"

      /sbin/iptables-restore ${SAVE_RESTORE_OPTIONS} < ${IPTABLES_SAVE}

      if [ "${ENABLE_FORWARDING_IPv4}" = "yes" ] ; then

         einfo "Enabling forwarding for ipv4"

         echo "1" > /proc/sys/net/ipv4/conf/all/forwarding

# Schnittstelle zum lokalen Netzwerk

  IFACE_INT=eth1

  # Internetschnittstelle

  IFACE_EXT=ppp0

  # Loopback device

  IFACE_LO=lo

# ++ POLICIES ++

# ++++++++++++

  # Default-Policies setzen - alles fliegt raus

  iptables -P INPUT DROP

  iptables -P FORWARD DROP

  iptables -P OUTPUT DROP

# ++ INCOMING ++

# ++++++++++++

  # Soll nicht sein

  iptables -A INPUT -p TCP ! --syn -m state --state NEW -j DROP

  # Vom internen Netz alles erlauben

  iptables -A INPUT -i $IFACE_INT -j ACCEPT

  # Vom Loopback Alles erlauben

  iptables -A INPUT -i $IFACE_LO -j ACCEPT

  # Vom Internet: Darf nicht sein

  iptables -A INPUT -i $IFACE_EXT  -s 10.0.0.0/8 -j DROP

  iptables -A INPUT -i $IFACE_EXT  -s 172.16.0.0/12 -j DROP

  iptables -A INPUT -i $IFACE_EXT  -s 192.168.0.0/24 -j DROP

  # Vom Internet Erlauben von bereits initialisierten Verbindungen

  iptables -A INPUT -i $IFACE_EXT -m state \ --state ESTABLISHED,RELATED -j ACCEPT

# ++ FORWARDING ++

# +++++++++++++++

  # Lokal -> Internet: Alles erlauben

  iptables -A FORWARD -i $IFACE_INT -o $IFACE_EXT -j ACCEPT

  # Internet -> Lokales: Nur Verkehr über bereits bestehende Verbindungen erlauben

  iptables -A FORWARD -i $IFACE_EXT -o $IFACE_INT -m state \

--state ESTABLISHED,RELATED -j ACCEPT

# ++ OUTGOING ++

# +++++++++++++

  # Ins lokale Netzwerk: Alles erlauben

  iptables -A OUTPUT -o $IFACE_INT -j ACCEPT

  # Ans Loopback: Alles erlauben

  iptables -A OUTPUT -o $IFACE_LO -j ACCEPT

  # Ins INternet : Alles erlauben

  iptables -A OUTPUT -o $IFACE_EXT -j ACCEPT

  # Masquerading

  iptables -A POSTROUTING -o $IFACE_EXT -t nat -j MASQUERADE

  # Alles was bis hier kommt, mitprotokollieren

  iptables -A OUTPUT -j LOG --log-prefix "Nicht raus: "

  iptables -A FORWARD -j LOG --log-prefix "Nicht durch: "

  iptables -A INPUT -j LOG --log-prefix "Nicht rein: "

      fi

      if [ "${ENABLE_FORWARDING_IPv6}" = "yes" ] ; then

         einfo "Enabling forwarding for ipv6"

         echo "1" > /proc/sys/net/ipv6/conf/all/forwarding

               fi

   fi

   eend $?

}

stop() {

   ebegin "Stopping firewall and saving iptables state"

      # This way we don't forget to save changes

      /sbin/iptables-save ${SAVE_RESTORE_OPTIONS} > ${IPTABLES_SAVE}

      # set sane defaults that disable forwarding

      if [ -f /proc/sys/net/ipv4/conf/all/forwarding ] ; then

         echo "0" > /proc/sys/net/ipv4/conf/all/forwarding

      fi

      if [ -f /proc/sys/net/ipv6/conf/all/forwarding ] ; then

         echo "0" > /proc/sys/net/ipv6/conf/all/forwarding

      fi

      for a in `cat /proc/net/ip_tables_names`; do

         iptables -F -t $a

         iptables -X -t $a

         if [ $a == nat ]; then

            iptables -t nat -P PREROUTING ACCEPT

            iptables -t nat -P POSTROUTING ACCEPT

            iptables -t nat -P OUTPUT ACCEPT

         elif [ $a == mangle ]; then

            iptables -t mangle -P PREROUTING ACCEPT

            iptables -t mangle -P INPUT ACCEPT

            iptables -t mangle -P FORWARD ACCEPT

            iptables -t mangle -P OUTPUT ACCEPT

            iptables -t mangle -P POSTROUTING ACCEPT

         elif [ $a == filter ]; then

            iptables -t filter -P INPUT ACCEPT

            iptables -t filter -P FORWARD ACCEPT

            iptables -t filter -P OUTPUT ACCEPT

         fi

      done

   eend $? "uiui, Probleme beim starten der Firewall"

}

save() {

        ebegin "Saving iptables state"

        /sbin/iptables-save ${SAVE_RESTORE_OPTIONS} > ${IPTABLES_SAVE}

        eend $?

}
```

Wäre es so akzeptabel?   :Embarassed: 

----------

## MasterOfMagic

ehm ja sieht okay aus, das skript kannst du ja noch verfeinern. aber bitte warum ist dein internes interfache INT eth1? du hast da mehrere netzwerkkarten im rechner oder wie ist das zu verstehen? alle interfaces beginnen bei 0 also wäre dieses dann wohl eth0 oder war das nur ein tippfehler?

mfg

masterofmagic

----------

## andreh

Schon einmal dran gedacht, dass er sein Modem an eth0 haengen haben koennte?

----------

## MasterOfMagic

 *andreh wrote:*   

> Schon einmal dran gedacht, dass er sein Modem an eth0 haengen haben koennte?

 

okay hab es nochmal durchgelesen und nehme alles zurück   :Embarassed: 

aber da stellt sich dann ne andere frage, wie ist das bei dsl dann in deutschland? bei uns hat die ethernet karte, die am modem hängt, ne eigene ip (meist 10.0.0.140) im leerlauf. sollte er das nicht auch irgendwie in seinem regelwerk berücksichtigen. oder ist das bei pppoe so, dass die karte dann einfach down ist, wenn keine verbindung besteht?

mfg

masterofmagic

----------

## andreh

Down sein langt.

----------

## utang

hmm, werde ich mal ausprobieren, danke ...

das mit dem down ist doch irgendwie egal... wenn die KArte beansprucht wird, wird entweder automatisch eine IP vergeben oder sie hat eine feste ... es dient am ende eh nur arp um an die MAC zu kommen ...

----------

## kopfarzt

 *utang wrote:*   

> Wäre es so akzeptabel?  

 

Man kann wirklich viel Zeit mit der Erstellung der perfekten Firewall verbringen. Wenn Du also primär Masquerading willst, dann ist es akzeptabel. Wenn Du optimale Sicherheit willst, dann mußt Du Dir diverse Doku am Netz reinziehen und Dir vielleicht ein paar Tage urlaub nehmen.

Z.B. kann man sich noch gegen IP-Fragments schützen oder nur bestimmte "sinnvolle" ICMP Messages durchlassen, oder spezielle Hack Angriffe abwehren (z.B. XMas Packets). Wenn man, wie ich   :Embarassed: , wenig Ahnung von der Materie hat, hilft ein Tool wie z.B. fwbuilder, das einige dieser Dinge erklärt und auch in Regeln verpacken kann.

Mir ist bei Deiner Lösung noch unklar, warum Du ein eigenes iptables script brauchst. Mir wäre das Gentoo Script lieber, weil ich dann nicht bei jedem update aufpassen müßte, daß es nicht überschrieben wird. Wenn ich nichts übersehe, kannst Du bei Deiner momentan funktionierenden Firewall einfach das Originalscript von Gentoo verwenden und einmal 

```
/etc/init.d/iptables save
```

aufrufen, wodurch der Status im Filesystem gespeichert und beim nächsten Hochfahren wieder hergestellt wird. Vielleicht kann das noch jemand bestätigen.

Steuern kannst Du das Verhalten über /etc/conf.d/iptables, dort mußt Du z.B. 

```
ENABLE_FORWARDING_IPv4="yes"
```

 einstellen.

kopfarzt

PS: Und die Netmask von 172.16.0.0 ist noch immer 16  :Wink: 

----------

## utang

also ich habe die /etc/init.d/iptables mit der modifizierten version überschrieben und neu gestartet ... das durch routen funktioniert wieder nicht mehr und wenn ich /etc/init.d/iptables start / stop / save aufrufe kommt n ERROR ...

```
/etc/init.d/iptables start

 * ERROR:  "/etc/init.d/iptables" has syntax errors in it; not executing...

```

----------

## utang

also , ich habe jetzt mal versucht die zwei Zeilen :

echo "1" > /proc/sys/net/ipv4/ipforward

iptables -A POSTROUTING -o ppp0 -t nat -j MASQUERADE

in die /etc/init.d/iptables einzufügen, habe dann:

/etc/init.d/iptables stop

/etc/init.d/iptables start 

gemacht und selbst das funktionierte nicht ...

/etc/init.d/iptables (Auszug)

```
if [ "${ENABLE_FORWARDING_IPv4}" = "yes" ] ; then

                        einfo "Enabling forwarding for ipv4"

                        echo "1" > /proc/sys/net/ipv4/conf/all/forwarding

                        echo "1" > /proc/sys/net/ipv4/ipforward

                        iptables -A POSTROUTING -o ppp0 -t nat -j MASQUERADE

                fi

```

Was mache ich nur Falsch?

----------

## MasterOfMagic

 *utang wrote:*   

> 
> 
> ...
> 
> /etc/init.d/iptables(modifiziert)
> ...

 

bist du dir sicher dass du hinter eend$? noch irgendwas hinzufügen darfst? vielleicht ist das ja dein syntax error

mfg

masterofmagic

----------

## MasterOfMagic

weitere frage: du hast forwarding und masquerading händisch ausgeführt und da funktionierte es. hattest du da schon die internetverbindung?

wenn ja: besteht die internetverbindung schon, wenn /etc/init.d/iptables im runlevel gestartet wird? falls die nämlich nicht besteht hat dein pppoe interface vielleicht ne komplett falsche adresse und iptables versucht dann masquerading auf diese ip durchzuführen. oder ist iptables so intelligent, dass es immer auf die aktuelle ip prüft bei masquerading, die das jeweilige interface dann hat?

mfg

masterofmagic

----------

## ttaw

 *utang wrote:*   

> 
> 
> Router (lian):
> 
> iface_eth0="192.168.0.0 broadcast 192.168.255.255 netmask 255.255.0.0"
> ...

 

öm, wohin soll denn da geroutet werden?

Sollte eth0 (die karte am Modem) nicht die vom Provider zugewiesene IP haben?

----------

## utang

 *Quote:*   

> bist du dir sicher dass du hinter eend$? noch irgendwas hinzufügen darfst? vielleicht ist das ja dein syntax error 

 

 *Quote:*   

> Sollte eth0 (die karte am Modem) nicht die vom Provider zugewiesene IP haben?

 

also, ob ich der Netzwerkkarte eine IP gebe ist egal, ich brauch ihr auch keine Zugeben...

der Provider gibt mir dann sowieso eine neue IP für sein Netzwerk... Ich habe hier meinem Interface eine IP gegeben da er sonst leichte Probleme hatte ...

ich habe es jetz mal herraus gemacht und es funktioniert.... also das script kann ich wieder starten und stoppen ! DANKE

 *Quote:*   

> weitere frage: du hast forwarding und masquerading händisch ausgeführt und da funktionierte es. hattest du da schon die internetverbindung?

 

mein Vorgang:

- Rechner bootet / LOGIN

- weil ich nicht wusste, wo ich meine Module beim Starten eintragen soll damit er sie automatisch lädt, mache  ich ein modprobe e100 damit die netzwerkkarten funzen ...

- immoment haben die beiden Karten keine IP ...

- nun starte ich via /etc/init.d/net.ethn #n=1,2 meine beiden Netzwerkkarten neu

- nun haben sie die Eigenschaften/IP die ich ihnen in /etc/conf.d/net gegeben habe ...

- naja jetzt ein adsl-start und schwups funzt das Internet auf dem router ...

-  also wenn ich die Zeilen, via Hand in die console eingebe funktioniert alles soweit erstmal,also der client kommt ins Internet,aber das ist ein paar Regeln sollten schon definiert sein...

```
echo "1" > /proc/sys/net/ipv4/ipforward

iptables -A POSTROUTING -o ppp0 -t nat -j MASQUERADE
```

FRAGE: wo kann ich diese beide Zeilen in der /etc/init.d/iptables eintragen,damit ich sehe ob das iptables script funzt ? 

P.S.: stückchen für stückchen wird das schon =) immer weiter,

----------

## Spida

Das Firewall-Script aus dem Gentoo-Security-Guide ist eine gute Grundlage, um sich selbst etwas zu basteln...

----------

## MasterOfMagic

 *utang wrote:*   

> 
> 
> .....
> 
>  *Quote:*   weitere frage: du hast forwarding und masquerading händisch ausgeführt und da funktionierte es. hattest du da schon die internetverbindung? 
> ...

 

hm die module einfach in /etc/modules.autoload eintragen. dann werden sie automatisch geladen.

 *Quote:*   

> 
> 
> - immoment haben die beiden Karten keine IP ...
> 
> - nun starte ich via /etc/init.d/net.ethn #n=1,2 meine beiden Netzwerkkarten neu
> ...

 

okay das würde ich mal in runlevel default geben. wenn das mal soweit funktioniert, dann gucken wir mal wo wir das adsl-start und das masquerading etc. hinpacken.

mfg

masterofmagic

----------

## utang

also ich habe nach dem $eend alles entfernt und dann lief das script ... so nun habe

/etc/conf.d/iptables

```
ENABLE_FORWARDING_IPv4="yes"
```

angemacht =), und

/etc/init.d/iptables start

und nun funktioniert die ganze Geschichte, perfekt...

Es wäre nun interessant zu wissen wie ich diese Manuelle prozedur /etc/init.d/iptables start austomatisch beim botten unterkriege,denn das muss ich per hand machen ...

Und mich würde interessieren ob er die kompletten Filter regeln beachtet oder nur alles durch lässt ...

Neben bei noch, hatte ich Probleme mit dem 2.4.20 Kernel und den aic7xxx treibern, habe mir den kernel patch 2.4.21-rc1 drüber gemacht und funktioniert wieder einwand frei,und habe die Netzwerk module mit rein genommen ... (ist das normal das er den noch bei "uname -r" 2.4.20 anzeigt? )

----------

## MasterOfMagic

 *utang wrote:*   

> 
> 
> Neben bei noch, hatte ich Probleme mit dem 2.4.20 Kernel und den aic7xxx treibern, habe mir den kernel patch 2.4.21-rc1 drüber gemacht und funktioniert wieder einwand frei,und habe die Netzwerk module mit rein genommen ... (ist das normal das er den noch bei "uname -r" 2.4.20 anzeigt? )

 

ehm verwendest du lilo als bootloader? dann bitte nicht /sbin/lilo vergessen. ansich sollte er da schon 2.4.21-rc1 anzeigen oder so.

was iptables betrifft. was spricht gegen ein

```
rc-update add iptables default
```

mfg

masterofmagic

----------

## utang

so es funktioniert jetzt erstmal alles... wollte mich bei den Leuten dir mir tatkräftig bei seite gestanden haben bedanken !!!

----------

## Spida

Es gibt inzwischen auf ein Gentoo Router Howto

----------

