我需要向 OpenVPN 客户端推送额外的路由。我尝试通过以下方式在服务器配置中执行此操作
push "route 10.10.10.0 255.255.255.0"
希望通过 获得客户端路由tap0
。但我得到的却是启动过程中的错误:
Fri Jul 15 10:58:24 2016 ERROR: Linux route add command failed: external program exited with error status: 2
Fri Jul 15 10:58:24 2016 /sbin/ip route add 10.10.10.0/24 via 10.20.1.0
RTNETLINK answers: Invalid argument
分配给的 IP 地址tap0
是10.01.10.1
,网关(在隧道的另一侧)是10.10.10.254
。因此,此路由请求是错误的,应该是
/sbin/ip route add 10.10.10.0/24 via tap0
或者
/sbin/ip route add 10.10.10.0/24 via 10.10.10.1
问题 1:如何10.20.1.0
计算?我能影响这个计算吗?
我可以在配置文件中使用
push "route 10.10.10.0 255.255.255.0 10.10.10.1"
(它有效)但我可能不知道那10.10.10.1
是正确的 IP。然而我知道正确的设备是tap0
。
问题 2:有没有办法影响ip
客户端初始化期间运行的命令并将设备(tap0
在我的情况下)传递给命令?
请注意,客户端和服务器上的端口不同 - 这是正常的,它们是 DNATed
服务器配置
port 1194
proto udp
dev tap0
ca /etc/openvpn/ca.crt
cert /etc/openvpn/server.crt
key /etc/openvpn/server.key # This file should be kept secret
dh /etc/openvpn/dh2048.pem
topology subnet
server-bridge 10.20.1.0 255.255.255.0 10.20.1.2 10.20.1.200
client-config-dir /etc/openvpn/static
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"
duplicate-cn
keepalive 10 120
comp-lzo
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
verb 3
客户端配置
client
dev tap
proto udp
remote myserver.example.com 1195
resolv-retry infinite
ping-restart 15
nobind
persist-key
persist-tun
remote-cert-tls server
comp-lzo
verb 3
<ca>
-----BEGIN CERTIFICATE-----
MIIEgDCCA2igAwIBAgIJAN68kwhTAMwRMA0GCSqGSIb3DQEBCwUAMIGGMQswCQYD
(...)
b4yiCAmaA8p5JRYqYBiT/fUNX6akBik2M8unm+okpdkfrP6gtzGNqv9S8cwEv0b8
p20oZw==
-----END CERTIFICATE-----
</ca>
<cert>
Certificate:
Data:
(...)
tQTcGs5BiRmx9FcRcD7MIVO9bq1rso8T7UO5rTUilBkdo9r+QVuzwFFOSMuwrUBX
l8RQ8Q==
-----END CERTIFICATE-----
</cert>
<key>
-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCYerZMSOsMjMVV
(...)
T76lH6/nsJMaRzYUBmEZU8g=
-----END PRIVATE KEY-----
</key>