VM proxmox qui n'arrive pinger le réseau externe au proxmox et internet Iptables pose problème

Salut je n’arrive pas a résoudre mon probleme. Ma vm ne peut pas pinger google ou 8.8.8.8 ou ma passerelle externe 192.168.0.1

Voila la con VM
fichier resolv.conf

nameserver 192.168.0.100 
nameserver 8.8.8.8

interfaces

auto eth0
iface eth0 inet static
        address 172.16.2.2
        netmask 255.255.255.0
        gateway 172.16.2.1

Configuration du proxmox

auto lo
iface lo inet loopback

iface enp0s25 inet manual

auto vmbr0
iface vmbr0 inet static
        address  192.168.0.100
        netmask  255.255.255.0
        gateway  192.168.0.1
        bridge-ports enp0s25
        bridge-stp off
        bridge-fd 0

auto vmbr4
iface vmbr4 inet static
        address  172.16.2.1
        netmask  255.255.255.0
        bridge-ports none
        bridge-stp off
        bridge-fd 0
        post-up iptables -t nat -A POSTROUTING -s '172.16.2.0/24' -o vmbr0 -j MASQUERADE
        post-down iptables -t nat -D POSTROUTING -s '172.16.2.0/24' -o vmbr0 -j MASQUERADE

resolv.conf du proxmox

8.8.8.8

Regles iptables

#Flush
iptables -F
iptables -t nat -F
iptables -X

#police par defaut
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
iptables -I INPUT -i lo -j ACCEPT
iptables -I OUTPUT -o lo -j ACCEPT

#ICMP
iptables -A INPUT -i vmbr0 -p icmp -j ACCEPT
iptables -A OUTPUT -o vmbr0 -p icmp -j ACCEPT

#ssh
iptables -A INPUT -i vmbr0 -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -o vmbr0 -p tcp --sport 22 -m state --state ESTABLISHED,RELATED -j ACCEPT

#update
iptables -A OUTPUT -o vmbr0 -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -i vmbr0 -p tcp --sport 443 -m state --state ESTABLISHED,RELATED -j ACCEPT

# dns
iptables -A OUTPUT -o vmbr0 -p udp --dport 53 -j ACCEPT
iptables -A OUTPUT -o vmbr0 -p tcp --dport 53 -j ACCEPT
iptables -A INPUT -i vmbr0 -p udp --sport 53 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i vmbr0 -p tcp --sport 53 -m state --state ESTABLISHED,RELATED -j ACCEPT

# proxmox panel
iptables -A INPUT -i vmbr0 -p tcp --dport 8006 -j ACCEPT
iptables -A OUTPUT -o vmbr0 -p tcp --sport 8006 -m state --state ESTABLISHED,RELATED -j ACCEPT

route du proxmox

default via 192.168.0.1 dev vmbr0 onlink
172.16.2.0/24 dev vmbr4 proto kernel scope link src 172.16.2.1
192.168.0.0/24 dev vmbr0 proto kernel scope link src 192.168.0.100

J’ai d’abord autoriser icmp pour ping de VM vers Proxmox en ajoutant ceci

iptables -A INPUT -i vmbr4 -p icmp -j ACCEPT
iptables -A OUTPUT -o vmbr4 -p icmp -j ACCEPT

Ensuite j’ai tenter d’autoriser le DNS mais ça na pas marché normalemnt si le nat est autorisé j’ai pas besoin de faire cela mais j’ai essayé pour voir

iptables -A INPUT -i vmbr4 -p tcp -s 172.16.2.0/24 --dport 53 -j ACCEPT
iptables -A INPUT -i vmbr4 -p udp -s 172.16.2.0/24 --dport 53 -j ACCEPT
iptables -A OUTPUT -i vmbr4 -p udp --sport 53 --j ACCEPT
iptables -A OUTPUT -i vmbr4 -p tcp --sport 53 --j ACCEPT

Je ne comprends pas pourquoi ca bloque au niveau d’Iptables. Ou sinon je ne vois pas d’ou ca peut venir.
Merci par avance

Bonjour,

Avant de commencer à faire des règles iptables, il serait bon de voir si ça fonctionne sans rien. J’entends par là sans filtrage, simplement avec cette règle:

## Allow VM to WAN
iptables -t nat -A POSTROUTING -o vmbr0 -s 172.16.2.0/24 ! -d 172.16.2.0/24 -j MASQUERADE

Autre chose, est-ce que l’ipforwarding est activé? Pour le savoir:

root@inios:~# sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1

Ensuite, est-ce que sur la VM tu as bien mis l’interface vmbr4 et non vmbr0?
Je trouve ton adresse locale, 172.16.2.0/24, bien crado. Tu fais soit du B (/16) soit du C (/24), mais les hybridations, c’est moches.

C’est normal qu’il n’y ai pas de gateway ?

Je suppose que oui, la mienne n’en comporte pas non plus:

auto vmbr7
iface vmbr7 inet static
        address  192.168.7.254
        netmask  255.255.255.0
        post-up sysctl -w net.ipv6.conf.$IFACE.disable_ipv6=1
        bridge_ports none
        bridge_stp off
        bridge_fd 0

Par contre effectivement, faut penser à mettre cette IP en tant que passerelle dans la VM (sa conf: 172.16.2.1).

Enfin de toute façon, cette conf’ est crado ; merci OVH.

Ca fonctionne sans les regles iptables de plus la regle nat est active par post up de l’interface vmbr4

post-up iptables -t nat -A POSTROUTING -s '172.16.2.0/24' -o vmbr0 -j MASQUERADE

je n’ai juste pas mis l’option !d mais ça fonctionne j’arrive à pinger google.
L’ip forwarding est activé. j’ai modifié sysctl.conf pour qu’il soit permanent
Oui je veux bien que ça soit crado mais les notions de classes c’est toi qui les gère comme tu veut mais oui on pourrait faire plus propre mais ça changera pas le problème

@ mattotop
oui pas de gateway c’est les conf que j’ai trouvé sur d’autres tuto proxmox que j’ai regardé.

Ah, d’accord… bon courage !

Enfin je voulais dire que ca pas d’importance les classes mais oui c’est crado
En tout cas merci pour ton aide
:wink::wink:

Une piste pourrait se trouver dans le fichier de configuration d’iptables. La suppression de toutes les règles précédentes supprime probablement celle du post-up.

J’avais déja testé sans post up mais ca n’avait pas rien changé par contre en rajoutant ces règles

iptables -A FORWARD -i vmbr4 -o vmbr0 -j ACCEPT
iptables -A FORWARD -i vmbr0 -o vmbr4 -m state --state RELATED,ESTABLISHED -j ACCEPT

Ca marche il semblerait lorsqu’on nat et qu’il y une politique de DROP on fait du FORWARD, j’essaie encore de comprendre ca me parait encore abstrait. Pourquoi faire du forward alors que si je fais du nat c’est comme l’hote qui fait la requete j’ai encore du mal

Je parlais de ça:

je confirme lorsque tu as une politque DROP dans FORWARD tu est obligé d’autorise le traffic
https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/4/html/Security_Guide/s1-firewall-ipt-fwd.html
Pour moi c’est résolu.
Merci pour ton aide et autres bien sur en espérant que ca serve à d’autres

Que retourne la commande sysctl net.ipv4.ip_forward net.ipv6.conf.all.forwarding sur l’hôte Proxmox ?

L’ip forwarding est activé. j’ai modifié sysctl.conf pour qu’il soit permanent

net.ipv4.ip_forward = 1
net.ipv6.conf.all.forwarding = 0
pas activé sur ipv6 on verra si besoin