我有一个OpenVPN服务器,其Inet地址为10.8.0.1,为子网10.8.0.0/24提供服务。我有两个客户机连接到此服务器,状态日志(/etc/openvpn/openvpn-status.log)如下所示:
OpenVPN CLIENT LIST
Updated,Wed Aug 9 15:56:38 2017
Common Name,Real Address,Bytes Received,Bytes Sent,Connected Since
client1,10.0.0.177:54810,4648,4853,Wed Aug 9 15:56:28 2017
client2,10.0.0.224:53999,4731,4935,Wed Aug 9 15:56:16 2017
ROUTING TABLE
Virtual Address,Common Name,Real Address,Last Ref
10.8.0.6,client1,10.0.0.177:54810,Wed Aug 9 15:56:28 2017
10.8.0.10,client2,10.0.0.224:53999,Wed Aug 9 15:56:16 2017
GLOBAL STATS
Max bcast/mcast queue length,0
END现在,在客户机2上,当我运行(ifconfig)时,我得到了tun接口的以下内容:
tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:10.8.0.10 P-t-P:10.8.0.9 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)P内地址为10.8.0.9.该接口在子网中的位置?是在客户端还是服务器中?来自客户端的这个接口上的Traceroute提供了以下内容:
traceroute to 10.8.0.9 (10.8.0.9), 64 hops max
1 10.8.0.1 0.348ms 0.210ms 0.163ms
2 * * *
3 * * *
4 * * *
5 * ^C现在,如果这就像一个虚拟的inet,那么如果一个OpenVPN服务器的地址用完了,如果它达到254个VPN客户端的限制,那么它是否可以用于客户机呢?
提前感谢!
发布于 2017-08-09 17:28:50
您的OpenVPN服务器似乎是使用拓扑net30设置的。为了与运行在旧版本Windows上的真正老客户端兼容,需要此拓扑结构。
这个拓扑基本上是将分配给VPN的那个/24子网分解成64个带有30位掩码的子网。这意味着你最多可以有63个相连的客户。
在net30中,00 (二进制位)和11地址未使用,01地址分配给服务器上的PTP连接,10地址在客户机上使用。
因此,考虑到10.8.0.6,client1,...客户端。子网是10.8.0.4。广播地址是10.8.0.7。属于OpenVPN服务器的地址是10.8.0.5 (虽然您不会实际看到它在服务器上分配),而分配给客户端的地址是10.8.0.6。
$ ipcalc 10.8.0.4/30
Address: 10.8.0.4 00001010.00001000.00000000.000001 00
Netmask: 255.255.255.252 = 30 11111111.11111111.11111111.111111 00
Wildcard: 0.0.0.3 00000000.00000000.00000000.000000 11
=>
Network: 10.8.0.4/30 00001010.00001000.00000000.000001 00
HostMin: 10.8.0.5 00001010.00001000.00000000.000001 01
HostMax: 10.8.0.6 00001010.00001000.00000000.000001 10
Broadcast: 10.8.0.7 00001010.00001000.00000000.000001 11现在,您最好将您的服务器切换到使用topology subnet。此选项告诉OpenVPN 10.8.0.0/24为一个子网,而不是将其分解为一组较小的子网。每个客户端将只使用子网中可用的253个地址,而不是net30中的基本4个地址。
在运行-dev tun模式时,拓扑模式配置虚拟寻址拓扑。此指令在-dev抽头模式中没有任何意义,它总是使用子网拓扑。如果在服务器上设置此指令,-服务器和-服务器桥指令也将自动将所选拓扑设置推送到客户端。此指令也可以手动推送到客户端。与--dev指令一样,该指令必须始终在客户端和服务器之间兼容。模式可以是: net30 --通过为每个客户端分配一个/30子网来使用点对点拓扑.当部分或全部连接客户端可能是Windows系统时,这是为了允许点对点语义。这是OpenVPN 2.0的默认设置。子网--通过配置带有本地IP地址和子网掩码的tun接口来使用子网而不是点对点拓扑,类似于-dev抽头和以太网桥接模式中使用的拓扑。此模式为每个连接客户端分配一个IP地址,并在Windows上工作。只有当服务器和客户端是OpenVPN 2.1或更高版本,或者OpenVPN 2.0.x是手动修补-拓扑指令代码时才可用。在Windows上使用时,需要版本8.2或更高版本的TAP 32驱动程序.在*nix上使用时,需要tun驱动程序支持ifconfig(8)命令,该命令设置子网而不是远程端点IP地址。
https://serverfault.com/questions/867772
复制相似问题