CentOS 8.1:将 OpenVPN 客户端转发到没有 NAT 的 LAN

CentOS 8.1:将 OpenVPN 客户端转发到没有 NAT 的 LAN

因此有一个具有多个客户端的 OpenVPN 服务器,我成功地将其划分为多个子网。

  • 10.0.30.0/26 适用于通用客户端,仅允许与 OpenVPN 服务器本身通信。
  • 10.0.30.64/26 用于允许访问本地网络的特权客户端。

OpenVPN 服务器只有一个物理接口 [eno1],它连接到本地网络 10.0.10.0/24(然后连接到路由器以访问互联网)。现在,OpenVPN 端的一切似乎都设置正确,因为客户端被分配了来自正确池的地址,并且正确的路由被推送到特权客户端。

但困难的部分在于转发 IP 流量......

ip_forwarding 已启用:

# cat /proc/sys/net/ipv4/ip_forward
1

在firewalld中接口被划分为不同的区域:

# firewall-cmd --get-active-zones
home
  interfaces: eno1
trusted
  interfaces: tun0

我尝试了很多 iptables 规则,但就是无法让它工作。唯一让我完全不熟悉的是防火墙...

当我部署此规则时,客户端可以访问本地网络,但需要通过 NAT。我需要本地网络上的服务能够看到来自 10.0.30.64/26 子网的实际客户端 IP。

firewall-cmd --direct --add-rule ipv4 nat POSTROUTING 0 -o eno1 -j MASQUERADE

当然,这种简单的 NAT 尝试不会仅针对特权源地址进行过滤,但在我看来,它表明 OpenVPN 配置本身是好的,而“仅”缺少转发部分……

所以问题是:如何配置从源 IP 10.0.30.64/26 的接口 tun0 到目标 IP 10.0.10.0/24 的接口 eno1 的 IP 转发?

答案1

转发已配置 – 如果没有配置,您的“伪装”规则将不会执行任何操作。(防火墙可以仅有的改变那些无论如何都要通过它的数据包,但实际上它不能强制转发这些数据包(如果本来不会转发的话)。

这里最有可能的问题是你的 LAN 主机不知道将回复发送到哪里后退到客户端。它们没有 10.0.30.x 子网的路由;它们尝试通过默认网关发送回复;所述网关也没有适当的路由;数据包最终“流出”并最终被您的 ISP 丢弃。

(启用 NAT 后,LAN 主机认为它们正在被网络中的另一台主机连接。当地的10.0.10.0/24 子网,它们有路线并且可以回复。

为了解决这个问题,请10.0.30.64/26 via 10.0.10.???在本地 LAN 网关和/或每个单独的主机上添加一条路由(以 OpenVPN 服务器的 IP 地址作为下一跳)。后者可以使用 DHCP 选项完成。

相关内容