Ich habe dies auf verschiedene Arten versucht. Versuche es gerade mit pf auf Freebsd 8.2
Ich versuche, eine NAT-Lösung in ein vorhandenes Netzwerk einzufügen, die den Verkehr von einer externen IP-Adresse zu einer internen IP-Adresse an allen Ports umleitet (statisches NAT), aber ich möchte auch die Quelladresse übersetzen.
Aktuelles Netzwerk.
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
Ich möchte, dass Outsidehost in der Lage ist, 192.168.1.3 per Telnet (sp) an 10.0.0.2 zu telnet
Damit dies funktioniert, nehme ich an, dass ich die Quelle des Pakets ändern muss, wenn es em0 verlässt, oder es geht auf dem Weg zurück zu em1 verloren.
Der Ablauf geht also so:
- von außerhalb host telnet 10.0.0.2
- Quelladresse auf 192.168.1.4 ändern
- Verkehr für 10.0.0.2 auf 192.168.1.2 umleiten
- das Paket verlässt mit src 192.168.1.4, geht zu 192.168.1.2, wird dann zurück zu 192.168.1.4 gesendet, übersetzt zurück zu dem, was die Quelladresse in diesem Fall 10.0.0.1 war
Ich denke immer, dass dies mit
getan werden kannbinat und rdr, aber ich kann die Syntax nicht herausfinden.
Wie bekomme ich das hin?
Akzeptierte Antwort:
Am Ende habe ich mich für iptables unter Linux entschieden, um dies zu erreichen.
Denn die IP-Weiterleitung muss eingeschaltet sein:
echo net.ipv4.ip_forward=1 >> /etc/sysctl.conf
Und legen Sie die folgenden Regeln fest:
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.