Besoin d'un coup de pouce - iptables (expert requis)

Résolu/Fermé
murmures1530 Messages postés 16 Date d'inscription samedi 4 août 2012 Statut Membre Dernière intervention 25 novembre 2016 - 23 juin 2015 à 14:16
murmures1530 Messages postés 16 Date d'inscription samedi 4 août 2012 Statut Membre Dernière intervention 25 novembre 2016 - 23 juin 2015 à 15:50
Bonjour,

Je vais essayer de faire au plus simple car l'architecture réseau de mon FAI est assez spéciale;

Mon fournisseur d'accès à Internet fourni une passerelle Internet. Ce n'est pas une connexion Internet type pppoe, ce n'est pas un modem! La passerelle fourni un accès direct à Internet à l'appareil qui est branché sur le port WAN.

Cette passerelle Internet monopolise la prise ethernet 1 de mon serveur (eth1)
Grace à cette passerelle, mon serveur est relié à Internet avec une IPv4 statique fournie par le FAI.

Mon serveur a un second port ethernet (eth0). Sur ce port, j'ai isc-dhcp qui fourni aux ordinateurs et divers appareils présents sur le réseau une adresse IPv4 locale.

J'utilise le script suivant pour fournir Internet au réseau local (FORWARD et POSTROUTING)

#!/bin/bash

## Activation du forwarding au niveau du kernel
echo 1 > /proc/sys/net/ipv4/ip_forward

## On log pas les packets
echo 0 > /proc/sys/net/ipv4/conf/all/log_martians

iptables -A FORWARD -o eth1 -i eth0 -s 172.17.64.0/24 -m conntrack --ctstate NEW -j ACCEPT
iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -F POSTROUTING
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE



## Activation du forwarding au niveau d'iptables
#iptables -P FORWARD ACCEPT

#iptables -t nat -A POSTROUTING -j MASQUERADE
#iptables -t nat -A POSTROUTING -s 172.17.64.0/24 -o eth0 -j MASQUERADE


Jusque là, tout va bien. Le réseau local a Internet et le serveur aussi.

Le problème c'est que ce serveur (qui fourni Internet au réseau) n'est pas un dédié. MySQL, Apache et Dovecot/POSTFIX tournent sur leurs propre serveurs- Je dois donc natter certains ports entrants de ce serveur sur un autre serveur du réseau local.

J'ai épluché des centaines de pages en anglais/français mais rien à faire, ça ne fonctionne pas.

Mon script pour natter le port 80 du serveur Internet sur le port 80 du serveur Apache

#!/bin/bash

echo 1 > /proc/sys/net/ipv4/ip_forward

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 172.17.64.101:80

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE



Ce script a pour conséquence que toute page Internet ouverte (peut importe l'adresse), affiche mon site.


Une idée de ce qui cloche?

2 réponses

Torpix Messages postés 510 Date d'inscription samedi 29 octobre 2011 Statut Membre Dernière intervention 15 mai 2020 130
Modifié par Torpix le 23/06/2015 à 15:00
Bonjour ,

Premiere chose, je ne comprend pas bien ta ligne
"iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 172.17.64.101:80"

Pourquoi rajoute tu :80 a la fin, sachant que tu as deja mis le port de destination ? Enleve deja le port a la fin, je pense que ca ne fonctionne pas pour l'instant.

Apres, je te conseille de faire un tableaux des flux avec ton serveur, pour savoir exactement quels flux entrent et sortent (https, ftp, http ...), et de faire tes iptables nat en consequences pour ne pas tout autoriser.

Ton serveur est dans un DMZ ou dans un réseau séparé de ton réseau local ? Si ce n'est pas le cas, regarde si tu peux le faire, pour filtrer les paquets, c'est plus simple

Petit site sympa
https://inetdoc.net/guides/iptables-tutorial/dnattarget.html
1
murmures1530 Messages postés 16 Date d'inscription samedi 4 août 2012 Statut Membre Dernière intervention 25 novembre 2016
23 juin 2015 à 15:50
Merci pour ta réponse,

Je ne suis jamais tombé sur ton site malgré mes recherches... et pourtant j'ai cherché!

En fait, je prenais le problème à l'envers. Grace à ton site, j'ai trouvé mon bonheur;


#!/bin/bash

## Adresse IP Internet ou passerelle
WAN_IP=123.45.67.89

echo 1 > /proc/sys/net/ipv4/ip_forward ; echo 1 > /proc/sys/net/ipv4/tcp_syncookies

iptables -P FORWARD ACCEPT

## Dévier le trafic entrant du port 80 en tcp sur l'adresse IP 172.17.64.101
iptables -t nat -A PREROUTING -p tcp -d $WAN_IP --dport 80 -j DNAT --to-destination 172.17.64.101
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
0