Nyttige Linux-kommandoer om nettverk

Alle disse kommandoer gjøres via et terminalvindu.

Installasjon

Du kan søke om et program er innstallert på din maskin ved å skrive sudo apt-cache search programnavn Hvis en kommando (program) ikke er innstallert, kan du bare skrive sudo apt-get install programnavn (gjelder i Ubuntu).

sudo gjør at du får root-rettigheter. Etter at du trykker på Enter-tasten, blir du bedt om ditt passord. Det forutsetter at du som bruker er blant de som har rettighet til å kjøre sudo, at du er i fila /etc/sudoers.

Hvis du ønsker å være permanent root-bruker, skriver du sudo -i. For å gå tilbake til vanlig bruker igjen, skriver du exit.

Nettverk

For å kunne kommunisere på internet, må din PC ha noe info om nettverket. Bl.a. må den ha en IP adresse. Den må også ha info om nettmaske, DNS-server og Gateway. Alle disse opplysningene kan din PC få fra en DHCP-server ved oppstart, eller opplysningene kan ligge permanent i PC'en. Hvilken del som PC'en er satt opp til, ligger i /etc/network/interfaces. Denne fila kan du redigere.
Konfigurasjon av nettkort:

Alle nettkort må konfigureres i fila /etc/network/interfaces
Hvis du ikke gjør noen ting, vil nettverkskortet bli satt opp til å få all info den trenger fra en DHCP-server. Hvis du har ett nettkort (Ethernet / LAN), vil det i fila /etc/network/interfaces stå noe slik som:

auto eth0
iface eth0 inet dhcp

PC'en får da alle opplysningene den trenger fra en DHCP-server på nettverket.

Hvis du ønsker å ha alle opplysninger fast satt opp i PC'en, må du først redigere fila /etc/network/interfaces.

F.eks:

auto eth0
iface eth0 inet static
        address       192.168.1.21
	netmask       255.255.255.0
	broadcast     192.168.1.255
	network       192.168.1.0
	gateway       192.168.1.1

Deretter må du også fortelle hvilke DNS-servere som skal brukes. Det legges i fila /etc/resolv.conf.
Her skriver du inn IP-adressen til DNS-serveren. F.eks:

# -- prøver de ulike navntjenere i round-robin
option rotate 
# -- kjappere timeout hvis en navnetjener ikke svarer..
option timeout:2 
nameserver 158.39.186.30
nameserver 158.39.185.14

Vanligvis skrives flere DNS-servere inn i fila /etc/resolv.conf. Det kan jo hende at den første DNS-serveren er nede, eller at det ikke er mulig å få kontakt. Da vil neste DNS-server (navnetjener) velges. Maskinen vil vente i vanligvis 5 sekunder før den forsøker neste DNS-server. Denne tiden kan kortes ned til 2 sekunder ved å skrive option timeout:2. Hvis du vil at maskinen skal forsøke første på nytt igjen, hvis den heller ikke får kontakt med siste DNS, må du skrive option rotate.

"Firewall"

Hvis du ønsker å ha et lokalt nettverk, og bruke din Linux-maskin som firewall ut mot internet, må du ha to nettkort. Begge disse kortene konfigureres i fila /etc/network/interfaces. Normalt vil det finnes en DHCP-server på det yttre nettverket, som din maskin henter opplysninger fra. På ditt private LAN, setter du opp fast IP-adresse. Da vil det i fila /etc/network/interfaces stå noe slikt som:
auto eth0
iface eth0 inet dhcp

auto eth1
iface eth1 inet static
        address       192.168.1.21
	netmask       255.255.255.0
	broadcast     192.168.1.255
	network       192.168.1.0
	gateway       192.168.1.1


Med disse ip-adressene kan du ha et eget privat nett (192.168.1.0) koblet til det andre kortet (eth1). På tilsvarende måte kan du velge statisk IP-adresse på eth0, hvis din PC ikke er tilkoblet et nettverk med dhcp-server, eller hvis det er andre grunner til at du vil ha statisk IP-adresse.

DHCP

Hvis du har ditt egne private LAN, og din Linux-maskin er som er firewall ut mot internet, er det naturlig at du setter opp maskinen til å være en DHCP-server i ditt private LAN. Da må du installere programmet isc-dhcp-server.

Du henter først dhcp-server ved å skrive sudo apt-get install isc-dhcp-server
Deretter må du konfigure DHCP-serveren.
Det gjøres i fila /etc/dhcp/dhcpd.conf :

option domain-name "hiof.no";
option domain-name-servers 158.39.186.30;
option routers                  192.168.1.1;

default-lease-time 600;
max-lease-time 7200;

# Use this to send dhcp log messages to a different log file (you also
# have to hack syslog.conf to complete the redirection).
log-facility local7;

# No service will be given on this subnet, but declaring it helps the
# DHCP server to understand the network topology.
# subnet 192.168.1.0 netmask 255.255.255.0 {
# }

# This is a very basic subnet declaration.

subnet 192.168.1.0 netmask 255.255.255.0 {
   range 192.168.1.10 192.168.1.250;
}

# This entry ignores requests on eth0...
subnet 158.39.187.0 netmask 255.255.255.240 { nummer og maske må rettes
        not authoritative;
}

NB!! De siste linjene er viktig at er med, så de ikke begynner å dele ut IP-adresser på internet (hiof-nettet).

Du kan starte dhcp-server ved å skrive:

start isc-dhcp-server

Du kan stoppe dhcp-server ved å skrive:

stop isc-dhcp-server

 
For å få trafikk igjennom serveren, må også dette scriptet kjøres:

# option definitions common to all supported networks...
#/etc/router.sh -- et egnet navn og plassering av skriptet. Husk også å 
# legge inn i /etc/rc.local, slik at skriptet starter ved oppstart
#!/bin/bash

echo "Routing starter..."

# Enabler modul for passive ftp-connections
modprobe ip_nat_ftp

######################################################################
# Setter først noen parametere som gjør det enkelt å forandre
# på skriptet senere med tanke på ip-adresser, regelsett, osv.
######################################################################
IPT="/sbin/iptables"
LOOP_INTERFACE="lo"
EXT_IP="158.39.187.205" dette nummer må rettes!
INT_IP="192.168.1.1"
INT_NET="192.168.1.0/24"
INT_NET_BROADCAST="192.168.1.255"
BROADCAST="255.255.255.255"
ANYWHERE="any/0"
HIGHPORTS="1024:65535"

######################################################################
# Flusher (sletter) eksisterende regler
######################################################################
$IPT -F INPUT
$IPT -F FORWARD
$IPT -F OUTPUT
$IPT -F -t nat

######################################################################
# Setter policy til ACCEPT for all trafikk
######################################################################
$IPT -P INPUT ACCEPT
$IPT -P OUTPUT ACCEPT
$IPT -P FORWARD ACCEPT

######################################################################
# Tillater all trafikk for loopback-interfacet
######################################################################
$IPT -I INPUT 1 -i lo -j ACCEPT
$IPT -I OUTPUT 1 -o lo -j ACCEPT
######################################################################

#Enabler IP-forwarding
echo 1 > /proc/sys/net/ipv4/ip_forward

#  Standard Masquerade (skjuler lokalnettet bak brannmuren)
$IPT -t nat -A POSTROUTING -o eth0 -j MASQUERADE

echo "Routing startet..."


Du skal nå komme ut på Internet fra en PC på ditt hjemme LAN.
Du kan f.eks kalle dette skriptet for router.sh, og legge den i /etc. Husk å gjøre den kjørbar ved å skrive chmod 751 /etc/router.sh, og legg den inn i /etc/rc.local, slik at skriptet starter automatisk ved oppstart.

Filverføring
scp (secure copy) er et program som er mye brukt for filoverføring mellom to maskiner. I Linux er scp en del av ssh.

Formen på kommandoen er:
$ scp /katalog/fil-pa-fra-maskinen brukernavn@navn-eller-IP-paa-til-maskinen : katalog/evt-filnavn

Et eksempel på hvordan fila rc.local overføres til bruker hessdalen på maskin hessdalen.hiof.no, og får navnet 180-rc.local:
$ scp ./rc.local hessdalen@hessdalen.hiof.no:./180-rc.local
Legg merke til tegnet : mellom maskin og katalog.
Hvis du skal overføre en hel katalog, med alle underliggenede filer og kataloger, fører du på en -r etter scp.
Når du har gitt kommandoen om filoverføring, slik som over, vil du få spørsmål om passord på til-maskinen. Etter at du har skrevet det, vil filoverføringen starte.

Det kan mange ganger være uhensiktsmessig å måtte skrive passordet hver gang. Spesiellt hvis du har laget en skript, som gjør denne filoverføringen, eller hvis du ofte foretar filoverføring mellom disse maskinene. Da kan du gjøre det slik at du ikke får noe spørsmål om passord, ved bruk av scp eller ssh.

Du kan klargjøre begge Linux-maskinene, slik at du slipper å skrive inn passord for hver gang du bruker scp eller ssh. Det gjør du ved å overføre nøkkel (nøkkelfil: id_rsa.pub) på fra-maskinen til til-maskinen.

Lag nøkkel på fra-maskinen:

Gå inn i katalogen .ssh under din brukekatalog. Der lager du en privat og offisiell nøkkel. Begge disse nøklene blir laget samtidig ved å starte programmet ssh-keygen.
Skriv: ssh-keygen -t rsa   Trykk bare return (flere ganger) når du blir spurt om filnavn. Nå lages filene id_rsa og id_rsa.pub.

Sjekk om du er bruker på til-maskinen, og at openssh-server er innstallert på til-maskinen. Sett deg ved fra-maskinen og test ut ssh mot til-maskinen, slik at du vet at programmene finnes og virker. Skriv: ssh brukernavn@maskinnavn (evt IP-adresse). Skriv deretter inn passordet da du blir spurt om det. Når du har logget inn, vet du at det virker, og du kan da logge ut igjen. Du kan imidlertid benytte anledningen til å sjekke om katalogen .ssh (legg merke til punktum) finnes under ditt brukerområde på serveren. Sjekk også om det ligger en fil der som heter authorized_keys. I den fila finnes (de offisielle) nøklene fra de maskinene som kan komme seg inn (via scp eller ssh) uten å bruke passord. Hvis fila authorized_keys ikke finnes, betyr det at ennå ingen andre maskiner kan komme inn uten å måtte bruke passord. Hvordan du i så fall lager den fila, får du en oppskrift på nedenfor.

Overfør public-nøkkelen til til-maskinen:
Metode 1:

Fila id_rsa.pub hos fra-maskinen skal du sende over til katalog .ssh på til-maskinen. Du kan bruke scp til det. Skriv scp id_rsa.pub dittbrukernavn@ipadresse (evt.navn):./.ssh. (Legg merke til tegnet : mellom maskin og katalog/fil). F.eks scp id_rsa.pub hessdalen@hessdalen.hiof.no:./.ssh
Du vil denne gang bli spurt om passord, før fila sendes over.

Nå har du overført fila id_rsa.pub fra fra-maskinen til katalog .ssh (hos din brukerkatalog) på til-maskinen.

Hvis fila authorized_keys finnes på serveren, legger du nøkkelen som finnes i id_rsa.pub inn på slutten av den fila. Det kan gjøres ved å skrive: cat id_rsa.pub >> authorized_keys. Fila authorized_keys er en samling av nøklenen fra alle maskiner som kommer inn uten å måtte bruke passord. Ønsker du at flere klientmaskiner skal komme inn, gjør du det samme fra de andre klientmaskinen. For hver gang legger du til nøkkelen i fila ved å skrive cat id_rsa.pub >> authorized_keys

Hvis fila authorized_keys ikke finnes i katalogen .ssh under ditt hjemmeområde på serveren, lager du den fila ved bare bytte navn på id_rsa.pub til authorized_keys. Skriv da: mv id_rsa.pub authorized_keys. (Pass på at du ikke skriver dette hvis authorized_keys allerede finnes. Da vil du nemlig slette nøklene fra de andre klientene).

Metode 2:

En enklere metode å overføre nøkkelen på er ved å skrive ssh-copy-id -i id_rsa.pub dinbruker@andremaskin.domene.no. Da vil nøkkelen automatisk legge seg inn i fila authorized_keys i katalog .ssh

Sjekke forbindelser

(noen kommandoer krever root-rettigheter)

ping ip-nummer eller navn - Sjekker forbindelsen til en annen maskin på internet.

Her sendes ICMP-pakker. Du får info om hvor mange enheter (routere) pakken har vært innom på veien. TTL begynner ofte på 255, og minsker med en per enhet pakken er innom. Du får også info om "round trip time". Du må avbryte tjenesten med Ctrl C.

$ ping www.vg.no
PING www.vg.no (195.88.54.16) 56(84) bytes of data.
64 bytes from www.vg.no (195.88.54.16): icmp_seq=1 ttl=247 time=2.71 ms
64 bytes from www.vg.no (195.88.54.16): icmp_seq=2 ttl=247 time=2.40 ms
64 bytes from www.vg.no (195.88.54.16): icmp_seq=3 ttl=247 time=2.64 ms

traceroute ip-nummer eller navn - Lister opp veien til en annen maskin på internet.

$ traceroute www.vg.no
traceroute to www.vg.no (195.88.55.16), 30 hops max, 60 byte packets
 1  c6500-h-1.hiof.no (158.39.165.1)  0.387 ms  0.454 ms  0.535 ms
 2  halden-gw.uninett.no (128.39.46.129)  0.349 ms  0.405 ms  0.423 ms
 3  sarpsborg-gw.uninett.no (128.39.47.245)  0.811 ms  0.804 ms  0.786 ms
 4  oslo-gw.uninett.no (128.39.47.233)  23.456 ms  23.637 ms  23.620 ms
 5  xe-5-2-0.br1.xa19.no.catchbone.net (193.156.90.3)  2.143 ms  2.311 ms  2.474 ms
 6  te5-1-0.cr1.fn3.no.catchbone.net (193.75.3.109)  2.669 ms  2.460 ms  2.650 ms
 7  te6-1-0.cr1.xa19.no.catchbone.net (193.75.3.149)  2.752 ms  2.925 ms  2.921 ms
 8  te5-1-0.br1.xa19.no.catchbone.net (193.75.1.74)  2.694 ms  2.828 ms  2.802 ms
 9  v4094.m323-rs1.net.kq.no (193.69.44.206)  2.852 ms  3.010 ms  2.998 ms
10  www.vg.no (195.88.55.16)  2.916 ms  2.879 ms  2.669 ms

mii-tool - Sjekker link-status på interfacene. Vil gi output på denne formen:

# mii-tool eth0: negotiated 100baseTx-FD flow-control, link ok

Det er ikke alltid mii-tool er støttet, da vil du få svar som ser noe slikt som dette:

# mii-tool SIOCGMIIPHY on 'eth0' failed: Operation not supported
no MII interfaces found

Da kan du prøve 'ethtool'. Den må du kanskje installere ved hjelp av apt (apt-get install ethtool)

ethtool - Sjekker link-status hivs mii-tool ikke fungerer:

# ethtool eth0
...(gir masse output som jeg har fjernet, men siste linje sier)
Link detected: yes

ifconfig - For å konfigurere nettverksinstillinger per interface. Eksempel:

# ifconfig eth0 192.168.1.10 netmask 255.255.255.0

Du bruker også ifconfig for å sjekke interface-status:

# ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 00:16:cb:ad:af:1f 
          inet addr:192.168.1.10  Bcast:192.168.1.255  Mask:255.255.255.0

(+ masse mer informasjon)

route (eller 'netstat -rn') - sjekker ruting-tabellen. Hva slags ruting er maskinen konfigurert med? Ofte vil den ha en rute til lokal-nettverket og en default-rute for trafikk som ikke er lokal:

# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.1.0     *               255.255.255.0   U     0      0        0 eth0
default         link.gnist.org  0.0.0.0         UG    100    0        0 eth0

arp - Hvis du vil sjekke ARP-tabellen - som er hardware-adressene som brukes punkt-til-punkt (link-laget).

Hvis ikke maskinen finner hardware-adressen til neste punkt/link på nettverket - så får den ikke sendt noen pakker (den blir sendt "nedover" i stacken). På min maskin desktop-maskin - så er det to andre kjente maskiner (serveren + default gatewayen):

lks@titan:~$ arp -n

Address                  HWtype  HWaddress           Flags Mask            Iface
192.168.1.5              ether   00:16:e6:52:bf:9c   C                     eth0
192.168.1.1              ether   00:16:b6:d9:40:e1   C                     eth0

FEILSØKING:

  1. Sjekk først om du har link. Det gjør du ved hjelp av mii-tool eller ethtool. Har maskinen link, går du videre til neste punkt. Maskinen må ha link for å kommunisere!
  2. Sett så IP-adresse på interfacet. Prøv å ping deg selv. Fungerer det så pinger du en annen maskin på lokalnettverket. Fungerer det - så er du klar! Hvis ikke, så sjekker du:
  3. Hvordan er rutingen satt opp på maskinen? Kanskje er det en annen konfigurasjon som er satt opp som skaper konflikt?
  4. Hvis rutingen ser bra ut - så sjekker du om du har noen "arp-entries". Dvs. har maskinen klart å finne arp-adresser til andre maskiner på nettverket? Den bør ha funnet arp-adressen til den andre maskinen du nettopp prøvde å pinge i punkt 2.

Takk til Lars Strand for endel av disse tips.

 

Linker

Grunnleggende Linux

Overblikk
Kort guide
Linuxguiden
Ubuntu Norge
Ubuntu homepage

Linux kjerne
Linux documentation project
Computer Technology
Linux commands
old Ubuntu (1) (2)

Tekstbehandling vim

DHCP
DNS
mii-tool
ethtool
ifconfig
route
arp
tcpdump netstat

cmod

 


US Computer Technician Schools


Tilbake til Hovedside

Erling.P.Strand@hiof.no