[gelöst] Kombiniertes S- und DNAT

Gemeinsam ins Internet mit Firewall und Proxy.
Antworten
Benutzeravatar
king-crash
Beiträge: 720
Registriert: 08.08.2006 12:07:56
Lizenz eigener Beiträge: MIT Lizenz

[gelöst] Kombiniertes S- und DNAT

Beitrag von king-crash » 11.03.2019 18:29:56

Hallo,

Ich suche nach einer Möglichkeit TCP Verbindungen je nach Port transparent durch ein Gateway zu leiten. Im Grunde wie eine Art standard Portforwarding mit zusätzlicher Übersetzung der externen Adresse.
Ich versuche das zu verdeutlichen.

Netz A Netz B
Client A ------------------ Gateway G ------------------ Client B

IPs in Paket von A:
Quelle: A -> Quelle: G
Ziel: G -> Ziel: B

IPs in Antwort von B:
Quelle: B -> Quelle: G
Ziel: G -> Ziel: A

Bei einem eingehenden Paket von A ändert das Gateway die Zieladresse in B und die Quelladresse in seine Eigene.
Bei einem eingehenden Paket von B ändert das Gateway die Zieladresse in A und die Quelladresse in seine Eigene.

Ich könnte das Problem also vermutlich auch mit redir lösen, würde aber gerner netfilter dazu nehmen.
DNAT habe ich auch hinbekommen. Aber es müsste eben auch die Quelladresse geändert werden und in einer Routingtabelle hinterlegt werden.
Kann mir da jemand einen Hinweis geben?
Zuletzt geändert von king-crash am 12.03.2019 12:07:46, insgesamt 1-mal geändert.

Benutzeravatar
king-crash
Beiträge: 720
Registriert: 08.08.2006 12:07:56
Lizenz eigener Beiträge: MIT Lizenz

Re: Kombiniertes S- und DNAT

Beitrag von king-crash » 12.03.2019 12:07:05

Die Lösung scheint ein einfaches: "nft add rule nat postrouting masquerade" zu sein.
Falls noch jemand das braucht:
/usr/sbin/nft add table nat
/usr/sbin/nft add chain nat prerouting { type nat hook prerouting priority 0 \; }
/usr/sbin/nft add chain nat postrouting { type nat hook postrouting priority 100 \; }
/usr/sbin/nft add rule nat prerouting iif eth_input tcp dport { PORTs } dnat ZIEL_IP
/usr/sbin/nft add rule nat postrouting masquerade

Antworten