Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

1:1 NAT

26 views
Skip to first unread message

Frank Kirschner

unread,
Apr 4, 2011, 4:29:17 AM4/4/11
to
Hallo,

ich möchte folgende Umsetzungen per IP Tables erreichen:

WAN (eth0) LAN (eth1)
192.168.0.1 <-> 10.0.0.1
192.168.0.2 <-> 10.0.0.2
192.168.0.3 <-> 10.0.0.3
usw.

10.0.0.1 soll also WAN seitig mit 192.168.0.1 "sichtbar" sein und auch
über 192.168.0.1 angesprochen werden können.

eth0 würde ich ersteinmal die IP 192.168.0.254 zuordnen und dann jeweils
ein alias

eth0:1 der IP 192.168.0.1
eth0:2 der IP 192.168.0.2
eth0:3 der IP 192.168.0.3

zuordnen. Dann per iptables für jede Umsetzung wie folgt den NAT
realisieren:

iptables -t nat -A POSTROUTING -s 192.168.0.1 -o eth1 -j SNAT --to 10.0.0.1

Würde das so funktionieren?

lg
Frank


Ansgar -59cobalt- Wiechers

unread,
Apr 4, 2011, 4:45:10 AM4/4/11
to
Frank Kirschner <147...@celebrate.de> wrote:
> ich möchte folgende Umsetzungen per IP Tables erreichen:
>
> WAN (eth0) LAN (eth1)
> 192.168.0.1 <-> 10.0.0.1
> 192.168.0.2 <-> 10.0.0.2
> 192.168.0.3 <-> 10.0.0.3
> usw.
>
> 10.0.0.1 soll also WAN seitig mit 192.168.0.1 "sichtbar" sein und auch
> über 192.168.0.1 angesprochen werden können.

192.168.0.0/16 darf auf WAN-seitig nicht verwendet werden, und im
privaten Netz musst du nicht NATen, sondern kannst einfach zwischen
192.168.0.0/16 und 10.0.0.0/8 routen.

> eth0 würde ich ersteinmal die IP 192.168.0.254 zuordnen und dann jeweils
> ein alias
>
> eth0:1 der IP 192.168.0.1
> eth0:2 der IP 192.168.0.2
> eth0:3 der IP 192.168.0.3
>
> zuordnen. Dann per iptables für jede Umsetzung wie folgt den NAT
> realisieren:
>
> iptables -t nat -A POSTROUTING -s 192.168.0.1 -o eth1 -j SNAT --to 10.0.0.1
>
> Würde das so funktionieren?

Du brauchst zusätzlich auch noch DNAT-Einträge, um die Übersetzung für
Pakete in Gegenrichtung zu machen. Aber wie gesagt: das ist gar nicht
notwendig und verkompliziert dein Setup nur unnötig.

cu
59cobalt
--
"All vulnerabilities deserve a public fear period prior to patches
becoming available."
--Jason Coombs on Bugtraq

Frank Kirschner

unread,
Apr 4, 2011, 7:31:37 AM4/4/11
to
Am 04.04.2011 10:45, schrieb Ansgar -59cobalt- Wiechers:
> Frank Kirschner<147...@celebrate.de> wrote:
>> ich möchte folgende Umsetzungen per IP Tables erreichen:
>>
>> WAN (eth0) LAN (eth1)
>> 192.168.0.1<-> 10.0.0.1
>> 192.168.0.2<-> 10.0.0.2
>> 192.168.0.3<-> 10.0.0.3
>> usw.
>>
>> 10.0.0.1 soll also WAN seitig mit 192.168.0.1 "sichtbar" sein und auch
>> über 192.168.0.1 angesprochen werden können.
>
> 192.168.0.0/16 darf auf WAN-seitig nicht verwendet werden, und im
> privaten Netz musst du nicht NATen, sondern kannst einfach zwischen
> 192.168.0.0/16 und 10.0.0.0/8 routen.

Die WANseitige IP ist nur ein Beispiel. In Wirklichkeit steht dafür ein
öffentliches Class-C Netz zur Verfügung.

>
>> eth0 würde ich ersteinmal die IP 192.168.0.254 zuordnen und dann jeweils
>> ein alias
>>
>> eth0:1 der IP 192.168.0.1
>> eth0:2 der IP 192.168.0.2
>> eth0:3 der IP 192.168.0.3
>>
>> zuordnen. Dann per iptables für jede Umsetzung wie folgt den NAT
>> realisieren:
>>
>> iptables -t nat -A POSTROUTING -s 192.168.0.1 -o eth1 -j SNAT --to 10.0.0.1
>>
>> Würde das so funktionieren?
>

> Du brauchst zusätzlich auch noch DNAT-Einträge, (...)

Demnach also noch ein

iptables -t nat -A POSTROUTING -s 10.0.0.1 -o eth0 -j DNAT --to 192.168.0.1

Wäre das dann synthaktisch richtig?
lg
Frank

Ansgar -59cobalt- Wiechers

unread,
Apr 4, 2011, 1:50:02 PM4/4/11
to

iptables -t nat -A PREROUTING -s 10.0.0.1 -o eth0 -j DNAT \
--to-destination 192.168.0.1

Und natürlich brauchst du noch passende ACCEPT-Regeln in der filter
table.

Frank Kirschner

unread,
Apr 5, 2011, 2:20:08 AM4/5/11
to
Am 04.04.2011 19:50, schrieb Ansgar -59cobalt- Wiechers:
> Frank Kirschner<147...@celebrate.de> wrote:
>> Am 04.04.2011 10:45, schrieb Ansgar -59cobalt- Wiechers:
>>> Frank Kirschner<147...@celebrate.de> wrote:
>>>> iptables -t nat -A POSTROUTING -s 192.168.0.1 -o eth1 -j SNAT --to 10.0.0.1
>>>>
>>>> Würde das so funktionieren?
>>>
>>> Du brauchst zusätzlich auch noch DNAT-Einträge, (...)
>>
>> Demnach also noch ein
>>
>> iptables -t nat -A POSTROUTING -s 10.0.0.1 -o eth0 -j DNAT --to 192.168.0.1
>
> iptables -t nat -A PREROUTING -s 10.0.0.1 -o eth0 -j DNAT \
> --to-destination 192.168.0.1

Ja stimmt, Du hast Recht - das habe ich verwechselt.

> Und natürlich brauchst du noch passende ACCEPT-Regeln in der filter
> table.

Forward läuft bei mir noch als default ACCEPT.
Sollte also funktionieren

INPUT habe ich standardmäßig abgesichert, dazu ssh Zugriff nur aus dem
LAN erlaubt.

lg
Frank

Frank Kirschner

unread,
Apr 5, 2011, 10:07:26 AM4/5/11
to
Am 05.04.2011 08:20, schrieb Frank Kirschner:
> Am 04.04.2011 19:50, schrieb Ansgar -59cobalt- Wiechers:
>> Frank Kirschner<147...@celebrate.de> wrote:
>>> Am 04.04.2011 10:45, schrieb Ansgar -59cobalt- Wiechers:
>>>> Frank Kirschner<147...@celebrate.de> wrote:
>>>>> iptables -t nat -A POSTROUTING -s 192.168.0.1 -o eth1 -j SNAT --to
>>>>> 10.0.0.1
>>>>>
>>>>> Würde das so funktionieren?
>>>>
>>>> Du brauchst zusätzlich auch noch DNAT-Einträge, (...)
>>>
>>> Demnach also noch ein
>>>
>>> iptables -t nat -A POSTROUTING -s 10.0.0.1 -o eth0 -j DNAT --to
>>> 192.168.0.1
>>
>> iptables -t nat -A PREROUTING -s 10.0.0.1 -o eth0 -j DNAT \
>> --to-destination 192.168.0.1

müßte es da nicht so heißen: -i statt -o
iptables -t nat -A PREROUTING -s 10.0.0.1 -i eth0 -j DNAT \

Ansgar -59cobalt- Wiechers

unread,
Apr 5, 2011, 1:09:19 PM4/5/11
to
Frank Kirschner <147...@celebrate.de> wrote:
>> Am 04.04.2011 19:50, schrieb Ansgar -59cobalt- Wiechers:
>>> Frank Kirschner<147...@celebrate.de> wrote:
>>>>> Frank Kirschner<147...@celebrate.de> wrote:
>>>>>> iptables -t nat -A POSTROUTING -s 192.168.0.1 -o eth1 -j SNAT --to
>>>>>> 10.0.0.1
[...]

>>>> iptables -t nat -A POSTROUTING -s 10.0.0.1 -o eth0 -j DNAT --to
>>>> 192.168.0.1
>>>
>>> iptables -t nat -A PREROUTING -s 10.0.0.1 -o eth0 -j DNAT \
>>> --to-destination 192.168.0.1
>
> müßte es da nicht so heißen: -i statt -o
> iptables -t nat -A PREROUTING -s 10.0.0.1 -i eth0 -j DNAT \
> --to-destination 192.168.0.1

Wieviele auf dem Interface eth0 eingehende Pakete haben eine
Source-Adresse 10.0.0.x? Signifikant mehr als 0?

Thomas Noll

unread,
Apr 5, 2011, 2:38:32 PM4/5/11
to
Ansgar -59cobalt- Wiechers wrote:

> Frank Kirschner <147...@celebrate.de> wrote:
>>> Am 04.04.2011 19:50, schrieb Ansgar -59cobalt- Wiechers:
>>>> Frank Kirschner<147...@celebrate.de> wrote:
>>>>>> Frank Kirschner<147...@celebrate.de> wrote:
>>>>>>> iptables -t nat -A POSTROUTING -s 192.168.0.1 -o eth1 -j SNAT --to
>>>>>>> 10.0.0.1
> [...]
>>>>> iptables -t nat -A POSTROUTING -s 10.0.0.1 -o eth0 -j DNAT --to
>>>>> 192.168.0.1
>>>>
>>>> iptables -t nat -A PREROUTING -s 10.0.0.1 -o eth0 -j DNAT \
>>>> --to-destination 192.168.0.1
>>
>> müßte es da nicht so heißen: -i statt -o
>> iptables -t nat -A PREROUTING -s 10.0.0.1 -i eth0 -j DNAT \
>> --to-destination 192.168.0.1
>
> Wieviele auf dem Interface eth0 eingehende Pakete haben eine
> Source-Adresse 10.0.0.x? Signifikant mehr als 0?

Ich habe zwar das Problem nicht verstanden, würde aber folgendes
vorschlagen:

1.)
Pakete von irgendwo erreichen 192.168.0.1 über eth0
Dann sollte vor dem Routing das Ziel umgeschrieben werden auf 10.0.0.1

2.)
Pakete von 10.0.0.1 sollen über eth0 nach irgendwo
Dann sollte nach dem Routing die Quelle umgeschrieben werden auf 192.168.0.1

Mischen von PREROUTING und outgoing-Interface oder Sourceadresse und DNAT
empfinde ich persönlich als im Bereich zwischen suspekt und geht nicht.


--
Woo Hoo Woo Hoo Hoo

frank

unread,
Apr 5, 2011, 4:15:02 PM4/5/11
to
On 5 Apr., 20:38, Thomas Noll <-_t...@web.de> wrote:
> Ansgar -59cobalt- Wiechers wrote:
> > Frank Kirschner <147...@celebrate.de> wrote:
> >>> Am 04.04.2011 19:50, schrieb Ansgar -59cobalt- Wiechers:
> >>>> Frank Kirschner<147...@celebrate.de> wrote:
> >>>>>> Frank Kirschner<147...@celebrate.de> wrote:
> >>>>>>> iptables -tnat-A POSTROUTING -s 192.168.0.1 -o eth1 -j SNAT --to
> >>>>>>> 10.0.0.1
> > [...]
> >>>>> iptables -tnat-A POSTROUTING -s 10.0.0.1 -o eth0 -j DNAT --to
> >>>>> 192.168.0.1
>
> >>>> iptables -tnat-A PREROUTING -s 10.0.0.1 -o eth0 -j DNAT \
> >>>> --to-destination 192.168.0.1
>
> >> m te es da nicht so hei en:  -i statt -o
> >> iptables -tnat-A PREROUTING -s 10.0.0.1 -i eth0 -j DNAT \

> >> --to-destination 192.168.0.1
>
> > Wieviele auf dem Interface eth0 eingehende Pakete haben eine
> > Source-Adresse 10.0.0.x? Signifikant mehr als 0?
>
> Ich habe zwar das Problem nicht verstanden, w rde aber folgendes
> vorschlagen:
>
> 1.)
> Pakete von irgendwo erreichen 192.168.0.1 ber eth0

> Dann sollte vor dem Routing das Ziel umgeschrieben werden auf 10.0.0.1
>
> 2.)
> Pakete von 10.0.0.1 sollen ber eth0 nach irgendwo

> Dann sollte nach dem Routing die Quelle umgeschrieben werden auf 192.168.0.1
>
> Mischen von PREROUTING und outgoing-Interface oder Sourceadresse und DNAT
> empfinde ich pers nlich als im Bereich zwischen suspekt und geht nicht.
>

Ich komme deswegen darauf: der Lancom 1721 Router realisiert ein N:N
Mapping (so von Lancom genannt). Dabei kann ich einer öffentlichen IP
eine IP aus dem LAN zuweisen. Ich geh davon aus, dass erst ein NAT
erfolgt und dann die Pakete ins Zielsubnetz geroutet werden. Das
möchte ich gern auf einer Linuxkiste nachbauen. Dafür suche ich die
passenden iptables Regeln.

lg
Frank

Thomas Noll

unread,
Apr 5, 2011, 5:03:04 PM4/5/11
to
frank wrote:

Na dann.
iptables -t nat -A
war schon gar nicht so schlecht.

1.) Die aus der Welt kommenden Pakete
gehen an 192.168.0.1 -d 192.168.0.1
über eth0 -i eth0
vor dem routing PREROUTING
Ziel umschreiben -j DNAT --to-destination 10.0.0.1

2.) Die in die Welt verschickten Pakete
kommen von 10.0.0.1 -s 10.0.0.1
über eth0 -o eth0
nach dem routing POSTROUTING
Quelle umschreiben -j SNAT --to-source 192.168.0.1

Juergen P. Meier

unread,
Apr 6, 2011, 1:00:10 AM4/6/11
to
Thomas Noll <-_tn...@web.de>:

> Mischen von PREROUTING und outgoing-Interface oder Sourceadresse und DNAT
> empfinde ich persönlich als im Bereich zwischen suspekt und geht nicht.

Generell gilt als Regel: DNAT in PREROUTING, SNAT in POSTROUTING, dann
klappt das im Regelfall mit dem Routing ganz automagisch.

Ansonsten muss man dafuer sorgen, dass Routing und NAT zusammenpassen.

Juergen
--
Juergen P. Meier - "This World is about to be Destroyed!"
end
If you think technology can solve your problems you don't understand
technology and you don't understand your problems. (Bruce Schneier)

Frank Kirschner

unread,
Apr 6, 2011, 3:28:50 AM4/6/11
to
Am 06.04.2011 07:00, schrieb Juergen P. Meier:
> Thomas Noll<-_tn...@web.de>:
>> Mischen von PREROUTING und outgoing-Interface oder Sourceadresse und DNAT
>> empfinde ich persönlich als im Bereich zwischen suspekt und geht nicht.
>
> Generell gilt als Regel: DNAT in PREROUTING, SNAT in POSTROUTING, dann
> klappt das im Regelfall mit dem Routing ganz automagisch.

Sehr gut erklärt. Danke.

Frank Kirschner

unread,
Apr 6, 2011, 4:09:28 AM4/6/11
to

Shell konform formuliert dann so:
iptables -t nat -A PREROUTING -d 192.168.0.1 -i eth0 -j DNAT \
--to-destination 10.0.0.1
iptables -t nat -A POSTROUTING -s 10.0.0.1 -o eth0 -j SNAT \
--to-source 192.168.0.1

Wie ist das dann mit der alias IP an eth0:1
ifconfig eth0:1 192.168.0.1 netmask 255.255.255.0 \
broadcast 192.168.0.255 up

Wird diese als eth0 im Kernel erkannt, da tcpdump ICMP Pakete auf diese
alias IP an eth0 erkennt?

Mit den oben benutzen Regeln meldet sich der Apache der Linux Kiste auf
dem genattet werden soll, wenn ich die öffentliche IP im Browser aufrufe
an statt an die IP 10.0.0.1 weiterzuleiten.

Könnte das daran liegen, dass eth0 und eth1 als Bridge br0 laufen? br0
hat eine öffentliche IP, eth2 hat auch eine öffentliche IP
Da ich eine Quad NIC habe, könnte ich aber dann das N:N Mapping mit eth2
und eth3 realisieren oder gibt es dann trotzdem das Problem mit br0?

lg und danke für die Hilfe,
Frank

Frank Kirschner

unread,
Apr 6, 2011, 5:17:57 AM4/6/11
to

Nachtrag: Ich habe jetzt eth3 eine WAN IP 192.168.0.6 gegeben und
hochgefahren. eth2 hat 10.0.0.10
Demnach auch folgende neue Regeln hinterlegt:

iptables -t nat -A PREROUTING -d 192.168.0.6 -i eth3 -j \
DNAT --to-destination 10.0.0.1
iptables -t nat -A POSTROUTING -s 10.0.0.1 -o eth3 -j \
SNAT --to-source 192.168.0.6

ping von 10.0.0.1
auf 10.0.0.10 -> OK
auf 192.168.0.6 -> OK
auf 192.168.0.10 - > geht nicht. Das ist die IP des Routers, der ins
Internet geht.

ping von 10.0.0.10 auf 192.168.0.10 -> OK

momentan ist folgende Default route hinterlegt:
default 192.168.0.10 0.0.0.0 UG 0 0 0 br0

Kann es sein, dass ich eine weitere route für eth3 anlegen muß:
0.0.0.0/24 via 192.168.0.10 dev eth3

lg
Frank


Frank Kirschner

unread,
Apr 6, 2011, 5:39:35 AM4/6/11
to

Auf 10.0.0.10 ausgeführt währen 10.0.0.1 auf 8.8.8.8 pingt:
# tcpdump src 10.0.0.1 -i eth2
11:34:16.635924 IP 10.0.0.1 > google-public-dns-a.google.com: ICMP echo
request, id 31785, seq 337, length 64
11:34:17.655741 IP 10.0.0.1 > google-public-dns-a.google.com: ICMP echo
request, id 31785, seq 338, length 64
11:34:18.675866 IP 10.0.0.1 > google-public-dns-a.google.com: ICMP echo
request, id 31785, seq 339, length 64
11:34:19.695737 IP 10.0.0.1 > google-public-dns-a.google.com: ICMP echo
request, id 31785, seq 340, length 64

# tcpdump -i eth3
--- keine Pakete kommen an ----

Warum kommen keine Pakete an eth3 an?

lg
Frank


Günter Frenz

unread,
Apr 6, 2011, 3:17:33 PM4/6/11
to
Am Wed, 06 Apr 2011 11:39:35 +0200
schrieb Frank Kirschner <147...@celebrate.de>:

Hast du denn die passenden FORWARD ACCEPT Regeln eingebaut? Darauf
wurde zwar schon mal hingewiesen, aber deine Postings lassen da Zweifel
aufkommen ;-)

Günter

0 new messages