====== IPv6 ====== Proxy NDP ipv6: http://linux-attitude.fr/post/proxy-ndp-ipv6 ====== Bonding ====== Liens: *http://linux-attitude.fr/post/aggregation-de-lien *http://linux.developpez.com/bonding/ *http://etbe.coker.com.au/2007/08/13/ethernet-bonding-on-debian-etch/ *http://rd.citic74.fr/repository/reseau/etherchannel.pdf Switchs: *http://www.cisco.com/en/US/tech/tk389/tk213/technologies_configuration_example09186a0080094470.shtml *http://www.cisco.com/en/US/products/hw/switches/ps5023/products_configuration_example09186a00806cb982.shtml 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 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 #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: *http://linux-attitude.fr/post/iproute2 *http://linux-ip.net/html/tools-ip-neighbor.html 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: -l'équipement réseau mal configuré -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 -i 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= # ------------- Comme on n'a mis **''noauto''**, on va mounter ainsi: # mount /mnt/vivi/music Et on devra le faire a chaque reboot... ====== nfs ====== Liens: * http://formation-debian.via.ecp.fr/ch37.html * IPTABLES et NFS: http://www.cyberciti.biz/faq/centos-fedora-rhel-iptables-open-nfs-server-ports/ * IPTABLES et NFS: http://wiki.debian.org/SecuringNFS ===== 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: (droits) (droits) ou (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'' : :/ 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= :///itunes_music videos -fstype=cifs,ro,credentials= :///youtube_vod photos -fstype=cifs,ro,credentials= :///myphotos Où est un fichier, protégé, contenant: username=vivi password= Et eventuellement : workgroup= Et où est l'ip du poste (et __non pas__ son nom ou fqn). | :!: Bien faire précéder le 'path' par **'':''** | Et aprés un **''/etc/init.d/autofs restart|reload''** ... $ ls /mnt/vivi music photos videos Et bien sur: $ ls /mnt/vivi/music franck-mickael johnny-halliday michel-sardou patrick-bruel ====== 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' , et eth1 (LAN) a eth0 (WAN) : # mailsnarf -i eth1 "" 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 ------------------------------------------------------------ Client connecting to , 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 -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 **h**ard**d**isk 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: *[[http://byfunfr.free.fr/ftp/linux/lartc.pdf|HOWTO du routage avancé et du contrôle de trafic sous Linux]] *http://www-l2ti.univ-paris13.fr/~fourmaux/stages/routeurlinux/iproute2.htm Installons IpRoute2 # apt-get install iproute Le coeur est la commande **ip** Matériels présent: # ip link list 1: lo: mtu 16436 qdisc noqueue link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: eth0: mtu 1500 qdisc pfifo_fast qlen 1000 link/ether 00:50:8d:d7:ec:0c brd ff:ff:ff:ff:ff:ff 3: eth1: 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: mtu 1480 qdisc noop link/sit 0.0.0.0 brd 0.0.0.0 Adresses utilisées: # ip addr show 1: lo: 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: 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: 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: 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 ----