Estou usando um computador Linux como gateway/firewall entre a rede mais ampla e alguns servidores.
WAN -> [ 192.x | GATEWAY (Linux) | 10.x ] -> [ 10.0.0.100 | SERVER (Linux) ]
Esta configuração funciona bem como gateway. Os nós downstream podem acessar a Internet sem problemas e posso encaminhar solicitações 80
do gateway para 8000
o servidor com firewall-cmd
.
firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toaddr=10.0.0.100:toport=8000
No entanto, depois que eu executo esse comando e o encaminhamento de porta é iniciado, o servidor ( 10.0.0.100
) não consegue mais acessar a WAN
porta on 80
. Isso é um problema porque significa que o servidor não consegue alcançar nenhum tráfego HTTP na Internet.
O servidor pode curl
qualquer recurso da Internetexcetose estiver na porta 80
enquanto a regra de encaminhamento estiver em vigor.
O gateway possui apenas uma NIC física e está na external
zona, o que permite o mascaramento.
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
Provavelmente estou sentindo falta de algum princípio fundamental sobre redes que está me impedindo de entender esse problema.
Minha suposição é que a regra de encaminhamento torna isso tãotodoso tráfego da porta 80 (entrada ou saída) está ficando confuso, quando na verdade eu só quero que o tráfego de entrada de 80 seja encaminhado para 8000 para meu servidor.
A configuração da rede está possivelmente errada? Ou há algo firewalld
inválido sobre como estou usando?
Responder1
Talvez iptables
ou firewalld
possa ser usado no meu cenário para encaminhar para máquinas específicas na sub-rede downstream, mas não consegui descobrir como fazê-lo funcionar.
Isso pode não ser o ideal, mas minha solução alternativa foi criar um serviço systemd em minha gateway
máquina que socat
encaminha o tráfego em uma porta específica para um IP específico.
Este é o script que é executado para gateway
encaminhar portas 80
e 443
para arquivos 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