Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Iptables et NAT

1 réponse
Avatar
Rémy LAPLEIGE
Bonjour,

je souhaiterais utiliser IPTABLES pour faire du NAT. J'aimerais que mon
serveur WEB et FTP soit visible sur le net (par le port 80) et par le
réseau local.

Voici mon script :

#!/bin/sh
IPT="/sbin/iptables"
# Variables réseaux
ADDR_LO="127.0.0.1/32"
ADDR_LAN="192.168.0.0/24"
ADDR_DMZ="192.16.100.0/24"
# Variables DMZ
DMZ_HTTP="192.16.100.1"
DMZ_FTP="192.16.100.1"

# Initialiser le systeme
# On vide toutes les chaines
$IPT -F
$IPT -X
$IPT -t nat -F
$IPT -t nat -X
$IPT -t mangle -F
$IPT -t mangle -X

# Politique par defaut
# Table filter
$IPT -P INPUT DROP
$IPT -P OUTPUT DROP
$IPT -P FORWARD DROP
# Table nat
$IPT -t nat -P POSTROUTING ACCEPT
$IPT -t nat -P PREROUTING ACCEPT
$IPT -t nat -P OUTPUT ACCEPT

# Autoriser le localhost
$IPT -A INPUT -s $ADDR_LO -j ACCEPT
$IPT -A OUTPUT -s $ADDR_LO -j ACCEPT

# Active le forwarding
echo "1" > /proc/sys/net/ipv4/ip_forward

# Les 2 reseaux sont NATtes sur le net
$IPT -t nat -A POSTROUTING -s $ADDR_LAN -o ppp0 -j MASQUERADE
$IPT -t nat -A POSTROUTING -s $ADDR_DMZ -o ppp0 -j MASQUERADE

# On permet aux reseaux de communiquer ensemble
# Flux 1 : LAN <-> Internet (On autorise tout)
$IPT -A FORWARD -s $ADDR_LAN -o ppp0 -j ACCEPT
$IPT -A FORWARD -i ppp0 -d $ADDR_LAN -j ACCEPT

# là aucun problème cela fonctionne

# Flux 2 : LAN <-> DMZ
# HTTP
$IPT -A FORWARD -s $ADDR_LAN -d $DMZ_HTTP -p tcp --dport 80 -j ACCEPT
$IPT -A FORWARD -s $DMZ_HTTP -d $ADDR_LAN -p tcp --sport 80 -j ACCEPT

# il me manque de rajouter le ftp

# Flux 3 : DMZ <-> Internet (Je ne pense pas que tout accepter soit le
meilleur des cas niveau sécurité)
$IPT -A FORWARD -s $ADDR_DMZ -o ppp0 -j ACCEPT
$IPT -A FORWARD -i ppp0 -d $ADDR_DMZ -j ACCEPT

# NAT pour que les serveurs soit accessibles depuis internet.
# Placer les logs sur les serveurs
# Serveur WEB (visibles de partout)
$IPT -t nat -A PREROUTING -i ppp0 -p tcp --dport 80 -j DNAT
--to-destination $DMZ_HTTP:80

# Fin du script

ET c'est là que cela coince. Lorsque mes utilisateurs se connectent sur
internet, bah rien ne s'affiche si ce n'est la page du serveur WEB.

Donc je mets cette règle

$IPT -t nat -A PREROUTING -i ppp0 -p tcp --dport 180 -j DNAT
--to-destination $DMZ_HTTP:80

cependant sur internet, on ne peut joindre mon serveur web en faisant
ceci http://ip_publique:180 .... ce que j'aimerais c'est que l'on puisse
la joindre sur le port 80 en faisant simplement http://ip_publique

voila mon problème ... et autre question, cela fera-t-il pareil pour le
FTP sur les port 20/21 ?

Merci

Bonne journée

Rémy

1 réponse

Avatar
Pascal
Salut,


je souhaiterais utiliser IPTABLES pour faire du NAT. J'aimerais que mon
serveur WEB et FTP soit visible sur le net (par le port 80) et par le
réseau local.

Voici mon script :
[...]


Si ça t'intéresse, j'aurais des remarques sur ton script (et je ne suis
pas le seul, je pense). Mais pour l'heure je me contente de répondre sur
le problème que tu as exposé.

# NAT pour que les serveurs soit accessibles depuis internet.
# Serveur WEB (visibles de partout)
$IPT -t nat -A PREROUTING -i ppp0 -p tcp --dport 80 -j DNAT
--to-destination $DMZ_HTTP:80

ET c'est là que cela coince. Lorsque mes utilisateurs se connectent sur
internet, bah rien ne s'affiche si ce n'est la page du serveur WEB.


Tu veux dire que lorsqu'un utilisateur de ton réseau local veut naviguer
sur un site web distant quel qu'il soit il tombe toujours sur ton serveur
web ?

J'avoue que je ne vois pas comment c'est possible étant donné que ta
règle DNAT ne concerne que l'interface extérieure ppp0. C'est comme si la
spécification de l'interface d'entrée n'était pas prise en compte. :-

Si ppp0 a une adresse IP fixe, tu peux ajouter une correspondance sur
l'adresse de destination.

voila mon problème ... et autre question, cela fera-t-il pareil pour le
FTP sur les port 20/21 ?


Aucune idée. Par contre tu risques d'avoir des difficultés avec les
connexions ftp-data si tu n'utilises pas le suivi de connexion.

--
Pascal
Vous pouvez me tutoyer.
Piège à spam :