Leiten Sie den lokalen Port über die Bridge auf die im Internet freigegebene statische IP um

Ich habe mein Kabelmodem (10.0.0.1) an meinen iMac (10.0.0.36) und meinen iMac (10.0.0.36) mit einer (bridge100 192.168.2.1) Internet Shared IP an meinen Debian-Rechner (192.168.2.34) und alles davon funktioniert einwandfrei. Ich möchte jetzt Port 80 aus dem Internet über die Bridge auf meinem iMac auf meinen Debian-Rechner weiterleiten ...

10.0.0.1:80 <-> 10.0.0.36:8080 <-> 192.168.2.1:8080 <-> 192.168.2.34:80

Ich habe den folgenden Link gefunden , der mich zu führte

rdr on bridge100 inet proto tcp from any to 10.0.0.36 port = 8080 -> 192.168.2.34 port 80

Es funktioniert jedoch nicht ... Jetzt gehen sie in dem Link zu localhost, und ich habe diesen Link gefunden , der besagt, dass ich möglicherweise so etwas brauche

pass out route-to (bridge100 192.168.2.1) from any to 10.0.0.36

Aber ich konnte pfctldie obige Zeile nicht richtig analysieren

Irgendwelche Ideen, wie ich von 10.0.0.36:80 <-> 192.168.2.1 <-> 192.168.2.34:80 weiterleiten kann?

Bearbeiten: Das Kabelmodem / Router ist ein TG852G von Xfinity ...

Bearbeiten: pfdump

                                        r     scrub-anchor "com.apple/*" all fragment reassemble
                                        r     anchor "com.apple/*" all
                                        r     anchor "usr.home/*" all
                                        n     nat-anchor "com.apple/*" all
                                        n     rdr-anchor "com.apple/*" all
                                        A       com.apple
                                        A       com.apple.internet-sharing
                                        A       usr.home
com.apple                               r     anchor "200.AirDrop/*" all
com.apple                               r     anchor "250.ApplicationFirewall/*" all
com.apple                               A       com.apple/200.AirDrop
com.apple                               A       com.apple/250.ApplicationFirewall
com.apple/200.AirDrop                   A       com.apple/200.AirDrop/Bonjour
com.apple/200.AirDrop/Bonjour           r     pass in on p2p0 inet6 proto udp from any to any port = 5353 keep state
com.apple/200.AirDrop/Bonjour           r     pass out on p2p0 proto tcp all flags any keep state
com.apple.internet-sharing              r     scrub-anchor "base_v4" all fragment reassemble
com.apple.internet-sharing              r     anchor "base_v4" all
com.apple.internet-sharing              n     nat-anchor "base_v4" all
com.apple.internet-sharing              n     rdr-anchor "base_v4" all
com.apple.internet-sharing              A       com.apple.internet-sharing/base_v4
com.apple.internet-sharing/base_v4      r     scrub on en1 all no-df fragment reassemble
com.apple.internet-sharing/base_v4      r     scrub on bridge100 all no-df max-mss 1460 fragment reassemble
com.apple.internet-sharing/base_v4      r     scrub on bridge100 proto esp all no-df fragment reassemble
com.apple.internet-sharing/base_v4      r     pass on en1 all flags any keep state
com.apple.internet-sharing/base_v4      r     pass on en1 proto esp all no state
com.apple.internet-sharing/base_v4      r     pass on bridge100 all flags any keep state rtable 7
com.apple.internet-sharing/base_v4      n     nat on en1 inet from 192.168.2.0/24 to any -> (en1:0) extfilter ei
com.apple.internet-sharing/base_v4      n     no nat on bridge100 inet from 192.168.2.1 to 192.168.2.0/24
com.apple.internet-sharing/base_v4      n     rdr on bridge100 inet proto tcp from 192.168.2.0/24 to any port = 21 -> 127.0.0.1 port 8021
usr.home                                r     anchor "SSH" all
usr.home                                A       usr.home/SSH
usr.home/SSH                            n     rdr on en1 inet proto tcp from any to 10.0.0.36 port = 8080 -> 192.168.2.34 port 80

Antworten (1)

Der richtige Befehl zum Umleiten des HTTP-Verkehrs in Ihrem Fall lautet:

echo "rdr on $ext inet proto tcp from any to 10.0.0.36 port = 80 -> 192.168.2.34 port 80" | sudo pfctl -a com.apple/HTTP -f -

Mit $ext: die Schnittstelle des mit dem Router/Modem verbundenen iMac (wahrscheinlich entweder en0 oder en1). Auf der eingehenden Schnittstelle und dem Datenverkehr wird eine Umleitung durchgeführt! Daher rdr on bridge100 ...macht es hier keinen Sinn: Sie erwarten keinen HTTP-Verkehr mit dem Ziel 192.168.2.34 von der Bridge100 zum Netzwerk hinter derselben Bridge100.

Der obige Befehl verwendet den temporären Unteranker com.apple/HTTP und ist nach einem Neustart verschwunden.

Wenn Sie es dauerhaft aktivieren möchten, erstellen Sie einen separaten Anker, wie in dieser Antwort beschrieben: pfctl - Howto Add an Anchor and Make It Active / Load It oder hier: Port Forwarding on Mac Pro with macOS Sierra .

A pass out route-to ...ist nur erforderlich, wenn Sie ausgehenden Datenverkehr vom iMac umleiten möchten.


Theoretisch wird auf dem Router/Modem (TG852G) eine zusätzliche statische Route benötigt:

route to 192.168.2.0/24 via 10.0.0.36

Hier (allerdings anderer Router) ging es auch ohne.

Double-NAT-Lösungen werden in SOHO-Umgebungen im Allgemeinen nicht empfohlen, und ich schlage vor, den Debian-Linux-Server direkt an einen der Ethernet-Ports des Routers/Modems oder eines zwischengeschalteten Switches anzuschließen.

vielen Dank für Ihre Antwort, leider funktioniert es immer noch nicht, haben Sie Tipps zur Fehlerbehebung?
@JeffreyL.Roberts Bekommst du eine Fehlermeldung? Können Sie irgendwo ein pfdump posten - entweder hier (indem Sie es Ihrer Frage als Anhang hinzufügen) oder auf pastebin.com.
mach es mal so wie du vorschlägst und schließe die box direkt an das kabelmodem an