방화벽 포트 전달은 해당 포트의 아웃바운드 트래픽을 중단합니다.

방화벽 포트 전달은 해당 포트의 아웃바운드 트래픽을 중단합니다.

저는 Linux 시스템을 더 넓은 네트워크와 일부 서버 사이의 게이트웨이/방화벽으로 사용합니다.

WAN -> [ 192.x | GATEWAY (Linux) | 10.x ]  -> [ 10.0.0.100 | SERVER (Linux) ]

이 구성은 게이트웨이로 잘 작동합니다. 다운스트림 노드는 인터넷에 대한 액세스가 양호하며 .port를 사용하여 80게이트웨이에서 서버로 요청을 전달할 수 있습니다 .8000firewall-cmd

firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toaddr=10.0.0.100:toport=8000

하지만, 명령을 실행하고 포트 전달이 시작되면 서버( )는 더 이상 포트 10.0.0.100로 돌아갈 수 없습니다 . 이는 서버가 인터넷의 어떤 HTTP 트래픽에도 액세스할 수 없다는 의미이기 때문에 문제가 됩니다.WAN80

서버는 curl모든 인터넷 리소스 가 될 수 있습니다.와는 별개로80전달 규칙이 적용될 때 포트에 있는 경우.

게이트웨이에는 물리적 네트워크 카드가 하나만 있고 영역에 있으므로 external가장될 수 있습니다.

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

네트워킹에 대한 몇 가지 기본 테넌트가 누락되어 이 질문을 이해하지 못하는 것 같습니다.

내 가정은 전달 규칙이 그렇게 만든다는 것입니다.모두포트 80 트래픽(인바운드 또는 아웃바운드)이 손상되었습니다. 실제로 포트 80 인바운드 트래픽만 내 서버의 8000으로 전달하려고 합니다.

네트워크 구성 오류일 수 있습니까? 아니면 내가 사용하는 방식에 firewalld잘못된 것이 있습니까 ?

답변1

iptables다운스트림 서브넷의 특정 시스템으로의 포트 전달을 위해 내 시나리오에서 사용될 수도 있지만 firewalld작동 방법을 모르겠습니다.

gatewaysocat이것이 이상적이지는 않을 수도 있지만 내 해결 방법은 특정 포트의 트래픽을 특정 IP로 전달하는 시스템 서비스를 내 컴퓨터에 만드는 것이었습니다 .

gateway다음은 전달된 포트에서 실행되는 스크립트 입니다 80.44310.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

관련 정보