Ich verwende einen Linux-Computer als Gateway/Firewall zwischen dem größeren Netzwerk und einigen Servern.
WAN -> [ 192.x | GATEWAY (Linux) | 10.x ] -> [ 10.0.0.100 | SERVER (Linux) ]
80
Diese Konfiguration funktioniert gut als Gateway. Downstream-Knoten können problemlos auf das Internet zugreifen, und ich kann Anfragen für das Gateway an 8000
den Server mit weiterleiten firewall-cmd
.
firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toaddr=10.0.0.100:toport=8000
Jedoch, sobald ich diesen Befehl ausführe und die Portweiterleitung beginnt, 10.0.0.100
kann der Server ( ) nicht mehr den WAN
Port 80
erreichen. Das ist ein Problem, weil es bedeutet, dass der Server keinen HTTP-Verkehr im Internet erreichen kann.
Der Server kann curl
jede Internetressourceaußerwenn es sich am Port befindet, 80
während diese Weiterleitungsregel aktiv ist.
Das Gateway verfügt nur über eine physische Netzwerkkarte und befindet sich in der external
Zone, die Masquerading ermöglicht.
gateway:$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether dc:a6:32:1b:40:9e brd ff:ff:ff:ff:ff:ff
inet 192.168.0.2/24 brd 192.168.0.255 scope global eth0
valid_lft forever preferred_lft forever
inet 10.0.0.1/24 brd 10.0.0.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::dea6:32ff:fe1b:409e/64 scope link
valid_lft forever preferred_lft forever
3: wlan0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether dc:a6:32:1b:40:9f brd ff:ff:ff:ff:ff:ff
gateway:$ ip route
default via 192.168.0.1 dev eth0 onlink
10.0.0.0/24 dev eth0 proto kernel scope link src 10.0.0.1
192.168.0.0/24 dev eth0 proto kernel scope link src 192.168.0.2
Wahrscheinlich übersehe ich einen grundlegenden Grundsatz zur Vernetzung, der mich daran hindert, dieses Problem zu verstehen.
Ich gehe davon aus, dass die Weiterleitungsregel dies ermöglicht.alleDer Datenverkehr auf Port 80 (eingehend oder ausgehend) wird durcheinandergebracht, obwohl ich eigentlich nur möchte, dass der eingehende Datenverkehr von Port 80 an 8000 für meinen Server weitergeleitet wird.
Ist die Netzwerkkonfiguration möglicherweise falsch? Oder ist etwas an meiner Nutzung firewalld
ungültig?
Antwort1
Vielleicht iptables
oder firewalld
kann es in meinem Szenario verwendet werden, um die Portweiterleitung an bestimmte Maschinen im Downstream-Subnetz durchzuführen, aber ich konnte nicht herausfinden, wie ich es zum Laufen bekomme.
Dies ist möglicherweise nicht ideal, aber meine Problemumgehung bestand darin, auf meiner gateway
Maschine einen systemd-Dienst zu erstellen, der socat
den Datenverkehr auf einem bestimmten Port an eine bestimmte IP weiterleitet.
Dies ist das Skript, das auf meinem Server ausgeführt wird, gateway
um die Ports weiterzuleiten 80
und 443
an 10.0.0.100
.
firewall-cmd --zone=external --add-port=80/tcp
socat TCP4-LISTEN:80,fork TCP4:10.0.0.100:80 &
firewall-cmd --zone=external --add-port=443/tcp
socat TCP4-LISTEN:443,fork TCP4:10.0.0.100:443 &
wait