[linux] interface dummy et bridge ?

interface dummy et bridge ? [linux] - Réseaux - Systèmes & Réseaux Pro

Marsh Posté le 23-11-2015 à 10:22:34    

Bonjour,
 
Tout d'abord, j'espère que c'est bien dans cette section ( vu tous les topics fermés ) que je peux poster ce message, j'ai hésité avec OS alternatif, mais comme il s'agit de réseau j'ai estimé qu'il avait sa place ici. Si je me suis trompé, n'hésitez pas à me le dire.
 
 
Afin de pouvoir héberger 2 SAMBA exclusifs sur un même serveur ( je ne vais pas rentrer dans le détail du pourquoi, ca serait trop long ), j'ai créé une interface virtuelle sur mon serveur de la manière suivante :
 
ip link add link0 type dummy
ifconfig link0 172.18.24.1 netmask 255.255.255.0
 
 
Je pensais que cette interface est complètement détachée des autres interfaces de la machine, mais en faisant un test à partir d'une machine extérieure, je me suis apercu que je peux quand même atteindre l'interface, ce qui n'est pas normal ( enfin ce n'est pas ce que je veux ).
 
 
 
Sur mon serveur, j'ai les interface suivantes :
 
2 interfaces physiques eth0/eth1 ( connectées sur un switch intégré ) , une interface bond0 , qui est un bonding de eth0 et eth1 ( en LACP ) , et enfin, 2 interfaces vlan1 et vlan20 sur bond0
 
toutes les interfaces sont en manual, sauf vlan1 qui est configuré en ip statique : 172.17.15.0/16.
 
sur mon serveur, j'ai examiné les routes, il n'y a rien d'autre que :  
 
root@debian:~# route -n
Table de routage IP du noyau
Destination     Passerelle      Genmask         Indic Metric Ref    Use Iface
172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 vlan1
172.18.24.0     0.0.0.0         255.255.255.0   U     0      0        0 link0
224.0.0.0       0.0.0.0         240.0.0.0       U     0      0        0 vlan1
 
iptables est configuré par défaut, pas de routage nat. Pas de ipforwarding non plus ( cat /proc/sys/net/ipv4/ip_forward -> 0 )
 
Pourtant, quand je connecte une machine distante sur le réseau, avec comme ip par exemple 172.17.1.1/16 :  
 - si je n'ai pas de route sur cette machine :  
        * ping 172.17.15.0 répond ( normal )
        * ping 172.18.24.1 ne répond pas ( normal )
 - si je crée la route suivante : route add default gw 172.17.15.0 dev eth0  
        * ping 172.17.15.0 répond ( normal )  
        * ping 172.18.24.1 répond ( PAS normal )
 
c'est comme si mon serveur routait les accès vers mon link0 dummy. Cela vient peut être du fait qu'une interface dummy est forcément bridgée à une interface physique ? Mon but était simplement de créer une interface virtuelle distincte.
 
Merci d'avance  :jap:  

Reply

Marsh Posté le 23-11-2015 à 10:22:34   

Reply

Marsh Posté le 23-11-2015 à 10:33:31    

moi ça m'a l'air normal. Ta machine reçoit un paquet à destination d'une adresse IP qu'elle a, donc elle le traite (la table de routage est propre à un système, pas à une interface physique).

 

Suivant ce que tu veux faire exactement tu peux t'en sortir avec une bête règle iptables, ou peut-être quelque chose de plus compliqué comme une seconde instance de routage liée à une interface IP spécifique.

 

Et attention avec les termes employés, on parle de bridge pour des interfaces ethernet et ton interface dummy est une interface IP.


Message édité par Misssardonik le 23-11-2015 à 10:35:05

---------------
Que va-t-il se passer cette gelgamar ? vous le découvrirez janamont à 20h
Reply

Marsh Posté le 23-11-2015 à 11:15:17    

Bonjour,
 
Merci pour ta réponse.
 
Je comprends que je ne maitrise pas encore certains concepts réseaux. Je pensais que les interfaces ( IP ) d'une machine étaient séparées, et qu'elles ne pouvaient pas être atteintes sans mettre en place des règles de routages spécifiques.
 
Par exemple ( je répète l'exemple précédent en simplifié ) :
 
machine1 :  
  eth0 : connecté sur un LAN1 en 172.17.0.0/16 , IP : 172.17.0.1
  eth1 : connecté sur un LAN2 en 172.18.0.0/16 , IP : 172.18.0.1  
 
 
Sur le LAN1 , j'ai une autre machine ( machine2 ) , par exemple en 172.17.0.2 :  
  - ping 172.17.0.1 : fonctionne
  - ping 172.18.0.1 : ne fonctionne pas
 
Si maintenant, je crée la route par défaut route add default gw 172.17.0.1 dev eth0  
 - ping 172.17.0.1 : fonctionne
 - ping 172.18.0.1 : fonctionne aussi ?
 - par contre, ping 172.18.0.2 ( étant l'adresse IP d'une machine lambda - machine3 -  sur le réseau LAN2 ) ne fonctionne pas.
 
si j'active du routage en faisant par exemple ( il y a d'autres facons ) :
  - echo "1" > /proc/sys/net/ipv4/ip_forward  
  - iptables -t nat -A POSTROUTING -j MASQUERADE -o eth1
 
le ping 172.18.0.2 fonctionne.
 
Bref, je pensais qu'il fallait activer le routage pour voir LAN2 y compris l'ip de l'interface par laquelle je passe ( ici eth1/172.18.0.1 ) mais apparemment non, dès lors que machine1 est déclarée ( sur machine2 ) en tant que passerelle par défaut, je peux voir toutes les interfaces de machine1 depuis machine2 ? C'est bien ca ? Ce qui explique donc pourquoi je vois link0 dans mon premier exemple.
 
 
 
Pour ta 3eme phrase, exact, il faut que je fasse attention aux termes employés. dummy est bien une interface IP. Par contre, je ne sais pas à quelle interface ethernet elle est rattachée. Quand je fais un ip link show, j'obtiens ca :  
 
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN mode DEFAULT
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0 state UP mode DEFAULT qlen 10000
    link/ether 00:e0:4b:42:c0:d3 brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0 state UP mode DEFAULT qlen 10000
    link/ether 00:e0:4b:42:c0:d3 brd ff:ff:ff:ff:ff:ff
4: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT
    link/ether 00:e0:4b:42:c0:d3 brd ff:ff:ff:ff:ff:ff
5: vlan1@bond0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT
    link/ether 00:e0:4b:42:c0:d3 brd ff:ff:ff:ff:ff:ff
7: dummy0: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT
    link/ether 62:be:0c:aa:36:2f brd ff:ff:ff:ff:ff:ff
9: link0: <BROADCAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN mode DEFAULT
    link/ether 56:a3:d5:69:6c:30 brd ff:ff:ff:ff:ff:ff
10: vlan20@bond0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT
    link/ether 00:e0:4b:42:c0:d3 brd ff:ff:ff:ff:ff:ff
 
je ne sais pas d'où vient 56:a3:d5:69:6c:30 , ni 62:be:0c:aa:36:2f ( il y dummy0 qui s'est créé automatiquement quand j'ai créé link0 , je ne sais pas pourquoi ).Peut être lorsqu'on crée une interface IP dummy avec la commande "ip" , une interface ethernet virtuelle est créée , et une adresse ethernet "aléatoire" est attribuée à cette interface ? D'ailleurs, je ne connais pas la commande qui permet de lister les interfaces ethernet, si elle existe. ( juste pour info, eth0 et eth1 ont la même MAC, le serveur nous est livré comme ça, je ne sais pas quels impacts cela peut avoir, mais cela m'a toujours interloqué  )
 
 
 

Reply

Marsh Posté le 23-11-2015 à 12:04:45    

xilebo a écrit :


Bref, je pensais qu'il fallait activer le routage pour voir LAN2 y compris l'ip de l'interface par laquelle je passe ( ici eth1/172.18.0.1 ) mais apparemment non, dès lors que machine1 est déclarée ( sur machine2 ) en tant que passerelle par défaut, je peux voir toutes les interfaces de machine1 depuis machine2 ? C'est bien ca ? Ce qui explique donc pourquoi je vois link0 dans mon premier exemple.


 
oui tant que ton paquet arrive jusqu'à la machine c'est bon. Activer le routage ne sert que si la machine doit faire office de routeur, ie. doit traiter des paquets qui ne lui sont pas destinés (et donc les transférer vers le routeur approprié, déterminé par la table de routage).
 
 
 

xilebo a écrit :


Pour ta 3eme phrase, exact, il faut que je fasse attention aux termes employés. dummy est bien une interface IP. Par contre, je ne sais pas à quelle interface ethernet elle est rattachée. Quand je fais un ip link show, j'obtiens ca :  
 
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN mode DEFAULT
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0 state UP mode DEFAULT qlen 10000
    link/ether 00:e0:4b:42:c0:d3 brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0 state UP mode DEFAULT qlen 10000
    link/ether 00:e0:4b:42:c0:d3 brd ff:ff:ff:ff:ff:ff
4: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT
    link/ether 00:e0:4b:42:c0:d3 brd ff:ff:ff:ff:ff:ff
5: vlan1@bond0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT
    link/ether 00:e0:4b:42:c0:d3 brd ff:ff:ff:ff:ff:ff
7: dummy0: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT
    link/ether 62:be:0c:aa:36:2f brd ff:ff:ff:ff:ff:ff
9: link0: <BROADCAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN mode DEFAULT
    link/ether 56:a3:d5:69:6c:30 brd ff:ff:ff:ff:ff:ff
10: vlan20@bond0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT
    link/ether 00:e0:4b:42:c0:d3 brd ff:ff:ff:ff:ff:ff
 
je ne sais pas d'où vient 56:a3:d5:69:6c:30 , ni 62:be:0c:aa:36:2f ( il y dummy0 qui s'est créé automatiquement quand j'ai créé link0 , je ne sais pas pourquoi ).Peut être lorsqu'on crée une interface IP dummy avec la commande "ip" , une interface ethernet virtuelle est créée , et une adresse ethernet "aléatoire" est attribuée à cette interface ? D'ailleurs, je ne connais pas la commande qui permet de lister les interfaces ethernet, si elle existe. ( juste pour info, eth0 et eth1 ont la même MAC, le serveur nous est livré comme ça, je ne sais pas quels impacts cela peut avoir, mais cela m'a toujours interloqué  )


 
les interfaces loopback ne sont pas liées à une interface physique particulière en effet. C'est une caractéristique qui est intéressante si tu veux que ta machine soit joignable par cette adresse IP même si l'une ou l'autre interface physique est éteinte. Une adresse MAC virtuelle est créée automatiquement, pour des raisons de compatibilité je suppose.
Pour lister les insterfaces ethernet il y a ethtool, ou mii-tool.


---------------
Que va-t-il se passer cette gelgamar ? vous le découvrirez janamont à 20h
Reply

Marsh Posté le 23-11-2015 à 13:29:24    

Merci pour ces éclaircissements :)
 
J'en profite pour ajouter une dernière question : les interfaces réseaux sont créées actuellement sur mon serveur via le script "networking" qui se sert apparemment des commandes ifup/ifdown/ifconfig. Or, je souhaiterai créer mon interface link0 via le script "networking" également ( vu que c'est le script standard qui gère le réseau, je trouve ça plus propre de tout faire via ce script ). Est-il possible de créer l'interface avec les commandes ifup/ifdown/ifconfig ? Ou bien est-ce possible de rajouter des lignes dans le fichier de config qui seraient utilisées avec la commande ip et non if* ? Ou encore si ca n'est pas possible, je suppose que je vais devoir écrire mon propre script qui démarrera en plus de ( et après ) networking ?
 

Reply

Marsh Posté le 23-11-2015 à 13:44:17    

le fichier interfaces ne te va pas ?


---------------
Que va-t-il se passer cette gelgamar ? vous le découvrirez janamont à 20h
Reply

Marsh Posté le 23-11-2015 à 15:55:49    

Misssardonik a écrit :

le fichier interfaces ne te va pas ?


 
 
si , ca me convient, mais je ne sais pas comment rajouter une interface dummy
 
Ajouter juste cela :
 


auto link1
        iface link1 inet static
        address 172.18.24.1
        netmask 255.255.0.0


 
ne fonctionne pas. Je pense qu'il manque quelque chose, mais je n'ai pas trouvé la syntaxe , par exemple en tapant man interfaces

Reply

Marsh Posté le 23-11-2015 à 15:57:28    

mon fichier config complet pour info :  
 


auto eth0
 
iface eth0 inet manual
        bond-master bond0
        post-up /sbin/ethtool -G eth0 rx 4096 tx 4096 || /bin/true
        post-up /sbin/ifconfig eth0 txqueuelen 10000
 
 
auto eth1
iface eth1 inet manual
        bond-master bond0
        post-up /sbin/ethtool -G eth1 rx 4096 tx 4096 || /bin/true
        post-up /sbin/ifconfig eth1 txqueuelen 10000
 
auto bond0
 
iface bond0 inet manual
 
bond-mode 802.3ad
bond-miimon 100
bond-lacp-rate 1
bond slaves eth0 eth1
 
 
auto vlan1
 
        iface vlan1 inet static
        address 172.17.15.0
        netmask 255.255.0.0
        vlan_raw_device bond0
 
        up route add -net 224.0.0.0 netmask 240.0.0.0 dev vlan1
 
 
auto vlan20
        iface vlan20 inet dhcp
        vlan_raw_device bond0
 
auto link1
        iface link1 inet static
        address 172.18.24.1
        netmask 255.255.255.0

Reply

Marsh Posté le 23-11-2015 à 16:30:48    

ok j'ai compris.
 
Le fichier interfaces est restrictif, et pour différencier les interfaces de tel ou tel type, il faut les nommer explicitement. Par exemple, pour faire une interface VLAN dont le vlan id est 17, il faut obligatoirement l'appeler vlan17 dans ce fichier.
 
Pour les interfaces dummy, c'est pareil, je dois donc appeler l'interface dummy0.
 
avec la commande ip à la main, je peux mettre le nom que je veux ( que ce soit une interface dummy, ou une interface vlan ).
 

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed