# [SOLVED] Aufsetzen eines DHCP-, NAT-, MASQ-Routers

## Inte

Ich versuche im Moment einen DHCP / DNS / NAT / MASQ / Router aufzusetzen. Allerdings bin ich immer noch nicht am Ziel meiner Träume.  :Wink:  Vielleicht steht mir jemand unterstützend zur Seite. Momentan habe ich folgendes Dilemma hinter mir:

IP-Adressen: 137.193.187.210/eth0 192.168.210.254/eth1

eth0 ist mit dem INet verbunden.

eth1 hängt an meinem Switch.

Alle Netzwerkkarten an dem Switch (außer eth1 des Routers) sollen eine dynamische IP bekommen.

Software emergen und in das Default Runlevel einbinden:

```
emerge iptables

rc-update add iptables default

emerge dhcp

rc-update add dhcp default
```

Der Kernel ist mit folgenden Optionen übersetzt worden:

Networking Options

```
<*> Packet socket

[*] Packet socket: mmapped IO

[*] Network packet filtering (replaces ipchains)

[*] Socket Filtering

<*> Unix domain sockets

[*] TCP/IP networking

[*] IP: advanced router
```

IP Netfilter Configuration

```
<*> Connection tracking (required for masq/NAT)

<*> FTP protocol support

<*> IP tables support (required for filtering/masq/NAT)

<*> limit match support

<*> Connection state match support

<*> Packet filtering

<*> REJECT target support

<*> Full NAT

<*> MASQUERADE target support

<*> REDIRECT target support
```

Zusätzlich habe ich folgende Änderungen vorgenommen:

IP-Forwarding einschalten (/etc/conf.d/local.start)

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

iptables Regeln aufstellen und sichern

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

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

/etc/dhcp/dhcpd.conf

```
option routers 192.168.210.254;

option domain-name "subnetz.domain.de";

option domain-name-servers xxx.xxx.xxx.xxx;

option subnet-mask 255.255.255.0;

one-lease-per-client true;

ddns-update-style ad-hoc;

log-facility local7;

authoritative;

default-lease-time 600;

max-lease-time 7200;

subnet 192.168.210.0 netmask 255.255.255.0 {

   range 192.168.210.1 192.168.0.253;

   option broadcast-address 192.168.210.255;

}

subnet 137.193.210.0 netmask 255.255.255.0 {

}

host inte {

   hardware ethernet xx:xx:xx:xx:xx:xx;

   fixed-address 192.168.210.254;

}
```

/etc/conf.d/dhcp (thx to Salze)

```
IFACE="eth1"
```

-=Inte=-

----------

## Salze

Hi Inte!

/etc/conf.d/dhcp editieren.

bye

Salze

----------

## fir3fly

Oder Du hast vergessen, in /etc/conf.d/net die Zeile für dhpd auf eth1 zu adden.

Das hier haste aber alles?:  *Quote:*   

> 
> 
> Edit the /etc/conf.d/net script to get your network configured for your first boot:
> 
> Code listing 21.2: Boot time Network Configuration
> ...

 

Fir3fly

----------

## Salze

Hi fir3fly!

 *fir3fly wrote:*   

> Oder Du hast vergessen, in /etc/conf.d/net die Zeile für dhpd auf eth1 zu adden.

 

Das wäre die Einstellung für den dhcp-Client. Es geht ihm aber um den Server.

bye

Salze

----------

## Inte

siehe oben

-=Inte=-

----------

## Salze

Hi Inte!

 *Inte wrote:*   

> Jede IP-Adresse ist einem statischen DNS-Eintrag zugeordnet (kann leider nicht geändert werden). Momentan behelfe ich mir damit, das ich die MAC-Adresse jeder NIC in die /etc/dhcp/dhcpd.conf eintrage, damit die richtige IP-zugewiesen wird. Allerdings ist es etwas mühsam von ca. 120 Rechnern die MAC einzutragen. Gibt es eine Möglichkeit über den DNS-Eintrag die IP zu vergeben?

 

So direkt nicht - zumindest kenne ich keine, sagen wir's so.  :Wink: 

Je nachdem wie die Zuordnung DNS -> vorliegt könntest Du Dir ein kleines Script dafür schreiben daß die Einträge vornimmt. (wärst Du wahrscheinlich auch selber drauf gekommen... *gg* ...wollte halt hauptsächlich sagen daß es soweit ich weißt keine gibt)

bye

Salze

----------

## tacki

dhcpd.conf:

ddns-update-style interim;

authoritative;

....

zone my-domain.de {

        primary 127.0.0.1;

}

...

subnet 192.168.1.0 netmask 255.255.255.0 {

....

        ddns-domainname "my-domain.de";

....

}

named.conf:

zone "my-domain.de" {

        type master;

        file "/var/bind/my-domain.de.hosts";

        allow-update {

                127.0.0.1;

                };

};

zone "1.168.192.in-addr.arpa" {

        type master;

        file "/var/bind/192.168.1.rev";

        allow-update {

                127.0.0.1;

                };

};

Ich hoffe ich hab nix vergessen...

----------

## toskala

 *Inte wrote:*   

> 
> 
> Jede IP-Adresse ist einem statischen DNS-Eintrag zugeordnet (kann leider nicht geändert werden). Momentan behelfe ich mir damit, das ich die MAC-Adresse jeder NIC in die /etc/dhcp/dhcpd.conf eintrage, damit die richtige IP-zugewiesen wird. Allerdings ist es etwas mühsam von ca. 120 Rechnern die MAC einzutragen. Gibt es eine Möglichkeit über den DNS-Eintrag die IP zu vergeben

 

wenn ich dich richtig verstehe willst du folgendes:

der client fährt hoch

bekommt nen dns eintrag

der client soll den passende ip zu seinem dns bekommen

also,  wenn ich das richtig weiss geht das nicht. der dhcp verteilt ja stur die ip adressen aus seinen leases für die clients anhand einer mac adresse oder auch willkürlich. du kannst imho keinen dns eintrag auf deiner maschine erzeugen bevor du nicht deine ip hast. ausserdem weiss dein dns server ja auch nur "ip <--> dns" und umgekehrt.

du kannst evtl. deinen dns dazu bringen die hosts anhand der leas-art zu verteilen. sprich das eine ip-range immer ein bestimmtes prefix bekommt oder ähnliches.

aber anders glaub ich geht das nicht.

----------

## tacki

geht nicht gibts nicht...

client kommt on, fragt nach ip-adresse, übermittelt dabei hostname (-h <hostname> in conf.d/net bei gentoo-clients), er bekommt ip-adresse, dhcpd sagt dns-server: 'client <hostname> hat die ip-adresse blablabla bekommen, änderung notwendig' 'na klar', sagt der dns-server 'das erledige ich sofot'

client geht off, dhcpd löscht ip-adresse und sagt zum dns 'der client mit der ip blablabla ist gerade off gegangen, bitte lösche den eintrag des clients' dns: 'no problemo '

in den logs sieht das dann etwa so aus:

```

Sep  8 12:07:28 dhcp-server dhcpd: if IN A hostname.domain.de domain doesn't exist add 1800 IN A hostname.domain.de 192.168.1.253 add 1800 IN TXT hostname.domain.de "31ee415...": success.

...

Sep  8 13:06:32 dhcp-server dhcpd: if IN TXT hostname.domain.de "31ee415..." rrset exists and IN A hostname.domain.de 192.168.1.151 rrset exists delete IN A hostname.domain.de 192.168.1.151: success.

Sep  8 13:06:32 dhcp-server dhcpd: if IN A hostname.domain.de rrset doesn't exist delete IN TXT hostname.domain.de "31ee415...": success.
```

----------

## Inte

Erstmal Danke für die zahlreichen Antworten, aber ich bin auf der Suche nach einer Lösung für den folgenden Zweck:

1. Client fährt hoch,

2. bekommt eine IP-Adresse in Abhängigkeit von der MAC-Adresse (Zwecks eindeutigem Nachweis),

3. der Client soll die passende DNS zu seiner IP-Adresse bekommen (ohne sie selbstständig eingeben zu müssen).Also ein minimaler administrativer Aufwand auf der Seite des Clienten (nur noch DHCP einstellen) und die volle Kontrolle über die Adress-Vergabe.

----------

## tacki

liest überhaupt einer meine posts?   :Crying or Very sad: 

----------

## Inte

 *tacki wrote:*   

> liest überhaupt einer meine posts?  

 Wahrscheinlich habe ich Dich einfach nur nicht richtig verstanden.  :Confused: 

Das Problem liegt darin, daß ich bei den Win-, *nix-Clients keine festen Einstellungen vornehmen will, um bei Bedarf die IP und/oder den DNS-Eintrag ändern zu können.

 *tacki wrote:*   

> 1. client kommt on, fragt nach ip-adresse, übermittelt dabei hostname (-h <hostname> in conf.d/net bei gentoo-clients)
> 
> 2. er bekommt ip-adresse
> 
> 3. dhcpd sagt dns-server: 'client <hostname> hat die ip-adresse blablabla bekommen, änderung notwendig'
> ...

 Dazu muß ich im Client doch einen Hostnamen angeben. Oder? Genau das will ich ja vermeiden. Die Zuweisung der IP/DNS soll ausschließlich per MAC erfolgen.

Wenn ich in die /etc/dhcp/dhcpd.conf

```
host inte { 

   hardware ethernet xx:xx:xx:xx:xx:xx; 

   fixed-address inte.subnet.domain; 

}
```

eingebe, bekommt der Client zwar einen Hostnamen zugewiesen, aber die IP ist nicht die Gewünschte. Oder hab ich wieder was vergessen? *grmpf*

-=Inte=-

----------

## tacki

warum willst du keine festen HOSTNAMES für pcs?

der HOSTNAME ist der name des Rechners! also bei linux-kisten das was in /etc/hostname steht und bei windows unter Arbeitsplatz->Eigenschaften->Netzwerkeigenschaften->Computername.

Bei Windows-Maschinen überträgt der DHCP-Client seinen hostname automatisch zum Server und der beauftragt dann den DNS-Server einen Eintrag zu erstellen in dem Format <hostname>.domain.de + dazugehörigem reverse-dns.  [edit] bei (gentoo-)linux muss man dem dhcp-client erst sagen dass er den eigenen hostname auch übertragen soll. das passiert in der /etc/conf.d/net:

iface_eth0="dhcp"

dhcpcd_eth0="-h mein-hostname"

[/edit]

der dhcp-server macht an sich garnichts mit dns-namen. deshalb funktioniert dein eintrag auch nicht. fixed-adresses sind ip-adressen, keine dns-namen!

trag da einfach deine gewünschte ip-adresse ein und füge das hinzu was ich weiter oben geschrieben hab,

----------

## Inte

Falls jemand Interesse an einer sehr guten deutschen Dokumentation zum Thema DHCP hat, sollte sich die folgenden PDFs auf der HP der FH Fulda mal durchlesen.

Einführung und Konfiguration von DHCP

DHCP  Dynamic Host Configuration Protocol

-=Inte=-

----------

## r6warrior

Warum eigentlich so umständlich   :Confused: 

Ich hab mein DNS- und DHCP-Server per webmin konfiguriert.

Ich benötige nur die MAC, des clients und das wars ... 

Oder hab ich Inte falsch verstanden ?

----------

