我一直在设置 OpenVPN,并且我所遵循的所有标准指南都建议进行设置,iptables
以便 VPN 服务器在 VPN 客户端上执行 NAT:
iptables -t nat -A POSTROUTING -s *vpn-ip-range* -o eth0 -j MASQUERADE
这很好。但是,由于 NAT,我们其他内部机器上的所有日志都报告来自 VPN 服务器 IP 而不是客户端 IP 的流量。
我想删除 NAT 并让客户端 IP 在整个网络中使用(出于审计目的)。我已经完成了以下操作:
- 更新 OpenVPN 配置以向所有客户端(子网
10.0.0.0/8
)提供内部 IP 地址 - 向我们的主网关添加静态路由,以将此子网路由到 VPN 服务器的 IP 地址
最后一步是更新iptables
。我似乎无法让它工作。
网卡是eth0
并且所有 OpenVPN 流量都处于 状态tun0
。我想要做的就是当与流量相关时,VPN 服务器在这些接口之间转发流量10.0.0.0/8
。
有人可以建议我该怎么做吗?
答案1
解决此问题的快速方法是修改日志记录的工作方式,使其记录 $http_x_forwarded_for 值,然后记录实际的客户端 IP。
不确定您是否能够修改日志记录的方式,但我希望这会有所帮助。
答案2
我设法解决了这个问题。虽然我已经添加了net.ipv4.ip_forward=1
(/etc/sysctl.conf
大多数指南都指出了这一点),但我还需要添加net.ipv4.conf.all.proxy_arp=1
。
然后,配置iptables
只需要允许两个接口上的所有流量就可以了!