我需要推送额外的路由到我的OpenVPN客户端。 我试图通过服务器configuration来做到这一点
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
分配给tap0的IP地址是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是如何计算的? 我可以影响这个计算吗?
我可以在configuration文件中使用
push "route 10.10.10.0 255.255.255.0 10.10.10.1"
(它的工作原理),但我可能不知道10.10.10.1是正确的IP。 但是我知道,正确的设备将是tap0 。
问题2:是否有一种方法可以影响在客户端初始化期间运行的ip命令,并将设备(我的情况为tap0 )传递给命令?
请注意,客户端和服务器端口是不同的 – 这是正常的,他们是DNATed
服务器的configuration
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
客户端的configuration
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>