loens2
Goto Top

Netzwerkadapter IP anzeigen nach NFtables NAT

Hallo.

Mein NAT Server hat ein interface mit 2 IPs (172.24.0.11 und 172.24.0.11). Die Anfragen an diese IP's werden per NAT über ein anderes Interface an den Destination Host geroutet. Mein Problem besteht darin, dass ich nach einem NFtables NAT auf dem Destination Host nicht die Source IP der Interfaces angezeigt bekomme, die ich brauche. Hier mal meine Config:

table inet nat {
        chain postrouting {
                type nat hook postrouting priority srcnat; policy accept;
                #masquerade
                ip saddr 172.24.0.11/24 oif "enp1s0" snat to 172.20.1.2  
                ip saddr 172.24.0.12/24 oif "enp1s0" snat to 172.20.1.2  
        }

        chain prerouting {
                type nat hook prerouting priority dstnat; policy accept;
                iif enp1s0 ip daddr 172.24.0.11 dnat 172.20.1.2
                iif enp1s0 ip daddr 172.24.0.12 dnat 172.20.1.2
        }
}

Mit Masquerade wird immer die Interface IP des Ausgehenden Netzwerks angezeigt, welche für mich irrelevant ist. Die config, wie ich sie jetzt habe führt dazu, dass die Quellen der Eingangs IPs als Quelle am Zielserver angezeigt werden, was für mich ebenso irrelevant ist. Was ich brauche ist, dass wenn eine Anfrage über die 172.24.0.11 reinkommt diese IP als Quelle an Zielserver angezeigt wird. Genau so mit der 172.24.0.11. Ich benötige diese Etwas spezielle Config, da die Software auf dem Zielserver unterschiedliche Antworten auf Basis der Quellenadresse liefern kann. Vielen Dank in Vorraus!

LG Leo

Content-ID: 7989804758

Url: https://administrator.de/contentid/7989804758

Ausgedruckt am: 19.11.2024 um 03:11 Uhr

aqui
aqui 30.07.2023 aktualisiert um 15:26:12 Uhr
Goto Top
Deine Syntax ist falsch in der Postrouting Chain. Du gibst dort im Ggensatz zur Prerouting Chain Hostadressen an, die prinzipbedingt ja immer einen 32er Prefix haben, versiehst diese aber mit einem 24er Netz Prefix. Das ist so nicht vorgesehen denn du meinst ja dedizierte Hosts und kein Netzwerk.
https://wiki.nftables.org/wiki-nftables/index.php/Performing_Network_Add ...

Allerdings ist das ganze Konzept aus TCP/IP Sicht logisch sehr fragwürdig und vermutlich unterliegst du hier einem fatalen Denkfehler?! 🤔
Du weist 2 physisch getrennten IP Absenderadressen mit einmal eine gemeinsame zu, was ohne PAT (Masquerading) IP technisch ja gar nicht geht. Ebenso beim dnat.
Bei statischen 1:1 SNAT und DNAT musst du aber auch immer separate IPs pro Host verwenden. Wie anders sollte der Traffic und die Wegefindung sonst eindeutig sein??

Was du machen willst ist vermutlich PAT auf eine zentrale IP und das geht nur mit Masquerading weil so durch die Verwendung unterschiedlicher Ports bei einer singulären IP wieder fehlerfrei der Traffic für die 2 (oder mehr) Ursprungssysteme separiert werden kann.
Also eher sowas wie:
table ip nat {

        define PAT_HOSTS = {
        172.24.0.11, 172.24.0.12
        }
        chain postrouting {
                type nat hook postrouting priority 100; policy accept;
                ip saddr $PAT_HOSTS oifname "enp1so" masquerade
        } 
} 
tcpdump hilft dir beim Erkennen der verwendeten IP Adressen.
LOENS2
Lösung LOENS2 06.08.2023 um 14:37:05 Uhr
Goto Top
@aqui

Allerdings ist das ganze Konzept aus TCP/IP Sicht logisch sehr fragwürdig und vermutlich unterliegst du hier einem fatalen Denkfehler?! 🤔

Absolut richtig erkannt. Da habe ich doch glatt vergessen, wie 1:1 NAT funktioniert...

Mit :
table ip nat {

        define PAT_HOSTS = {
        172.24.0.11, 172.24.0.12
        }

        chain postrouting {
                type nat hook postrouting priority 100; policy accept;
                ip saddr $PAT_HOSTS oifname "enp1so" masquerade  
        } 

        chain prerouting {
                type nat hook prerouting priority dstnat; policy accept;
                iif enp1s0 ip daddr 172.24.0.11 dnat 172.20.1.2
                iif enp1s0 ip daddr 172.24.0.12 dnat 172.20.1.3
        }
}

Hat alles funktioniert. Vielen Dank!

LG Leo
aqui
aqui 06.08.2023 um 14:47:09 Uhr
Goto Top
👍🏻 👏