Configuration du réseau, de la connexion ADSL et du serveur DHCP/NTP
- Configuration du réseau : Ici, mes 2 cartes réseau sont ne3 (une Realtek 10Mo) et rlO (une Realtek 100Mo).
J'utilise ne3 pour la connexion au modem NeufBox, elle n'a pas besoin d'avoir d'ip car elle va supporter le tunnel PPPoE. Elle doit juste etre activée.
#fichier /etc/hostname.ne3
up
Je configure rlO avec son ip sur la patte "réseau local".
#fichier /etc/hostname.rl0
inet 10.246.200.1 255.255.255.0 NONE
On vérifie le résultat :
root@spud[~]$ifconfig ne3
ne3: flags=8863 mtu 1500
address: 00:80:ad:89:1b:04
media: Ethernet autoselect (10baseT)
inet6 fe80::280:adff:fe89:1b04%ne3 prefixlen 64 scopeid 0x1
root@spud[~]$ifconfig rl0
rl0: flags=8843 mtu 1500
address: 00:e0:4c:03:10:ed
media: Ethernet autoselect (100baseTX full-duplex)
status: active
inet 10.246.200.1 netmask 0xffffff00 broadcast 10.246.200.255
inet6 fe80::2e0:4cff:fe03:10ed%rl0 prefixlen 64 scopeid 0x2
- Pour la configuration de la connexion ADSL par PPPoE, on a besoin de plusieurs fichiers (bien respecter les espaces en début de lignes !) :
/etc/ppp/ppp.conf
, utilisé pour la configuration de pppoe.
default:
set log Phase Chat LCP IPCP CCP tun command
set redial 15 0
set reconnect 15 10000
# A PPPoE (PPP over Ethernet) setup may look like this:
pppoe:
# on specifie a pppoe quel interface reseau on utilise
set device "!/usr/sbin/pppoe -i ne3"
set mtu max 1492
set speed sync
disable acfcomp protocomp
deny acfcomp
set cd 5
set dial
set login
set timeout 0
# on met son login et mot de passe du FAI
set authname "LOGIN-FAI"
set authkey "PASSWD-FAI"
# on ajoute l'ip du peer de connexion comme route par defaut
enable sroutes
add default HISADDR
# on autorise pppoe a reecrire le fichier /etc/resolv.conf
# avec les dns fourni par le FAI
resolv rewrite
enable mssfixup
enable dns
/etc/ppp/ppp.linkup
, utilisé lors de la connexion.
MYADDR:
# on lance pf et pflogd
! sh -c "/sbin/ifconfig pflog0 up"
! sh -c "/sbin/pfctl -e -i tun0 -F all -f /etc/pf.conf"
! sh -c "/sbin/pflogd -d 5 -f /var/log/pflog"
# on verifie l'ip pour le dns dynamique
!bg sh -c "/usr/local/sbin/do_ipcheck"
/etc/ppp/ppp.linkdown
, utilisé lors de la déconnexion.
# on flush les regles de pf
MYADDR:
! sh -c "/sbin/pfctl -F all -d"
/etc/ppp/options
, les options de pppoe (celles par défaut je crois).
lock
auth
# connexion persistante
persist
debug
usehostname
/usr/local/sbin/adsl-status
. C'est un script shell qui vérifie le statut de la connexion, et qui affiche l'adresse IP publique si on en a une.
#!/bin/sh
IP=$(netstat -rn | grep tun0 | grep ^[0-9] | awk '{print$2}')
if [ -z "$IP" ]; then
echo "ADSL link is down."
exit 1
else
echo "ADSL is up, IP address is $IP"
exit 0
fi
Enfin, on rajoute ça à la fin de
/etc/netstart
pour que la connexion ADSL soit lancée au démarrage du serveur.
echo -n "Trying to establish PPPoE DSL"; ppp -ddial pppoe
for i in 10 9 8 7 6 5 4 3 2 1 0; do
sleep 5
echo -n "$i"
if /usr/local/sbin/adsl-status>/dev/null; then
break
fi
done
route flush
ppp -ddial pppoe
A partir de maintenant, on a une connexion ADSL qui marche sur le serveur, on peut pinguer des adresses IP sur internet.
On vérifie le résultat :
root@spud[~]$ifconfig tun0
tun0: flags=8011 mtu 1492
inet 84.100.215.52 --> 84.100.215.1 netmask 0xffffffff
Maintenant, on veut pouvoir avoir l'accès internet partagé pour les PCs du réseau local, et on veut pouvoir pinguer des noms DNS complets. Cela se fait très facilement avec les modifications suivantes :
On rajoute cette ligne dans /etc/pf.conf
pour activer la NAT.
nat on tun0 from 10.246.200.0/24 to any -> tun0
On rajoute ces lignes dans
/etc/resolv.conf
pour avoir l'accès à un serveur DNS (ici, j'ai mis le serveur DNS primaire de Neuf Telecom).
lookup file bind
nameserver 80.118.196.36
On rajoute cette ligne dans
/etc/sysctl.conf
pour activer le forwarding de paquets dans le noyau.
net.inet.ip.forwarding=1
Il ne reste qu'à relancer pf (
pfctl -f /etc/pf.conf
), à activer le forwarding pour la session courante (
/sbin/sysctl -w net.inet.ip.forwarding=1
), même pas besoin de redémarrer, hop hop hop magie !! On a le net qui marche sur les PCs du réseau local !! Temps total, installation + configuration : 30mn maxi ! (Je triche un peu, moi j'ai mis 2h.. mais j'avais pas cette fabuleuse doc sous la main ;-))
On installe quelques packages devenant rapidement indispensables (à mon goût ;-)), en utilisant
pkg_add
et le ftp officiel
ftp://ftp.openbsd.org/pub/OpenBSD/3.7/packages/i386/
. Personnellement, j'ai installé les packages suivant :
bash-3.0.16p0 GNU Bourne Again Shell
bzip2-1.0.2 block-sorting file compressor, unencumbered
ipcheck-0.207 fully compliant DynDNS.org client
vim-6.3.61-no_x11 vi clone, many additional features
Puis on configure (rapidement, mais complètement) les serveurs DHCP et NTP, ainsi que le client dyndns permettant d'avoir un nom DNS fixe pour une adresse IP dynamique.
/etc/rc.conf.local
permet de spécifier des options pour les services à lancer au démarrage.
# on active dhcpd
dhcpd_flags="-q"
# on active ntpd et on precise quel serveur de reference utiliser
ntpd=YES
ntpd_flags=ntp.univ-lyon1.fr
/etc/dhcpd.conf
: on configure le comportement du serveur DHCP. Ici, je configure mes clients en IP fixe avec contrôle sur l'adresse MAC, et je laisse une plage pour les éventuels clients de passage.
shared-network LOCAL-NET {
# le suffixe DNS a attribuer aux clients
option domain-name "fr.homeunix.org";
# les adresses des serveurs DNS a leur transmettre
option domain-name-servers 10.246.200.1, 80.118.196.36 ;
subnet 10.246.200.0 netmask 255.255.255.0 {
# l'adresse IP de la route par defaut
option routers 10.246.200.1;
# la plage d'IP pour les clients de passage
range 10.246.200.14 10.246.200.20;
}
}
group
{
use-host-decl-names on;
host renton {
hardware ethernet XX:XX:XX:XX:XX:XX;
fixed-address 10.246.200.XX; }
host sickboy {
hardware ethernet XX:XX:XX:XX:XX:XX;
fixed-address 10.246.200.ZZ; }
host diane {
hardware ethernet XX:XX:XX:XX:XX:XX;
fixed-address 10.246.200.WW; }
host callagan {
hardware ethernet XX:XX:XX:XX:XX:XX;s
fixed-address 10.246.200.YY; }
}
Avec
/etc/dhcpd.interfaces
, on dit à dhcpd d'écouter sur
rl0.
rl0
Ensuite on re-marque la liste des PCs du réseau dans
/etc/hosts
pour limiter le nombre de requêtes DNS.
::1 localhost.fr.homeunix.org localhost
127.0.0.1 localhost.fr.homeunix.org localhost
10.246.200.1 spud.fr.homeunix.org spud
10.246.200.XX renton.fr.homeunix.org renton
10.246.200.YY callagan.fr.homeunix.org callagan
10.246.200.ZZ sickboy.fr.homeunix.org sickboy
10.246.200.WW diane.fr.homeunix.org diane
On configure le serveur NTP dans le fichier
/etc/ntpd.conf
:
# Addresses to listen on (ntpd does not listen by default)
listen on 10.246.200.1
# sync to a single server
server ntp.univ-lyon1.fr
Puis on configure le client dyndns en ajoutant une tâche dans
/etc/crontab
:
*/10 * * * * /usr/local/sbin/do_ipcheck
Ou le script
/usr/local/sbin/do_ipcheck
est un simple appel au programme Python
ipcheck.py
, en précisant les domaines qui l'on va valider chez dyndns comme correspondant à notre adresse IP.
#!/bin/sh
/usr/local/bin/ipcheck.py -q -d /etc/ipcheck -i tun0 -w \
LOGIN-DYNDNS PASSWD-DYNDNS DOMAINE1,DOMAINE2,DOMAINE3
A ce stade, on a le serveur qui fait office de routeur/passerelle/serveur DHCP/NTP. C'est pas beau ça ??
La suite : configuration avancée de pf