我注册了一家新的 ISP,但他们没有给我提供外部 IPv4 地址。我设置了一个虚拟服务器 (S)(有一个地址),使用 wireguard 隧道将我所有的东西转发到我家里的盒子 (B)。
在(S)上我配置了:
sysctl -w net.ipv4.ip_forward=1
firewall-cmd --zone=external --add-forward-port=port=<EXTERNAL PORT>:proto=<PROTOCOL>:toport=<INTERNAL PORT>:toaddr=<INTERNAL IP>
firewall-cmd --zone=external --add-masquerade
firewall-cmd --zone=external --add-port=<EXTERNAL PORT>/<PROTOCOL>
ON(B)我配置了:
firewall-cmd --zone=internal --add-port=<INTERNAL PORT>/<PROTOCOL>
这个设置运行得很好。所有连接都到达 (B),但源地址 (显然) 被伪装了。仅仅通过firewall-cmd --zone=external --remove-masquerade
(S) 上的伪装来删除是行不通的。我现在的问题是:如何使用防火墙实现类似的设置,不伪装源 IP 地址,这样我仍然可以分析 (B) 上的源?
提前致谢!
答案1
我发现使用防火墙无法做到这一点。无论如何,我找到了一个解决方案。使用 Nginx proxy_protocolhttps://docs.nginx.com/nginx/admin-guide/load-balancer/using-proxy-protocol/对我来说非常完美。