나는 방화벽을 사용하여 인터넷(9999)에서 들어오는 포트를 다음과 같이 로컬 LAN IP 주소(100.1.1.1)로 전달합니다.
external (active)
target: default
icmp-block-inversion: no
interfaces: tailscale0
sources:
services: ssh
ports: 9999/tcp
protocols:
forward: yes
masquerade: yes
forward-ports:
source-ports:
icmp-blocks:
rich rules:
public (active)
target: default
icmp-block-inversion: no
interfaces: enp0s3
sources:
services: dhcpv6-client ssh
ports: 9999/tcp
protocols:
forward: yes
masquerade: no
forward-ports:
port=9999:proto=tcp:toport=9999:toaddr=100.1.1.1
source-ports:
icmp-blocks:
rich rules
LAN IP(100.1.1.1)는 인터넷을 통해 다른 컴퓨터로 트래픽을 보내는 동일한 컴퓨터에서 실행되는 Tailscale(VPN) 인터페이스에서 제공됩니다.
전달은 잘 작동하지만 문제는 대상 시스템의 모든 트래픽이 원래 소스 IP가 아닌 100.1.1.1(Tailscale)에서 나오는 것 같다는 것입니다. 이는 Fail2ban 또는 통계와 같은 작업에는 편리하지 않습니다.
전달된 트래픽을 허용하면서 소스 주소를 보존하는 방법이 있습니까?
편집: 이 기사를 바탕으로https://mghadam.blogspot.com/2020/05/forward-traffic-from-public-ip-to.html?m=1가능해야 하지만 복잡합니다.
답변1
외부 영역에서 매스커레이딩을 비활성화하고 포트 9999로 전달하면 많은 라우터에서와 같은 일반적인 방식으로 수행되며 실제 클라이언트 주소를 볼 수 있습니다.
가장 무도회 명령을 비활성화합니다.
firewall-cmd --permanent --zone=external --remove-masquerade
외부 영역에 대해 인터넷을 공유해야 하는 경우 공개용으로 가장을 활성화합니다.
firewall-cmd --permanent --zone=public --add-masquerade