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?
[gelöst] Kombiniertes S- und DNAT
- king-crash
- Beiträge: 742
- Registriert: 08.08.2006 12:07:56
- Lizenz eigener Beiträge: MIT Lizenz
[gelöst] Kombiniertes S- und DNAT
Zuletzt geändert von king-crash am 12.03.2019 12:07:46, insgesamt 1-mal geändert.
- king-crash
- Beiträge: 742
- Registriert: 08.08.2006 12:07:56
- Lizenz eigener Beiträge: MIT Lizenz
Re: Kombiniertes S- und DNAT
Die Lösung scheint ein einfaches: "nft add rule nat postrouting masquerade" zu sein.
Falls noch jemand das braucht:
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