2 netzwerkkaren und kablemodem

marzl

Well-Known Member
Hi,

hab hier meinen server rumfliegen, nun will ich auf diesem die firewall endlich zum laufen bringen. aber irgendwie hab ich hier einen denkfehler. kann mir einer sagen wo?

der aufbau:
2 netzwerkkarten. die eine (dc0) ist mit meine switsch verbunden (nur internes netzwerk). die andere netzwerkkarte (dc3) ist mit dem kabelmodem verbunden und diese bekommt auch per dhcp eine ip adresse übermittelt.

achja, freebsd 4,8 ist intalliert.

da das original howto von grunix hier irgendwie nich passt, hab ich versucht es anzupassen:
es ist eine kombination von dem system und dem von grunix, mit eine paar modifikationen um es dynamisch zu halten.
irgendwie seht es logisch aus, und mir fällt einfach nicht auf was falsch sein könnte.

was funktioniert nicht?
z.b. sendmail beim hochfahren startet nicht, bleibt einfach hängen. ich kann die die kiste anpingen, doch keine dienste kommen zustande (intern und extern). natd geht nich, usw.
ein interner loopback ping geht auch :)

wo liegt das problem?

rc.conf:

firewall_enable="YES"
#firewall_type="OPEN"
firewall_script="/etc/firewall/fwrules"
firewall_logging="YES"
firewall_quiet="YES"



/etc/firewall/fwrules:

#!/bin/sh
# Setup system for firewall service.

fwcmd="/sbin/ipfw -q"
# ip="192.168.1.0" # ${ip}
# mask="255.255.255.0" # ${mask}
internal_nic="dc0" # ${internal}
# external_nic="dc3" # ${external}
dns_server="80.69.98.110" # ${dns}

############
# Flush out the list before we begin.
#
${fwcmd} -f flush

##########
# Loopback
# Only in rare cases do you want to change these rules
${fwcmd} add pass all from any to any via lo0
${fwcmd} add deny all from any to 127.0.0.0/8
${fwcmd} add deny ip from 127.0.0.0/8 to any

############
# Network Address Translation. All packets are passed to natd(8)
#
${fwcmd} add 50 divert natd all from any to any via ${natd_interface}

##########
# Firewall Ruleset
#

# Blockiert den port 6000 (X)
${fwcmd} add deny log tcp from any to any 6000 in recv ${natd_interface}

# Macht den Weg frei in internen Netzwerk
${fwcmd} add allow ip from any to any via ${internal_nic}

# Erlaubt alle Verbindungen welche von hier initiiert wurden
${fwcmd} add allow tcp from any to any out xmit ${natd_interface} setup

# Wenn die Verbindung einmal hergestellt wurde, erlaube dieser offen zu stehen
${fwcmd} add allow tcp from any to any via ${natd_interface} established

${fwcmd} add allow log tcp from any to any 80 setup # WWW
${fwcmd} add allow log tcp from any to any 22 setup # SSH
${fwcmd} add allow log tcp from any to any 25 setup # SMTP
${fwcmd} add allow log tcp from any to any 21 setup # FTP

# ${fwcmd} add allow log tcp from any to any 1022 setup

# This sends a RESET to all ident packets.
${fwcmd} add reset log tcp from any to any 113 in recv ${natd_interface}

# Erlaubt ausgehende DNS queries NUR auf die beiden angegebenen Server
${fwcmd} add allow udp from any to ${dns_server} 53 out xmit ${natd_interface}
${fwcmd} add allow tcp from any to ${dns_server} 53 out xmit ${natd_interface}

# Erlaubt die Antwort der DNS Nachfragen
${fwcmd} add allow udp from ${dns_server} 53 to any in recv ${natd_interface}
${fwcmd} add allow tcp from ${dns_server} 53 to any in recv ${natd_interface}

# Loggt ICMP Anfragen (echo und dest. unreachable) == script kiddies
${fwcmd} add allow log icmp from any to any in recv ${natd_interface} icmptype 3
${fwcmd} add allow log icmp from any to any in recv ${natd_interface} icmptype 8

# ICMP erlauben
${fwcmd} add allow icmp from any to any

# Blockiert alle Anfragen auf ports unter 1000
${fwcmd} add deny log tcp from any to any 0-1000 in recv ${natd_interface} setup
# 2049 == NFS
${fwcmd} add deny log tcp from any to any 2049 in recv ${natd_interface} setup

# Loggt netbux connections
${fwcmd} add deny log tcp from any to any 12345 in recv ${natd_interface}
${fwcmd} add deny log tcp from any to any 20034 in recv ${natd_interface}

# Alles andere verbieten
${fwcmd} add deny ip from any to any
 
Was ist denn mit dc1 und dc2?

z.b. sendmail beim hochfahren startet nicht, bleibt einfach hängen.
Warte mal eine Weile. Das ist sicher ein DNS-Timeout.
Du musst in der /etc/hosts für alle IP-Adressen des Rechners
was eintragen, wenn es keinen DNS gibt, der das alles kennt.

Inklusive IPv6, der sendmail fragt nämlich auf v6-Adressen
nach.

Das Script wäre vermutlich einfacher zu prüfen, wenn Du uns
das Ergebnis lieferst, also "ipfw list". Vielleicht siehst Du dabei
ja auch schon den Fehler...
 
Moin.

Original geschrieben von marzl
der aufbau:
2 netzwerkkarten. die eine (dc0) ist mit meine switsch verbunden (nur internes netzwerk). die andere netzwerkkarte (dc3) ist mit dem kabelmodem verbunden und diese bekommt auch per dhcp eine ip adresse übermittelt.
da das original howto von grunix hier irgendwie nich passt, hab ich versucht es anzupassen:

Meinst Du: http://www.bsdforen.de/forums/showthread.php?s=&threadid=148
Warum sollte das nicht passen?

es ist eine kombination von dem system und dem von grunix, mit eine paar modifikationen um es dynamisch zu halten.

Verstehe ich leider nicht so ganz.
Ich verstehe das folgendermassen: Du hast eine DSL Verbindung über die NIC dc3, diese bekommt bei jeder Einwahl eine andere IP zugewiesen, bzw. handelt es sich dabei um das virtuelle Interface "tun0", welches die externe IP hat, und mit der Du arbeiten musst.
Deine NIC dc1 geht ins interne Netzwerk, ist also für Deine weiteren Rechner im internen Netz das Gateway, so dass diese nach draussen kommen.
So soll das doch sein, oder?
Und da passt doch mein howto dazu, nichts anderes rennt hier auch.

z.b. sendmail beim hochfahren startet nicht, bleibt einfach hängen. ich kann die die kiste anpingen, doch keine dienste kommen zustande (intern und extern).

Das sendmail nicht rennt liegt am DNS, bzw. startet sendmail schon, es dauer nur eine Weile bis der bootvorgang weiter rennt.
Hast Du un /etc/hosts Deine IP eingetragen? Von der internen NIC? Hast Du /etc/resolv.conf mit den nameserver Deines Providers bestückt?


natd geht nich, usw.
rc.conf:
firewall_enable="YES"
#firewall_type="OPEN"
firewall_script="/etc/firewall/fwrules"
firewall_logging="YES"
firewall_quiet="YES"

Nun, schau Dir mal mein howto an, dort findest Du eine Datei Namens "natd.conf". Wo ist diese bei Dir?
Desweiteren, wie hast Du Deinen kernel kompiliert, was steckt alles drin, auich hier wieder, werfe einen Blick ins howto:

options IPFIREWALL
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=100
options IPDIVERT

Du brauchst auch in Deiner rc.conf folgendes:

natd_program="/sbin/natd"
natd_enable="YES"
natd_interface="tun0"
natd_flags="-dynamic -f /etc/firewall/natd.conf"

Aber das steht auch alles im howto.


fwcmd="/sbin/ipfw -q"
# ip="192.168.1.0" # ${ip}
# mask="255.255.255.0" # ${mask}
internal_nic="dc0" # ${internal}
# external_nic="dc3" # ${external}
dns_server="80.69.98.110" # ${dns}
############
# Network Address Translation. All packets are passed to natd(8)
#
${fwcmd} add 50 divert natd all from any to any via ${natd_interface}

Was ist Dein ${natd_interface}? Wo hast Du dieses deklariert? Bin ich blind, oder wie?
Es müsste heiissen:

ipfw add 10 divert natd all from any to any via tun0

So sieht das hardcodiert aus. Wo also hat Du tun0 deklariert?
Im weiteren Verlauf Deiner FW Rules kommt dies auch noch ein paar mal vor.

Ich sehe im Moment nicht, wo Du einen Unterschied zw. meinem howto und Deinen Anforderungen siehst. Du willst genau das machen, was im howto beschrieben ist. Lese Dir das nochmals durch, und, Du kannst eigentlich vieles einfach kopieren, musst nur die Namen der NICs ändern, das ist es dann auch schon. Ist zwar alles hardcodiert, aber das kannst Du, wenn es funktionieren sollte, immer noch in Dein bevorzugtes Format bringen.

Wenn Du wirklich was anderes vorhast, was ich nicht sehen, dann erläutere das nochmals.
 
hi,

esma danke für die tipps, muss aber noch auf das ein oder andere eingehen, da ich mich etwas missverständlich ausgedrüvkt habe. ich probiers nochmal :)

Ich verstehe das folgendermassen: Du hast eine DSL Verbindung über die NIC dc3, diese bekommt bei jeder Einwahl eine andere IP zugewiesen, bzw. handelt es sich dabei um das virtuelle Interface "tun0", welches die externe IP hat, und mit der Du arbeiten musst.

nein, tun0 kommt hier nicht zum zuge, da ich kein dsl habe.
ich bin direkt an einem kablmodem angebunden, und dc3 bekommt direkt die offizielle ip-adresse. und die ändert sich alle 2-3 monate. hier gibts nichts virtuelles :D
daher passt es nicht ganz zu dem ursprungs how-to.

wenn ich firewall auf "open" stelle" klappt natürlich alles :)

Hast Du un /etc/hosts Deine IP eingetragen?

jepp

Hast Du /etc/resolv.conf mit den nameserver Deines Providers bestückt?

nein, wird gleich erledigt.

Nun, schau Dir mal mein howto an, dort findest Du eine Datei Namens "natd.conf". Wo ist diese bei Dir?

hab ich nicht genutzt, brauch ich nicht.
es läuft alles auf dem server. keine forwardings nötig :D

wie hast Du Deinen kernel kompiliert, was steckt alles drin...

absolut so wie in dem how-to. habs ja gelesen :P

Was ist Dein ${natd_interface}

diesen string holt sich das system aus der rc.conf.
klappt auch. er setzt es ordentlich rein.

ich bin grad net daheim, daher kann ich nicht wie gewünscht die "ipfw list" präsentieren. das kann ich erst ende der woche.

aber vielleicht bringt euch meine erklärung etwas weiter :D
nochmals danke!
 
Zurück
Oben