我正在尝试设置一个 openvpn 服务器,它运行 2 个不同的 openvpn 实例,以提供对不同 vpc 子网的访问。
如果用户连接到 10.6.0.0/24,他们应该只能访问某些子网,但如果他们连接到 10.7.0.0/24,他们应该可以访问所有 VPC 子网。
为了尝试实现这一点,我编写了以下 iptables 命令...
iptables -t nat -A POSTROUTING -s 10.6.0.0/24 -o ens5 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 10.7.0.0/24 -o ens5 -j MASQUERADE
iptables -A FORWARD -d 10.121.0.0/18 -j ACCEPT
iptables -A FORWARD -d 10.111.0.0/18 -j ACCEPT
iptables -A FORWARD -s 10.7.0.0/24 -d 10.120.0.0/18 -j ACCEPT
iptables -A FORWARD -s 10.7.0.0/24 -d 10.110.0.0/18 -j ACCEPT
iptables -P FORWARD REJECT
子网 10.121.0.0/18 和 10.111.0.0/18 旨在可供任何 vpn 用户访问,但 10.120.0.0/18 和 10.110.0.0/18 仅应可供 10.7.0.0/24 用户访问。
我觉得这很合理,但不幸的是,它不起作用。10.6.0.0/24 上的用户仍然能够 ping 10.120.0.0/18 和 10.110.0.0/18 中的服务器
我希望有人能指出我做错的地方。显然我对 iptables 的理解是错误的。
我找到了部分问题的解决方案。
似乎它不喜欢 REJECT。当我尝试从命令行手动运行它时,它给出了错误...
iptables: Bad policy name. Run `dmesg' for more information.
我将其更改为以下内容...
iptables -P FORWARD DROP
问题是,现在它只是丢弃了所有 FORWARD 请求。它似乎忽略了所有其他规则。