我有几个 Windows 7/8 客户端连接到 Linux OpenVPN 服务器 (tap)。我想在连接时设置客户端的 DNS 和 WINS 服务器。OpenVPN 不充当 DHCP 服务器;网络中有一个独立的 DHCP 服务器。
最合理的方法是通过 DHCP。但是,DHCP 服务器非常基础,我无法在 DHCP 服务器本身中配置这些参数。(而且我宁愿不更换 DHCP 服务器,这太复杂了)
我尝试过push "dhcp-option DNS 10.0.0.101"
和push "dhcp-option WINS 10.0.0.101"
,但没用。客户端只是忽略了这些。我假设只有当 OpenVPN 服务器也是 DHCP 服务器时才会处理这些选项。(我说得对吗?)
使用 Windows“网络连接”GUI 手动设置 DNS 和 WINS 正在工作,但我想要一些自动化的东西(尽可能)。
我的下一个尝试是在客户端计算机上运行脚本。我通常是一名 Linux 脚本编写者;但是,即使在 Windows 上,这么简单的事情也应该是可行的,不是吗?
第一种方法,PowerShell(以管理员身份运行)
$wmi = Get-WmiObject win32_networkadapterconfiguration -filter "ServiceName = 'tap0901'"
echo $wmi
$wmi.SetWinsServer("10.0.0.101","")
奇怪的是,我找不到设置 DNS 服务器的等效命令。
并且没有提到默认ExecutionPolicy
的PowerShell 复杂性Restricted
,这使得它作为最终用户的自动解决方案非常不友好。
我检查的另一种方法是netsh
。然而,在我用谷歌看到的所有例子中(例如http://community.spiceworks.com/scripts/show/2195-set-ip-address-subnet-gateway-dns-and-wins-server-all-windows-os-also-works-with-runas)他们没有提到适配器名称(我不确定这是否是正确的术语) - “tap*”,而是提到一些任意的“本地连接*”,这在每台机器上可能都会有所不同。
那么,该如何继续?有什么推荐的解决方法吗?
编辑
这是我的 client.ovpn 文件:
client
pull
# from http://serverfault.com/questions/110281/openvpn-client-on-windows-7-cannot-add-route-from-config-script
script-security 2 system
dev tap
proto tcp-client
remote A.B.C.D 443
resolv-retry infinite
nobind
ca ..
cert ..
key ..
comp-lzo
verb 5