如何将网关和路由推送至 OpenVPN 客户端?

如何将网关和路由推送至 OpenVPN 客户端?

我需要设置一个 OpenVPN 网络,该网络在未来几个月内可能会增长到数百个客户端。一些客户端是服务器,其他是需要托管在服务器上的服务的设备。

这个想法是使用一个10.10.0.0/16所有客户端都接入的网络。服务器应该有一个范围内的静态 VPN IP 10.10.0.1 - 10.10.0.254,并且应该有范围内的 DHCP VPN IP。OpenVPN10.10.1.1 - 10.10.255.254服务器(目前为 1)有 IP10.10.0.1

分配静态“服务器”IP,我取消了client-config-dirOpenVPN 中的注释server.conf,为 中的每个服务器创建了一个配置文件,ccd将服务器CN name作为文件名,并添加了路由10.10.0.0 255.255.0.0server.conf。每个客户端文件都包含类似以下内容:

ifconfig-push 10.10.0.x 10.10.0.1
iroute 10.10.0.0 255.255.0.0

当我尝试10.10.0.1从具有静态 VPN IP 的其中一个服务器 ping 时,ping 成功。

对于 DHCP 客户端我设置了一些配置server.conf

dev tun
proto udp
dev tun
mode server
tls-server
ifconfig 10.10.0.1 255.255.0.0
ifconfig-pool 10.10.1.1 10.10.255.254
route-gateway 10.10.0.1
push "route-gateway 10.10.0.1"
push "route 10.10.0.0 255.255.0.0 10.10.0.1"

客户端正确连接并获取预期范围内的 IP(例如 10.10.1.61),但当我尝试 ping 时10.10.0.1,ping 超时。当我使用 检查网关时,route -n我发现设置了错误的网关:

root@somedevice:/home/pi# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.128.60.1     0.0.0.0         UG    202    0        0 eth0
10.10.1.1       0.0.0.0         255.255.255.255 UH    0      0        0 tun0    <-- should be 10.10.0.1 ?
10.128.60.0     0.0.0.0         255.255.255.0   U     202    0        0 eth0

当我手动添加网关时,route add 10.10.0.1 tun0我可以 ping 通 VPN 服务器。但我仍然无法 ping 通服务器(例如 10.10.0.20)。当我检查时,我注意到缺少routel一条路由。10.10.0.0/16

root@somedevice:/home/pi# routel
         target            gateway          source    proto    scope    dev tbl
        default        10.128.60.1    10.128.60.33     dhcp            eth0
      10.10.0.1                                                 link   tun0
      10.10.1.1                          10.10.1.2   kernel     link   tun0
   10.128.60.0/ 24                    10.128.60.33     dhcp     link   eth0
      10.10.1.2              local       10.10.1.2   kernel     host   tun0 local
    10.128.60.0          broadcast    10.128.60.33   kernel     link   eth0 local
   10.128.60.33              local    10.128.60.33   kernel     host   eth0 local
  10.128.60.255          broadcast    10.128.60.33   kernel     link   eth0 local
      127.0.0.0          broadcast       127.0.0.1   kernel     link     lo local
     127.0.0.0/ 8            local       127.0.0.1   kernel     host     lo local
      127.0.0.1              local       127.0.0.1   kernel     host     lo local
127.255.255.255          broadcast       127.0.0.1   kernel     link     lo local
            ::1                                      kernel              lo
        fe80::/ 64                                   kernel            eth0
        fe80::/ 64                                   kernel            tun0
            ::1              local                   kernel              lo local
fe80::65cf:ce3:fc9f:20fa              local                   kernel            eth0 local
fe80::c648:ccba:8f47:86b7              local                   kernel            tun0 local
        ff00::/ 8                                                      eth0 local
        ff00::/ 8                                                      tun0 local

当我手动添加此路由时,ip route add 10.10.0.0/16 via 10.10.0.1我可以 ping 服务器(例如 10.10.0.20):-D

问题:

  • 我如何才能将正确的网关(10.10.0.1而不是10.10.1.1)推送到具有 DHCP 地址的客户端?
  • 我如何将路由推10.10.0.0/16 via 10.10.0.1送到具有 DHCP 地址的客户端?

我以为它已经完成了

push "route-gateway 10.10.0.1"
push "route 10.10.0.0 255.255.0.0 10.10.0.1"

但那不起作用,我做错了什么?

- - - - - - 更新 - - - - - -

我刚刚注意到这一点,push "route-gateway 10.10.0.1"并将push "route 10.10.0.0 255.255.0.0 10.10.0.1"网关/路由推送到“静态服务器客户端”,而不是通过 DHCP 接收 VPN IP 的客户端。为什么它们不适用于 DHCP 客户端?

答案1

对于我的客户端(使用 dhcp ips)

port 53
proto udp
dev tun
tls-server

ca …
cert …
key… 
dh …

cipher …
auth …

local …
server 10.10.1.0 255.255.255.0

max-clients 253
topology subnet
keepalive 10 120
comp-lzo no
push "comp-lzo no"
user nobody
group nogroup
persist-key
persist-tun
username-as-common-name
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 1.1.1.1"

push "redirect-gateway def1"
push "route 10.10.0.0 255.255.0.0 10.10.0.1 1"

或者

push "route 10.10.0.0 255.255.0.0 net_gateway 1"

使用默认客户端的网关。

相关内容