Outils pour utilisateurs

Outils du site


reseaux_administrations

IPv6

Bonding

Liens:

Switchs:

Bonding ⇔ LACP (802.3ad) chez Cisco

# aptitude install ifenslave

/etc/network/interfaces :

...
auto bond0
iface bond0 inet static
      address 10.0.4.10
      netmask 255.255.255.0
      gateway 10.0.4.254
      bond-slaves eth0 eth1
      bond-mode <MODE>
      bond-miimon 100
      bond-primary eth0 eth1
  • bond-mode 0 ⇒ Round-robin policy (envoi alternativement d'une interface puis de l'autre)
  • bond-mode 1 ⇒ Active-backup policy (active 1 slave, et passe au suivant en cas de defaillance)
  • bond-mode 4 ⇒ IEEE 802.3ad Dynamic link aggregation

Autre exemple:

auto bond0
iface bond0 inet static
      address 10.21.4.11
      netmask 255.255.255.0
      network 10.21.4.0
      broadcast 10.21.4.255
      gateway 10.21.4.254
      bond-slaves none
      bond-mode 4
      bond-miimon 100

allow-hotplug eth0
iface eth0 inet manual
      bond-master bond0
      bond-primary eth0 eth1 eth2

allow-hotplug eth1
iface eth1 inet manual
      bond-master bond0
      bond-primary eth0 eth1 eth2

allow-hotplug eth2
iface eth2 inet manual
      bond-master bond0
      bond-primary eth0 eth1 eth2

Pour les switchs, voir chez Cisco…

Sur le switch:

#conf t
#interface range gi 1/0/3 - 4
#channel-group 1 mode <FLAG>
#switchport mode access
#switchport access vlan 6

Marche avec :

  • channel-group 1 mode on ⇒ bond-mode 0
  • channel-group 1 mode passive ⇒ bond-mode 1 (a verifier)
  • channel-group 1 mode active ⇒ bond-mode 4 (LACP/802.3ad)

Un “port-channel 1” est créé:

#sh ru interface po1     
Building configuration...

Current configuration : 31 bytes
!
interface Port-channel1
 switchport access vlan 6
 switchport mode access
end
#sh etherchannel summary 
...
Number of channel-groups in use: 1
Number of aggregators:           1

Group  Port-channel  Protocol    Ports
------+-------------+-----------+-----------------------------------------------
1      Po1(SU)         LACP      Gi1/0/3(P)  Gi1/0/4(P)  

Arp

local

Lien:

J'ai besoin de faire communiquer 2 équipements réseaux, avec des classes réseaux differentes , dans un même VLAN.

Hélas, un équipement réseau mal configuré (que je ne contrôle pas) a la mauvaise idée de s'approprier l'une des classes.

En clair:

# arping -i eth1 192.168.2.1

La réponse, c'est la MAC des 2 équipements:

  1. l'équipement réseau mal configuré
  2. le serveur a atteindre

Donc, ca fonctionne trés mal en l'etat.

Il faut donc forcer l'association de l'IP et de la MAC.

# arp -s <IP> <MAC> -i <IFACE>

Dans mon cas:

# arp -s 192.168.2.1 aa:bb:cc:dd:ee:ff -i eth1

ping

mtr

# aptitude install mtr-tiny
$ mtr www.free.fr

Instructif.

Ou bien:

$ mtr -r -c 20 www.free.fr
HOST: netcave                     Loss%   Snt   Last   Avg  Best  Wrst StDev
  1. freebox.thierry-jaouen.local  0.0%    20    0.6   0.6   0.5   0.7   0.0
  2. 82.228.221.254                0.0%    20   44.2  45.7  44.2  46.6   0.6
  3. stmaurice-6k-1-a5.routers.pr 80.0%    20   44.7  48.7  44.0  61.0   8.2
  4. th2-crs16-1-be1008.intf.rout  0.0%    20   44.2  45.6  44.2  46.8   0.7
  5. bzn-6k-sys-po21.intf.routers  0.0%    20   64.7  53.9  44.9  80.9  12.0
  6. www.free.fr                   0.0%    20   44.8  45.9  44.6  47.6   0.8

classes

Pinger rapidement toute une classe d'adresse:

# nmap -sP 192.168.0.1-254

smbfs

cifs , c'est mieux :)
# aptitude install smbfs

Ajouter le point de montage dans /etc/fstab , par exemple:

# vivi --------
//vivi.thierry-jaouen.local/MP3  /mnt/vivi/music   smbfs   defaults,ro,noauto,username=virginie,password=<mot_de_passe>
# -------------

Comme on n'a mis noauto, on va mounter ainsi:

# mount /mnt/vivi/music

Et on devra le faire a chaque reboot…

nfs

serveur

# aptitude install nfs-kernel-server

Dans le fichier /etc/exports , on met les repertoire qu'on souhaite exporter via nfs , exemple:

/home/thierry/music *.thierry-jaouen.local(ro,root_squash,sync,subtree_check)

Mais on aurait pu mettre:

<ip1>(droits) <ip2>(droits)

ou

<classe-ip>(droits) 

etc…

Recharger la config:

# /etc/init.d/nfs-kernel-server reload

client

# aptitude install nfs-client

Editer /etc/init.d/fstab afin d'avoir, par exemple:

# TJ ----------
music.thierry-jaouen.local:/home/thierry/music  /mnt/music nfs ro,soft,timeo=5,intr,rsize=8192,wsize=8192 0 0
# -------------

Et puis:

# mount -a

autres conf

J'aime bien aussi, dans /etc/fstab :

<host>:/<path>  nfs  defaults,rw,intr,rsize=32768,wsize=32768  0  0

speed up

Lien: http://www.higs.net/85256C89006A03D2/web/PageLinuxNFSPerformance

Sur un partage un peu chargé en NFS, conseils:

Côté client

Régler “rsize” et “wsize” (au plus haut possible, mais pas trop)

Côté serveur

Dans /etc/default/nfs-kernel-server :

# Number of servers to start up
# TJ ------------
#RPCNFSDCOUNT=8
RPCNFSDCOUNT=24
# ---------------

Par exemple, pour avoir “24” forks de nfs prêt a répondre aux solicitations des clients…

Alors que:

# cat /proc/sys/net/core/rmem_default
111616

On peut donc modifier “sysctl.conf” pour avoir:

net.core.rmem_default = 327680
net.core.rmem_max = 327680

Et puis un petit :

# sysctl -p

… pour appliquer les changements.

( voir “lien” pour les explications )

autofs

nfs

Lorsque la liaison nfs vient à disparaitre… ou si le boot est trop rapide (dans un DomU par exemple)…

Il faut pouvoir maintenir la connexion nfs avec autofs.

autofs permet bien des choses.

Ca travail avec le noyau (verifier qu'il est compilé pour le supporter) ce qui induit des résultats surprenant.

On n'utilisera plus /etc/fstab pour les montages usant de autofs .

Package :

# aptitude install autofs
:!: On va travailler dans un sous répertoire de /mnt

Si on utilisait /mnt , tout son contenu serait “caché” par le “montage” fait par le noyau: ce n'est pas ce qu'on veut !

Editer /etc/auto.master afin d'associé un chemin et un fichier de conf. Par exemple:

# TJ --------------
/mnt/nas  /etc/auto.nas  --ghost,--timeout=60
# -----------------
:!: Ne pas créer /mnt/nas : autofs va s'en charger.
  • –ghost ⇒ afficher les repertoires, même lorsqu'ils ne sont pas montés.

Creer le fichier de conf auto.nas :

#
# TJ
#

thierry         -fstype=nfs,rw,intr,rsize=32768,wsize=32768                     nas.thierry-jaouen.local:/thierry
music           -fstype=nfs,ro,noacl,nouser,intr,rsize=32768,wsize=32768        nas.thierry-jaouen.local:/partages/thierry/music

Et enfin, le classique:

/etc/init.d/autofs reload

Et là, c'est mysterieux, mais ca doit fonctionner !

Le repertoire “/mnt/nas” existe :

# ls -d /mnt/nas
/mnt/nas

Son contenu est apparemment “vide” (sauf si on utilise l'option –ghost) :

# ls /mnt/nas

Mais si on essaye de regarder des répertoires nfs, il monte !

# ls /mnt/nas/music
...

C'est ça le mystere: les répertoires “apparaissent” (sont montés) lorsqu'on s'en sert… et disparaissent lorsqu'on s'en sert plus. (Toujours sauf si on utilise –ghost )

En pratique, ce genre de comportement est plutôt dérangeant. On pourra creer des liens pour rendre les montage moins obscur. Genre:

# ln -s /mnt/nas/thierry /mnt/nas-thierry
# ln -s /mnt/nas/music /mnt/nas-music

Ou bien, ajouter l'option –ghost ;-)

cifs

Lien: http://forum.debian-fr.org/viewtopic.php?f=8&t=11575

Lorsqu'un partage Windows vient a tomber… comment le remonter avec autofs ?

Dans le fichier /etc/auto.master :

....
/mnt/vivi   /etc/auto.vivi --ghost,--timeout=60

Dans le fichier /etc/auto.vivi :

music   -fstype=cifs,ro,credentials=<fichier_du_compte>   ://<ip_du_poste>/itunes_music
videos  -fstype=cifs,ro,credentials=<fichier_du_compte>   ://<ip_du_poste>/youtube_vod
photos  -fstype=cifs,ro,credentials=<fichier_du_compte>   ://<ip_du_poste>/myphotos

Où <fichier_du_compte> est un fichier, protégé, contenant:

username=vivi
password=<mot_de_passe_secret>

Et eventuellement :

workgroup=<workgroup>

Et où <ip_du_poste> est l'ip du poste (et non pas son nom ou fqn).

:!: Bien faire précéder le 'path' par :

tcpdump

Ecouter une interface:

# tcpdump -n -i eth0

Un port particulier:

# tcpdump -n -i eth0 port 22

Un port dans un sens particulier:

# tcpdump -n -i eth0 dst port 22

Un port et une ip:

# tcpdump -n -i eth0 dst 192.168.0.1 and dst port 22

Un port et une classe:

# tcpdump -n -i eth0 dst net 192.168/16 and dst port 22

Voir les nouvelles connexions initialisés:

# tcpdump -n -i eth0 'tcp[tcpflags] & tcp-syn!=0'

Voir les connexions entrantes sur un port:

# tcpdump -n -i eth0 'tcp[tcpflags] & tcp-syn!=0 and dst port 22'

Etc…:

# tcpdump -n -i eth0 'tcp[tcpflags] & (tcp-syn|tcp-ack)!=0 and dst port 22'

mailsnarf

# aptitude install dsniff

Recuperer les mails envoyer par l'<IP> , et eth1 (LAN) a eth0 (WAN) :

# mailsnarf -i eth1 "" <IP>

Essayé aussi avec -v … en fait, j'ai pas trop compris comment ça marche: trop simple.

DNS local

Lien: http://forum.ubuntu-fr.org/viewtopic.php?id=118701

Aprés avoir configuré un DNS pour un reseau local, on peut s'apercevoir que des IP “pleinement qualifié” ne sont pas resolu !

Exemple, toto.thierry-jaouen.local :

$ nslookup toto
Server:         192.168.0.150
Address:        192.168.0.150#53

Name:   toto.thierry-jaouen.local
Address: 192.168.0.154

Ok!

$ nslookup toto.thierry-jaouen.local
Server:         192.168.0.150
Address:        192.168.0.150#53

Name:   toto.thierry-jaouen.local
Address: 192.168.0.154

Encore Ok!

$ ping toto -c 1
PING toto.thierry-jaouen.local (192.168.0.154) 56(84) bytes of data.
64 bytes from toto.thierry-jaouen.local (192.168.0.154): icmp_seq=1 ttl=128 time=1.23 ms

--- toto.thierry-jaouen.local ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 1.232/1.232/1.232/0.000 ms

Ok!

$ ping toto.thierry-jaouen.local
ping: unknown host toto.thierry-jaouen.local

Oups! c'est quoi ce bordel !

Aprés de longues recherches, le problème viendrait indirectement du service avahi et directement du fichier:

/etc/nsswitch.conf
:!: En fait: le problème vient plutôt de l'utilisation du suffix “.local” qui est reservé pour le protocole “apple/bonjour” , dont fait usage “avahi” !!!
Solution: ne pas utiliser le suffix “.local”

Je ne sais pas pourquoi exactement, mais il faut mettre dns avant les mdns

Bref, faire en sorte d'avoir un fichier s'approchant de ça:

# TJ -------
#hosts:          files mdns4_minimal [NOTFOUND=return] dns mdns4
hosts:          files dns mdns4_minimal [NOTFOUND=return] mdns4
# ----------

(les commentaires, c'est pour faire jolie)

Et voila! Comme par bizarre, ca marche sans avoir besoin de redemarrer quoi que ce soit (sauf les applications qui chargent se fichier au demarrage, comme Firefox)

Tester le debit

Existe aussi pour windows: http://www.noc.ucf.edu/Tools/Iperf/

# apt-get install iperf

Sur le “serveur”:

# iperf -s
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------------------------------------------------------------

Sur le “client”:

# iperf -c <ip_du_serveur>
------------------------------------------------------------
Client connecting to <ip_du_serveur>, TCP port 5001
TCP window size: 16.0 KByte (default)
------------------------------------------------------------

En udp:

Sur le serveur:

# iperf -s -u

Sur le client, il faut preciser la bande passante a tester:

# iperf -c <ip_du_serveur> -u -b 5M

Si il y a 0% de perte, a “5M” , alors on peut essayer de monter un peu… Dés qu'on a des pertes, on est surement au dela d'une limite a ne pas (trop) dépasser.

parser les logs

  • iptablesweb
  • fwlogwatch
  • psad
  • ntop ??
  • darkstat ??

ident , auth, ftp et port 113

Un test de connexion avec telnet sur un serveur FTP semble lente ou les log iptables remonte des DROP etrange sur le port 113 … et bien c'est parce qu'on DROP les connexions sur le port 113.
Ce port 113 auth est exploité par le process identd, mais cela ralenti les connexions.
Soit on laisse le service vivre et on ne drop pas les paquets, mais il parait que c'est un service obsolete. Soit on desinstalle le service/process et si necessaire, on ajoute une regle dans IpTables:
Desinstaller:

 # apt-get remove --purge pidentd

La regle a ajouter a Iptables:

 # $IPTABLES -A INPUT -i $WAN_IF -p tcp -d $WAN_IP --dport auth -j REJECT --reject-with tcp-reset

IpFw (FreeBSD)

Liens:

http://www.hackepedia.org/?title=Ipfw

Degringoler un tunnel 'gif' existant:

 # ifconfig gif1 destroy

Accessoirement, la creation peut ressembler a ca:

 # vi /etc/rc.local
 ...
 ifconfig gif1 create
 /usr/sbin/gifconfig gif1 212.27.33.110 212.27.36.1 up
 ifconfig gif1 10.10.0.1 10.10.0.2 netmask 255.255.255.255 up
 route add 10.b.c.d 10.10.0.2
 ...

Modifier une regle du firewall, par exemple:

 # vi /etc/ipfw.rules
 ...
 #add 00330 allow ip from 10.0.0.0/8 to any via gif1

(mise en commentaire)

Voir les regles en service:

 # ipfw list

ou

 # ipfw show

virer une regle en service.

 # ipfw delete 330

(qui correspond a la regle numero 330, bien sur) Et voila:

 # ipfw show 330
 ipfw: rule 330 does not exist

Si on a fait une erreur, on la remet comme ça:

 # ipfw add 00330 allow ip from 10.0.0.0/8 to any via gif1

Voir toutes les routes en numérique:

 # netstat -rn

Relancer le serveur (open)vpn:

 # /usr/local/etc/rc.d/openvpn.sh restart

Effacer une route:

 # route delete 10.9.0.121

Ajouter une route:

 # route add 10.9.0.121 10.10.0.2

Interface Ethernet

Liens:

http://www.linuxhomenetworking.com/wiki/index.php/Quick_HOWTO_:_Ch03_:_Linux_Networking#Changing_NIC_Speed_and_Duplex

Outils pour bidouiller l'interface Ethernet:

 # apt-get install ethtool mii-diag

Et puis:

 # mii-tool -v eth0
 eth0: link ok
  product info: vendor 00:10:18, model 23 rev 6
  basic mode:   autonegotiation enabled
  basic status: link ok
  capabilities: 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD
  advertising:  100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD

ou

 # ethtool eth0
 Settings for eth0:
        Supported ports: [ TP MII ]
        Supported link modes:   10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
        Supports auto-negotiation: Yes
        Advertised link modes:  10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
        Advertised auto-negotiation: Yes
        Speed: 10Mb/s
        Duplex: Half
        Port: MII
        PHYAD: 24
        Transceiver: internal
        Auto-negotiation: on
        Current message level: 0x00000001 (1)
        Link detected: yes

Forcer sans autonegociation:

 # ethtool -s eth0 autoneg off

Forcer vitesse:

 # ethtool -s eth0 speed 100

Forcer full duplex:

 # ethtool -s eth0 duplex full

“Reset” de la carte:

 # ethtool -r eth0

Force en 10 Mb Half Duplex:

 # mii-tool -F 10baseT-HD eth0

Full duplex:

 # mii-tool -F 10baseT-FD eth0

100 Mb Full duplex:

 # mii-tool -F 10baseTx-FD eth0

A suivre…

Plusieurs IP

Plusieurs IP pour une même interface...

On pré-suppose qu'on a 2 classes d'adresse: 192.168.0.* (la mienne) et 192.168.1.* (celle de vivi)

Suffit d'ajouter un

nom aprés le eth0

Exemple, voici la config de mon interface reseau: (Il faut editer le fichier /etc/network/interfaces )

 auto eth0
 iface eth0 inet static
 address 192.168.0.56
 netmask 255.255.255.0
 broadcast 192.168.0.255
 gateway 192.168.0.254

Et j'aimerais bien avoir une IP locale vers un autre reseau (local)… Alors j'ajoute.

 auto eth0:vivi
 iface eth0:vivi inet static
 address 192.168.1.56
 netmask 255.255.255.0
 broadcast 192.168.1.255
 #       gateway 192.168.1.254

Ensuite, je crois qu'il faut faire un truc du style:

 # /etc/init.d/networking restart

Ou peut etre:

 # ifdown eth0
 # ifup eth0

Enfin, je suis pas loin de la solution.

Et voila… j'ai une IP en 192.168.0.56, qui va accessoirement aussi vers Internet en suivant la gateway. Et j'ai aussi une IP en 192.168.1.56, qui reste sur le réseau local (et ne suit pas la gateway que j'ai mis en commentaire).

Ajouter une route pour le FreePlayer

Methode 1

Comme j'ai plusieurs Freebox, et que toutes ne fonctionnent pas egalement sur la TV, je souhaite que VLC/FreePlayer recherche la TV sur l'autre reseau (c'est clair?) Pour cela, j'ajoute (aprés la section auto eth0:vivi):

 up route add -net 212.27.38.253 netmask 255.255.255.255 gw 192.168.1.254
 down route del -net 212.27.38.253 netmask 255.255.255.255

(Traduction: Quand l'interface se lève, je crée un routage, et a l'inverse, j'efface le routage)

Un equivalent sous Windows, le routage permanent:

 route -p add 212.27.38.253 mask 255.255.255.255 192.168.1.254


Parce 212.27.38.253 correspond a l'adresse freeplayer.freebox.fr Et hop… un petit raccourci comme cela:

 wxvlc http://mafreebox.freebox.fr/freeboxtv/playlist.m3u

Et voila la TV sur l'autre Freebox (pas celle avec laquelle je surfe).

Methode 2, pour le serveur FTP

C'est quoi l'adresse du serveur du harddisk de la box ?

 $ host hd1.freebox.fr
 hd1.freebox.fr is an alias for freeboxhd1.freebox.fr.
 freeboxhd1.freebox.fr has address 212.27.40.254

Donc, il faut l'ajouter, en plus du FreePlayer… Il suffit d'ajouter un script dans /etc/network/if-up.d pour la monté du reseau, et dans /etc/network/if-down.d pour la descente.

Donc editons/creeons le fichier /etc/network/if-up.d/eth0-vivi-up :

 #!/bin/sh
 ###############################
 if [ "x$IFACE" = "xeth0:vivi" ]; then
         route add -net 212.27.38.253 netmask 255.255.255.255 gw 192.168.1.254
         route add -net 212.27.40.254 netmask 255.255.255.255 gw 192.168.1.254
 fi
 ###############################

Et ensuite le fichier /etc/network/if-down.d/eth0-vivi-down :

 #!/bin/sh
 ###############################
 if [ "x$IFACE" = "xeth0:vivi" ]; then
         route del -net 212.27.38.253 netmask 255.255.255.255
         route del -net 212.27.40.254 netmask 255.255.255.255
 fi
 ###############################

Autre version du script (en vachement mieux):

 #!/bin/sh
 [ "$IFACE" == "eth0:vivi" ] || exit 0
 IP_FBXPLAYER="212.27.38.253"
 IP_FBX1FTP="212.27.40.254"
 IP_FBX2FTP="212.27.40.253"
 GATEWAY="192.168.1.254"
 case "$MODE" in
    start)
        route add -net $IP_FBXPLAYER netmask 255.255.255.255 gw $GATEWAY
        route add -net $IP_FBX1FTP netmask 255.255.255.255 gw $GATEWAY
        route add -net $IP_FBX2FTP netmask 255.255.255.255 gw $GATEWAY
        ;;
    stop)
        route del -net $IP_FBX2FTP netmask 255.255.255.255 gw $GATEWAY
        route del -net $IP_FBX1FTP netmask 255.255.255.255 gw $GATEWAY
        route del -net $IP_FBXPLAYER netmask 255.255.255.255 gw $GATEWAY
        ;;
 esac

A copier dans /etc/if-up.d et faire ln -s ../if-up.d/le_script dans /etc/if-down.d

Et un petit coup de:

 # /etc/init.d/networking restart

Et voila, j'ai la télé via VLC et j'ai aussi un accés au serveur FTP de la Box.

IP au coeur ou IpRoute2

Lien:

Installons IpRoute2

 # apt-get install iproute

Le coeur est la commande ip

Matériels présent:

 # ip link list
 1: lo: <LOOPBACK,UP> mtu 16436 qdisc noqueue
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
 2: eth0: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 1000
    link/ether 00:50:8d:d7:ec:0c brd ff:ff:ff:ff:ff:ff
 3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop qlen 1000
    link/ieee1394 00:50:8d:00:00:d6:ec:0c brd ff:ff:ff:ff:ff:ff:ff:ff
 4: sit0: <NOARP> mtu 1480 qdisc noop
    link/sit 0.0.0.0 brd 0.0.0.0

Adresses utilisées:

 # ip addr show
 1: lo: <LOOPBACK,UP> mtu 16436 qdisc noqueue
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
 2: eth0: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 1000
    link/ether 00:50:8d:d7:ec:ff brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.53/24 brd 192.168.0.255 scope global eth0
    inet 192.168.1.53/24 brd 192.168.1.255 scope global eth0:vivi
    inet6 fe80::250:8dff:fed7:ec0c/64 scope link
       valid_lft forever preferred_lft forever
 3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop qlen 1000
    link/ieee1394 00:50:8d:00:00:d6:ec:ff brd ff:ff:ff:ff:ff:ff:ff:ff
 4: sit0: <NOARP> mtu 1480 qdisc noop
    link/sit 0.0.0.0 brd 0.0.0.0

Je découvre sit0, c'est quoi ça ?

Les routages:

 # ip route show
 212.27.40.254 via 192.168.1.254 dev eth0
 212.27.38.253 via 192.168.1.254 dev eth0
 212.27.40.253 via 192.168.1.254 dev eth0
 192.168.1.0/24 dev eth0  proto kernel  scope link  src 192.168.1.53
 192.168.0.0/24 dev eth0  proto kernel  scope link  src 192.168.0.53
 default via 192.168.1.254 dev eth0  src 192.168.1.53

ARP:

 # ip neigh show
 192.168.0.50 dev eth0 lladdr 00:10:5a:47:84:2e REACHABLE
 192.168.1.254 dev eth0 lladdr 00:07:cb:30:1b:54 DELAY

Les règles de routage:

 # ip rule list
 0:      from all lookup local
 32766:  from all lookup main
 32767:  from all lookup default

2 freebox (ou 2 gateway)

2 freebox, la mienne et celle a vivi.

Moi: 192.168.0.0/24 gw:192.168.0.254

Vivi: 192.168.1.0/24 gw:192.168.1.254

Le but est de surfer sur ma Freebox, mais de m'autoriser a me connecter a mon pc en passant par la Freebox a vivi… C'est pour le cas où il y a une panne… (ce qui n'arrive jamais!)

Mon IP sur mon réseau: 192.168.0.53

Mon IP sur le réseau à vivi: 192.168.1.53 . La config routeur de la Freebox fait un NAT d'une connexion IP sur le port 5322 vers l'IP 192.168.1.53.

Donc, la porte d'entrée a mon PC est sur le port 5322.

Nater

Nater la connexion sur le port 5322 en 22 (sshd):

 # iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 5322 -j DNAT --to 192.168.1.53:22

Router vers vivi

Ajoutons une regle pour:

 # echo 200 fbxvivi >> /etc/iproute2/rt_tables
 # ip rule add from 192.168.1.53 table fbxvivi
 # ip rule ls
 0:      from all lookup local
 32765:  from 192.168.1.53 lookup fbxvivi
 32766:  from all lookup main
 32767:  from all lookup default

Et puis la gateway:

 # ip route add default via 192.168.1.254 dev eth0 table fbxvivi
 # ip route flush cache

Un test: (a partir de mon poste en 192.168.1.53 via 192.168.1.254)

 $ telnet ip_fixe_a_vivi 5322
 Trying ip_fixe_a_vivi...
 Connected to ip_fixe_a_vivi.
 Escape character is '^]'.
 SSH-2.0-OpenSSH_4.3p2 Debian-3

Et ca marche ! Une journée a chercher dans le n'importe quoi, pour une solution relativement simple.

Verifions tous les routages:

 # ip -4 route show table all
 ...

Ou simplement ceux de la nouvelle table fbxvivi:

 # ip route show table fbxvivi
 default via 192.168.1.254 dev eth0

Sans IPTABLES

Plusieurs reseaux (plusieurs Freebox), mais pas envie d'installer “iptables” et le marquage de paquet, juste un simple routage selon l'IP visé.

  • Soit une box qui renvoit le port “www” sur l'IP 192.168.0.166
  • Soit une autre box qui renvoit sur le port “www” sur l'IP 192.168.1.166

Les 2 IP sont hébergés sur le même serveur, et sur la même interface eth0, mais comment renvoyé sur l'une ou l'autre ?

La 1er IP, “192.168.0.166” a pour gateway par défaut: “192.168.0.254” (la freebox). La 2ieme IP n'a pas de gateway par defaut ! (ca n'aurait pas bien fonctionné !)

On va lui attribuer une gateway grace a “ip”:

D'abord on edite le fichier /etc/iproute2/rt_tables pour nommer des tables (Exemple):

#
# reserved values
#
255     local
254     main
253     default
0       unspec
#
# local
#
#1      inr.ruhep
200     freebox1
201     freebox2

(En fait, freebox1 ne servira pas par la suite)

Ensuite, on defini le routage associé à la table freebox2

# ip route add default via 192.168.1.254 dev eth0 table freebox2

Composer la règle:

# ip rule add from 192.168.1.166 table freebox2
:!: ne pas ajouter dev eth0 ! et je ne sais pas pourquoi, et si c'est bien ou mal!

Et voila. Pour que ce soit activé plus vite, on vite le cache:

# ip route flush cache

Ca devrait fonctionner, comme ca, donc:

  • Ce qui vient de la freebox 1 atteind l'IP 192.168.0.166 sans probleme, et repart en utilisant la “gateway” par defaut. (voir dans /etc/network/interface )
  • Ce qui vient de la freebox 2 atteind l'IP 192.168.1.166 sans problème, et repart en utisant la “gateway” spécifier par “ip rule” .

Survivre a un reboot

Il suffit de mettre tout ce qu'on a vu (sauf le NAT) dans un script comme suit:

 #!/bin/sh
 # Activer le routage par defaut vers la fbx, pour l'ip 192.168.1.53
 [ "$IFACE" == "eth0:vivi" ] || exit 0
 test -x /sbin/ip || exit 0
 case "$MODE" in
    start)
        # Pour que ca retourne vers la box
        /sbin/ip rule add from 192.168.1.53/32 table fbxvivi
        /sbin/ip route add default via 192.168.1.254 dev eth0 table fbxvivi
        ;;
    stop)
        /sbin/ip route del default via 192.168.1.254 dev eth0 table fbxvivi
        /sbin/ip rule del from 192.168.1.53/32 table fbxvivi
        ;;
 esac

reseaux_administrations.txt · Dernière modification : 2011/11/25 11:21 de thierry