Debian Netzwerkkonfiguration

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen

Netzwerke Konfigurieren

Die Netzwerkkonfiguration ist einer der wichtigsten Bestandteile der Linux-Welt.

Grundlagen

Ein paar der grundlegenden Befehle dazu sind ifconfig, route, netstatund arp Oder man verwendet die IP Befehle

Anmerkung

Bei einem Serversystem sollte man statische Adressen verwenden, man sollte den network-manager entfernen!

apt-get remove network-manager

NetworkManager

ifconfig

Mit ifconfig erhält man Informationen über und kann Netzwerkschnittstellen konfigurieren.

Der Befehl ifconfig alleine gibt den Status der momentan aktiven Netzwerkschnittstellen aus.

Gibt man ifconfig in einem Terminal ein bekommt man folgende zu anfangs meist kryptische Ausgabe:

root@zero:~# ifconfig
eth0      Link encap:Ethernet  Hardware Adresse 00:0c:29:47:62:93  
          inet Adresse:192.168.242.12  Bcast:192.168.255.255  Maske:255.255.240.0
          inet6-Adresse: fe80::20c:29ff:fe47:6293/64 Gültigkeitsbereich:Verbindung
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metrik:1
          RX packets:504 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2026 errors:0 dropped:0 overruns:0 carrier:0
          Kollisionen:0 Sendewarteschlangenlänge:1000 
          RX bytes:57947 (57.9 KB)  TX bytes:185058 (185.0 KB)
          Interrupt:18 Basisadresse:0x1400

lo        Link encap:Lokale Schleife  
          inet Adresse:127.0.0.1  Maske:255.0.0.0
          inet6-Adresse: ::1/128 Gültigkeitsbereich:Maschine
          UP LOOPBACK RUNNING  MTU:16436  Metrik:1
          RX packets:67 errors:0 dropped:0 overruns:0 frame:0
          TX packets:67 errors:0 dropped:0 overruns:0 carrier:0
          Kollisionen:0 Sendewarteschlangenlänge:0 
          RX bytes:6102 (6.1 KB)  TX bytes:6102 (6.1 KB)

Davon sollte man sich jedoch nicht abschrecken lassen, denn die wichtigsten Informationen sind daraus leicht abzulesen.

eth0 ist der Name den Ubuntu unserer Netzwerkkarte gegeben hat

Und in folgender Zeile,

inet Adresse:192.168.242.12  Bcast:192.168.255.255  Maske:255.255.240.0 

erfahren wir:

  • Unsere IP Adresse ( zu sehen bei Adresse: )
  • Unseren Broadcast ( Bcast: )
  • Und unsere Networkmask ( Maske: )

Wenn man den ifconfig mit der option -a erweitert zeigt es auch Netzwerkschnittstellen an die nicht aktiv sind.

Um mit ifconfig jetzt eine Schnittstelle zu konfigurieren muss man die Einstellungen die man ändern möchte als Option an den Befehl anhängen ( Alle Änderungen die mit ifconfig gemacht werden sind temporär und gehen verloren wenn man die Schnittstelle reaktiviert ):

root@zero:~# ifconfig eth0 192.168.250.79 netmask 255.255.240.0 broadcast 192.168.255.255 mtu 1400 up
  • eth0: Name der Netzwerkschnittstelle die bearbeitet wird gefolgt von der neuen IP Adresse
  • netmask: neue Netzwerkmaske
  • broadcast: neuer Broadcast
  • mtu: maximum Transmit Unit
root@zero:~# ifconfig eth0 down

Schaltet die Schnittstelle eth0 aus und entsprechend

root@zero:~# ifconfig eth0 up

wieder ein.

Setzen einer temporären virtuellen Netzwerkschnittstelle:

root@zero:~# ifconfig eth0:1 192.168.178.145 up


route

Mit dem Befehl route lässt sich die IP Routing Tabelle konfigurieren und anschauen. Alle Änderungen sind wie bei ifconfig nur temporär. Der Befehl allein führt wieder zur reinen Information:

root@zero:~# route
Kernel-IP-Routentabelle
Ziel            Router          Genmask         Flags Metric Ref    Use Iface
192.168.240.0   *               255.255.240.0   U     0      0        0 eth0
link-local      *               255.255.0.0     U     1000   0        0 eth0
default         brunt.alpha.qua 0.0.0.0         UG    100    0        0 eth0

und mit der Option -n das selbe in numerischer Ausgabe:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.240.0   0.0.0.0         255.255.240.0   U     0      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 eth0
10.9.0.0        0.0.0.0         255.255.0.0     U     0      0        0 eth0
0.0.0.0         192.168.240.100 0.0.0.0         UG    100    0        0 eth0

Man kann einen standart gateway bestimmen mit:

root@zero:~# route add default gw 192.168.240.21

und ihn wieder entfernen mit:

root@zero:~# route del default

Setzen der Default Route mit Metric

root@zero:~# route add default gw 192.168.240.21 metric 150

Setzen einer Netz Route

root@zero:~# route add -net 172.168.34.0 255.255.255.0 gw 192.168.240.45

Setzen einer Host Route

root@zero:~# route add -host 10.12.14.16 gw 192.168.240.57

Setzen einer Reject Route

root@zero:~# route add -net 10.0.0.0 netmask 255.0.0.0 reject

netstat

Netstat ist ein sehr vielseitiger Befehl mit dem man unter anderem Netzwerk Verbindungen, Routing Tabellen (wie route), Schnittstellen Statistiken und andere Details einsehen kann.

Ohne Optionen zeigt netstat eine Liste offener/verbundener Sockets an. (Sockets sind Schnittstellen bestehend aus IP Adressen und Ports die es Anwendungen ermöglichen untereinander übers Netzwerk zu kommunizieren)

root@zero:~# netstat
Aktive Internetverbindungen (ohne Server)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 zero.delta.int:ssh      192.168.247.222:32800   VERBUNDEN  
tcp        0      0 zero.delta.int:omirr    arilon.alpha.quadra:nfs VERBUNDEN  
Aktive Sockets in der UNIX-Domäne (ohne Server)
Proto RefCnt Flags       Type       State         I-Node   Pfad
unix  2      [ ]         DGRAM                    2645     @/com/ubuntu/upstart
unix  14     [ ]         DGRAM                    5457     /dev/log
unix  2      [ ]         DGRAM                    2838     @/org/kernel/udev/udevd
...

Mit folgenden Befehlen kann man Netstat einsetzen:

-l listening Zeigt nur die "Hörenden" Internetverbindungen und Sockets an
-n numerical Ausgabe der numerischen Adressen statt symbolischen host,port oder Benutzernamen
-t tcp Nur Verbindungen und Sockets die mit dem Protokoll Tcp ( TransportControlProtocol ) arbeiten
-u udp Das selbe mit dem Protokoll Udp ( UserDatagrammProtocol )
-x unix Hier werden die Unixsockets angezeigt
-p program Zeigt die PID ( ProzessIDentifikationsnummer ) und die Namen der Programme zu denen die Verbindungen und Sockets gehören
-c continious Bringt netstat dazu seine jede Sekunde eine neue Ausgabe zu erzeugen bis es abgebrochen wird
-r route Gibt das selbe aus wie der Befehl route, die routing Tabelle
-i interfaces Gibt Statistiken der Interfaces aus
-a all Eine Liste der "Hörenden" und "Nichthörenden" sockets

Bespiele:

Liste der hörenden Verbindungen:

root@zero:~# netstat -l
Aktive Internetverbindungen (Nur Server)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 *:ldap                  *:*                     LISTEN     
tcp        0      0 *:netbios-ssn           *:*                     LISTEN     
tcp        0      0 *:sunrpc                *:*                     LISTEN 
...

Liste der TCP Verbindungen:

root@zero:~# netstat -t
Aktive Internetverbindungen (ohne Server)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 zero.delta.int:ssh      192.168.247.222:32800   VERBUNDEN  
tcp        0      0 zero.delta.int:omirr    arilon.alpha.quadra:nfs VERBUNDEN  

Numerische Liste der Verbindungen:

root@zero:~# netstat -n
Aktive Internetverbindungen (ohne Server)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 192.168.242.12:22       192.168.247.222:32800   VERBUNDEN  
tcp        0      0 192.168.242.12:808      192.168.240.1:2049      TIME_WAIT  
Aktive Sockets in der UNIX-Domäne (ohne Server)
Proto RefCnt Flags       Type       State         I-Node   Pfad
unix  2      [ ]         DGRAM                    2645     @/com/ubuntu/upstart
unix  14     [ ]         DGRAM                    5457     /dev/log
unix  2      [ ]         DGRAM                    2838     @/org/kernel/udev/udevd
...

Numerische Liste der hörenden TCP Verbindungen:

root@zero:~# netstat -ltn
Aktive Internetverbindungen (Nur Server)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 0.0.0.0:389             0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:139             0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:54737           0.0.0.0:*               LISTEN   
...

arp

arp steht für Address Resolution Protocol das dazu benutzt wird ist IP Adressen die Physikalischen Adressen von Netzwerkkarten ( Hardware- bzw. MAC-Adressen ) zuzuordnen.

Der gleichnahmige Linuxbefehl ermöglicht es die Tabelle der zugeordneten Adressen zu Konfigurieren oder Anzusehen.

Der Befehl arp alleine zeigt wie üblich nur Informationen zu oben genannter Tabelle:

root@zero:~# arp
Adresse Hardware-Typ Hardware-Adresse Optionen Maske Schnittstelle
192.168.245.200                  (unvollständig)                          eth0
arilon.alpha.quadrant    ether   00:0e:0c:62:c4:04   C                     eth0
caprica.alpha.quadrant   ether   00:18:51:2b:c0:7f   C                     eth0
192.168.247.222          ether   00:19:5b:54:8b:9e   C                     eth0
aquaria.alpha.quadrant   ether   00:18:51:2b:c0:7f   C                     eth0


Mit dem Zusatz -d (delete) kann man Zuordnungen von Adressen aus der Tabelle entfernen.

root@zero:~# arp -d 192.168.247.222

So wie man mit dem Zusatz -s (specify) eine Zuordnung hinzufügen kann

root@zero:~# arp -s 192.168.247.222

Andere Optionen sind -n um statt hostnamen IP Adressen anzuzeigen:

root@zero:~# arp -n
Adresse Hardware-Typ Hardware-Adresse Optionen Maske Schnittstelle
192.168.240.21           ether   00:18:51:2b:c0:7f   C                     eth0
192.168.240.100          ether   00:16:3e:6f:d2:a4   C                     eth0
192.168.240.20           ether   00:18:51:2b:c0:7f   C                     eth0
192.168.247.222          ether   00:19:5b:54:8b:9e   C                     eth0
192.168.240.1            ether   00:0e:0c:62:c4:04   C                     eth0
192.168.245.200                  (unvollständig)                          eth0

Oder -v um die Ausgabe zu erweitern:

root@zero:~# arp -nv
Adresse Hardware-Typ Hardware-Adresse Optionen Maske Schnittstelle
192.168.240.21           ether   00:18:51:2b:c0:7f   C                     eth0
192.168.240.100          ether   00:16:3e:6f:d2:a4   C                     eth0
192.168.240.20           ether   00:18:51:2b:c0:7f   C                     eth0
192.168.247.222          ether   00:19:5b:54:8b:9e   C                     eth0
192.168.240.1            ether   00:0e:0c:62:c4:04   C                     eth0
192.168.245.200                  (unvollständig)                          eth0
Einträge: 6   Ignoriert: 0   Gefunden: 6

Wichtige Dateien

In den Dateien

  • /etc/resolv.conf
  • /etc/network/interface
  • /etc/hosts
  • /etc/services

kann man die Konfigurationen des Netzwerks einsehen und auch permanent verändern.


/etc/services

In dieser Datei werden Ports verschiedenen Netzwerkdiensten zugeordnet.

thomas@lydia:~$ grep www  /etc/services 
www		80/tcp		http		# WorldWideWeb HTTP
www		80/udp				# HyperText Transfer Protoco

Namensauflösung

/etc/resolv.conf

Die Datei /etc/resolv.conf enthält Angaben zum DomainNameServer (DNS) Angegeben in folgender Weise:

root@zero:~# cat /etc/resolv.conf 
search alpha.quadrant
nameserver 192.168.240.21

Wobei "192.168.240.21" die ip ihres Nameservers sein muss und "alpha.quadrant" ihre Domain, fals Sie eine haben.

/etc/hosts

Durch die /etc/hosts Datei lassen sich IP-Adressen zu Hostnamen fest zuordnen, was auch mehrere Namen einer IP Adresse ermöglicht.

Eine typische hosts-Datei sieht etwa so aus:

127.0.0.1       zero    localhost.localdomain   localhost
127.0.1.1       zero
192.168.242.12  zero.delta.int
# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

Wenn man jetzt ohne einen Domain Name Server einen Rechner über seinen Namen anpingen will kommt das hier dabei raus:

root@zero:~# ping ctu
ping: unknown host ctu

Wenn man jetzt nicht gezwungen sein will dessen IP-Adresse einzugeben, dann kann man dank der hosts-Datei der IP einen Namen zuordnen.


root@zero:~# echo 192.168.247.222 ctu >> /etc/hosts

in unserem Beispiel ordnen wir jetzt der IP Adresse 192.168.247.222 den Namen ctu zu.

Nachdem wir eine der Methoden angewendet haben können wir nun auch den Rechner nach seinem Namen anpingen:

root@zero:~# ping ctu
PING ctu (192.168.247.222) 56(84) bytes of data.
64 bytes from ctu (192.168.247.222): icmp_seq=1 ttl=64 time=0.626 ms

Man kann ihm auch weitere Namen hinzufügen:

root@zero:~# echo "192.168.247.222 suxer" >> /etc/hosts
root@zero:~# ping suxer
PING suxer (192.168.247.222) 56(84) bytes of data.
64 bytes from ctu (192.168.247.222): icmp_seq=1 ttl=64 time=0.724 ms

Somit kann man auch ohne DNS Namen vergeben oder einem Ausfall eines vorhandenen DNS vorbeugen.

host

host ist ein Werkzeug um die zu Hostnamen gehörenden IP's herauszufinden und umgekehrt.

IP Adresse von der domain anzeigen:

root@zero:~# host www.xinux.de 
www.xinux.de has address 88.198.59.246

Domain Name Pointer anzeigen:

root@zero:~# host 88.198.59.246
246.59.198.88.in-addr.arpa domain name pointer gaius.tuxmen.de.

Mail Server einer domain anzeigen:

root@zero:~# host -t mx xinux.de
xinux.de mail is handled by 10 baltar.tuxmen.de.

Name Server einer domain anzeigen:

root@zero:~# host -t ns xinux.de
xinux.de name server ns4.schlumbumbel.de.
xinux.de name server gaius.tuxmen.de.
xinux.de name server ns5.bonis.de.

Start of Authority anzeigen:

root@zero:~# host -t soa xinux.de
xinux.de has SOA record gaius.tuxmen.de. technik.xinux.de. 2008091901 14400 1800 604800 86400

Wie ist meine öffentliche IP?

vi /usr/local/bin/howismyip

cat  /usr/local/bin/howismyip
#!/bin/bash
wget http://www.wieistmeineip.de -U "" -qO - | egrep -o 'digit:{1,3}\.digit:{1,3}\.digit:{1,3}\.digit:{1,3}' | uniq

Netzwerkkarte ummappen


Netzwerkbrücke


/etc/network/interface

In der Datei /etc/network/interface befinden sich die allgemeinen Konfigurationen für die Netzwerkkarten und sieht folgendermaßen aus:

root@zero:~# cat /etc/network/interfaces 

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
	address 192.168.242.12
	netmask 255.255.240.0
	gateway 192.168.240.100
       mtu size 1450 
       post-up /usr/local/bin/online
       post-down /usr/local/bin/offline
         
auto eth0:13
iface eth0 inet static
       address 192.168.242.13
	netmask 255.255.240.0

auto eth1
       iface eth1 inet dhcp
       
up route add -net 10.10.1.0 netmask 255.255.255.0 gw 192.168.240.1
down route del -net 10.10.1.0 netmask 255.255.255.0 gw 192.168.240.1

auto lo und iface lo inet loopback bewirkt das der Rechner sich intern selbst eine Adresse zuordnet, mit der verschiedene (Client)-Programme intern untereinander und mit dem Rechner kommunizieren können.

ifup / ifdown

Man kann ebenfalls den Befehl ifup benutzen um eine Netzwerkschnittstelle hochzufahren, respektive ifdown zum abschalten. Diese greifen auf die Datei /etc/network/interfaces zu.

Optionen

-a schaltet bei ifup alle Netzwerkschnittstellen mit dem Vermerk auto, schaltet bei ifdown alle aktiven Netzwerkschnittstellen ab
--force erzwingt den Befehl
-h zeigt Hilfe zu dem Befehl an
-v ausführliche Ausgabe

Schaltet alle Netzwerkschnittstellen ein, die mit auto in /etc/network/interfaces vermerkt sind.

ifup -a

Schaltet eth0 ein

ifup eth0

Schaltet alle eingeschalteten Netzwerkschnittstellen ab

ifdown -a


Konfiguration der Schnittstelle:(In die Datei schreiben)

Setzen einer permanenten virtuellen Netzwerkschnittstelle:

Öffnen der Datei:

vim /etc/network/interfaces
auto eth0:1
iface eth0:1 inet static
address 192.168.178.145
netmask 255.255.255.0
network x.x.x.x
broadcast x.x.x.x
gateway x.x.x.x

Datei speichern