我需要设置具有以下特征的多机VPN:
第一部分,中心和20个用户,正在按需要工作。 在这个设置中,我需要:
简单的香草OpenVPNconfiguration,而不使用客户端到客户端。
现在我想添加5个pipe理员与一些超级连接的权力。 在这个新的设置中,我需要:
我认为要获得这种粒度的控制,我需要在server.conf启用client-to-client 。 当这样做时,我已经有用户(170.0.0 / 16)和pipe理员(10.171.0.0/16)在讲话。 问题是我需要执行上面的限制。 我敢肯定,这应该是一个iptables的问题,但我一直在尝试更多的小时,我不愿意承认,并使其工作。 到目前为止,我的iptables.conf看起来像这样:
*filter :INPUT DROP [1000:900000] :FORWARD DROP [0:0] :OUTPUT DROP [0:0] -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A INPUT -s 127.0.0.1 -j ACCEPT -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT -A INPUT -p tcp -m tcp --dport 389 -j ACCEPT -A INPUT -p udp -m udp --dport 1194 -j ACCEPT -A INPUT -p icmp -m icmp --icmp-type 8 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT -A INPUT -p icmp -m icmp --icmp-type 13 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT -A INPUT -p icmp -m icmp --icmp-type 30 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT -A FORWARD -s 10.170.0.0/16 -d 10.170.0.1 -j ACCEPT -A FORWARD -s 10.170.0.0/16 -d 10.171.0.0/16 -j ACCEPT -A FORWARD -s 10.170.0.0/16 -d 10.170.0.0/16 -j REJECT -A FORWARD -j REJECT --reject-with icmp-port-unreachable -A OUTPUT -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT COMMIT
我认为在同一个子网中的forwards是问题…但是甚至不知道从哪里开始。
这可能会变得相当复杂。 OpenVPN中的“客户端到客户端”选项简单地简化了路由所能实现的function,所以我根本不会使用它,因为它会给你更多的控制权。
当客户端使用OpenVPN连接时,这将有效地创build一个带有自己的4个地址范围的子网的隧道。 最低的地址是networking地址,然后你有两个地址每个为双方,最后是广播地址。 因此,在这种情况下,从pipe理员到用户的stream量stream动,而不是其他方式是一个简单的问题,把这样的规则:
-A FORWARD -s 10.170.0.0/16 -d 10.171.0.0 -m state –state NEW,ESTABLISHED,RELATED -j ACCEPT
-A FORWARD -s 10.171.0.0/16 -d 10.170.0.0 -j ACCEPT
这确保了只有当用户回应一个来自另一方的数据包时,才能接受从用户返回给pipe理员的任何stream量。 所以修复了这个问题。 您也许需要一些路由规则,但是通常它们应该由OpenVPN守护进程自动放置。 由于您还没有使用“客户端到客户端”,pipe理员也无法看到对方。
到现在为止还挺好。 现在棘手的一点是启用一些pipe理员之间的连接,而不是其他人。 为此,您可能必须为连接到VPN的每台计算机build立预定义的地址分配,然后放置特定的防火墙规则以启用/禁用它们之间的stream量(基于上面的模板)。