Iptables + interfaces virtuelles

Bonsoir tout le monde,

Cela fait plusieurs jours que je suis sur un script pour gérer iptables. Sur mon serveur, j’ai une interface (eth0) ainsi que 3 interfaces virtuelles (eth0:0, eth0:1 et eth0:2).

Je suppose que vous voyez déjà le problème : une fois mon petit script fait, je le lance et… :

Warning: weird character in interface `eth0:0' (No aliases, :, ! or *). Warning: weird character in interface `eth0:1' (No aliases, :, ! or *). Warning: weird character in interface `eth0:2' (No aliases, :, ! or *).

moi je ne l’ai pas vu venir en tout cas et j’ai beau chercher je ne trouve pas de solutions. Avez vous une idée svp?

Merci d’avance

Ce ne sont pas des interfaces virtuelles mais des alias. Tu ne peux pas faire une règle iptables avec des alias en lieu et place de nom d’interface.

Merci Fran.b pour ta réponse mais je ne comprends pas : que ce soit en cours ou au travail, on m’a toujours dit que ce sont des interfaces virtuelles. Elles ont leur propre adresse ip.

Dans ce cas, quelle est la définition d’une interface virtuelle et que dois je faire pour paramêtrer iptables?

Elles portent le nom d’une interface virtuelle mais ne sont pas des interfaces virtuelles. La meilleure preuve est que si tu modifies l’adresse MAC de l’une d’entre elles, tu les modifies toutes. Tu as des interfazces virtuelles, des vraies (cf «dummy» du noyau) mais pas pour cet usage.

Ces interfaces ne sont que des alias pour une même interface réelle (eth0) permettant à celle ci d’être associée à plusieurs adresses IP. Cela se fait au niveau du protocole IP mais pas au niveau en dessous où là il n’y a qu’une seule interface.

Tu peux jouer avec les adresses IP:

Exemple:
Ma machine porte l’IP 192.168.1.245:

totoche:/home/francois# iptables -A INPUT -p icmp -d 192.168.1.245 -j DROP totoche:/home/francois# ifconfig eth0:1 192.168.0.1 up totoche:/home/francois#

La première ligne bloque le protocole ICMP pour 192.168.1.245, la deuxième crée un alias 192.168.0.1:

[code]totoche:/home/francois# ifconfig
eth0 Link encap:Ethernet HWaddr 00:29:43:44:48:02
inet adr:192.168.1.245 Bcast:192.168.1.255 Masque:255.255.255.0
[…] collisions:0 lg file transmission:1000
RX bytes:968090620 (923.2 MiB) TX bytes:261389578 (249.2 MiB)
Interruption:29 Adresse de base:0x4000

eth0:1 Link encap:Ethernet HWaddr 00:29:43:44:48:02
inet adr:192.168.0.1 Bcast:192.168.0.255 Masque:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Interruption:29 Adresse de base:0x4000

lo Link encap:Boucle locale
inet adr:127.0.0.1 Masque:255.0.0.0
adr inet6: ::1/128 Scope:Hôte
[/code]
Note la même adresse MAC.

[code]francois@totoche:~$ ping 127.0.0.1
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.096 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.081 ms
64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.084 ms
^C
— 127.0.0.1 ping statistics —
3 packets transmitted, 3 received, 0% packet loss, time 1999ms
rtt min/avg/max/mdev = 0.081/0.087/0.096/0.006 ms
francois@totoche:~$ ping 192.168.0.1
PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data.
64 bytes from 192.168.0.1: icmp_seq=1 ttl=64 time=0.083 ms
64 bytes from 192.168.0.1: icmp_seq=2 ttl=64 time=0.054 ms
64 bytes from 192.168.0.1: icmp_seq=3 ttl=64 time=0.096 ms
^C
— 192.168.0.1 ping statistics —
3 packets transmitted, 3 received, 0% packet loss, time 2001ms
rtt min/avg/max/mdev = 0.054/0.077/0.096/0.020 ms
francois@totoche:~$ ping 192.168.1.245
PING 192.168.1.245 (192.168.1.245) 56(84) bytes of data.
^C
— 192.168.1.245 ping statistics —
4 packets transmitted, 0 received, 100% packet loss, time 3023ms

[/code]C’est la même interface mais les paquets destinés à 192.168.1.245 sont bloqués, pas ceux destinés à 192.168.0.1.

merci Fran.b. Je comprends mieux maintenant. Donc pour exemple, je transforme cette regle :

en :

c’est ça?

Ben si l’interface eth0:0 a comme IP 12.3.4.5, ce serait

(puisque là c’est un paquet a comme IP de départ 12.3.4.5.

[code]PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data.
64 bytes from 192.168.0.1: icmp_seq=1 ttl=64 time=0.424 ms
64 bytes from 192.168.0.1: icmp_seq=2 ttl=64 time=0.401 ms
^C
— 192.168.0.1 ping statistics —
2 packets transmitted, 2 received, 0% packet loss, time 1000ms
rtt min/avg/max/mdev = 0.401/0.412/0.424/0.023 ms
totoche:/tmp# iptables -A OUTPUT -p icmp -s 192.168.0.2 -j DROP
totoche:/tmp# ping 192.168.0.1
PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data.
ping: sendmsg: Operation not permitted
ping: sendmsg: Operation not permitted
^C
— 192.168.0.1 ping statistics —
2 packets transmitted, 0 received, 100% packet loss, time 999ms

totoche:/tmp# iptables -D OUTPUT -p icmp -s 192.168.0.2 -j DROP
totoche:/tmp# ping 192.168.0.1
PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data.
64 bytes from 192.168.0.1: icmp_seq=1 ttl=64 time=0.389 ms
64 bytes from 192.168.0.1: icmp_seq=2 ttl=64 time=0.484 ms
^C
— 192.168.0.1 ping statistics —
2 packets transmitted, 2 received, 0% packet loss, time 999ms
rtt min/avg/max/mdev = 0.389/0.436/0.484/0.051 ms
[/code]

Heureusement que j’ai posté mon dernier mail car j’étais encore dans l’erreur. je te remercie encore.

Bon là je pense que c’est clair. J’ai juste une question: en fait, je te posais les question car j’ai un serveur dédié chez OVH. Il y a une option permettant de créer des adresses mac virtuelles. Est il possible de les utiliser (dans le fichier interfaces pour iptables)?

Tu peux créer des interfaces dummy qui sont des sortes d’interfaces loopback avec des adresses mac adaptables mais c’est tout, tu ne peux faire deux cartes ethernet avec une seule…

merci Fran.b pour ton aide.

bonne soirée.