端口转发,同时保留原始IP

端口转发,同时保留原始IP

我使用firewalld将传入端口从互联网(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) 接口,该接口通过 Internet 将流量传送到另一台计算机。

转发工作正常,但我的问题是,在目标计算机上,所有流量似乎都来自 100.1.1.1 (Tailscale),而不是原始源 IP。这对于诸如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

相关内容