J'ai essayé cela de différentes manières. Actuellement en train d'essayer avec pf sur freebsd 8.2
J'essaie d'insérer une solution nat dans un réseau existant qui redirigera le trafic d'une adresse IP externe vers une adresse IP interne sur tous les ports (nat statique) mais je souhaite également traduire l'adresse source.
Réseau actuel.
hosta
192.168.1.2/24
gw
192.168.1.1/24
outsidehost
10.0.0.1/24
natbox
em0 192.168.1.3/24 (used to manage the box)
em1 10.0.0.2/24 (outside address same lan as outsidehost)
em0_alias0 192.168.1.4/24 (inside address same lan as hosta)
route 192.168.1.0/24 192.168.1.1
route 0.0.0.0 0.0.0.0 10.0.0.1
Je veux que outsidehost puisse se connecter à 192.168.1.3 par telneting(sp) à 10.0.0.2
Pour que cela fonctionne, je suppose que je devrai changer la source du paquet lorsqu'il quitte em0 ou il se perdra sur le chemin du retour vers em1.
Le flux se déroule donc comme suit :
- depuis l'hôte externe telnet 10.0.0.2
- changer l'adresse source en 192.168.1.4
- rediriger le trafic de 10.0.0.2 vers 192.168.1.2
- le paquet part avec src 192.168.1.4 va à 192.168.1.2 puis est renvoyé à 192.168.1.4 se traduit par ce que l'add source était dans ce cas 10.0.0.1
Je continue de penser que cela peut être fait avec
binat et rdr mais je n'arrive pas à comprendre la syntaxe.
Comment puis-je faire cela ?
Réponse acceptée :
J'ai fini par utiliser iptables sous Linux pour accomplir cela.
Pour cela, le transfert IP doit être activé :
echo net.ipv4.ip_forward=1 >> /etc/sysctl.conf
Et définissez les règles suivantes :
iptables -F -t nat
# flush the NAT Table.
iptables -t nat -P INPUT DROP
# set the input chain on the NAT table to DROP by default.
# This way any traffic not allowed by defining a source address gets dropped.
# If you don't provide a -s address below it will allow all hosts from anywhere
# to reach the inside address via the outside ip.
iptables -t nat -A PREROUTING -s 10.0.0.1 -d 10.0.0.2 \
-j DNAT --destination-address 192.168.1.3
# define the source and destination of the traffic allowed through.
# Change the dest address to our inside host.
iptable -t nat -A INPUT -s 192.168.0.0/24 -J ALLOW
# Drop all traffic on sourcing from inside subnet.
# This won't apply to traffic that matches the rule above
# as the source address will change in the next rule.
iptables -t nat -A POSTROUTING -d 192.168.1.3 \
-j SNAT --source-address 192.168.1.4
# here is the insert magic. Change the source address of any traffic destined
# for our inside host to our vip or owned inside address.
# This way the traffic is routed back to us at the FW.