我正在尝试安装一个新的dd-wrt路由器来使用OpenVpn。 但是,我需要使用的OpenVpn有一个自动生成的configuration文件。 这看起来像:
# Automatically generated OpenVPN client config file # Generated on Wed Sep 11 17:15:39 2013 by ip-10-164-12-159 # Note: this config file contains inline private keys # and therefore should be kept confidential! # Note: this configuration is user-locked to the username below # OVPN_ACCESS_SERVER_USERNAME=openvpn # Define the profile name of this particular configuration file # OVPN_ACCESS_SERVER_PROFILE=-redacted- # OVPN_ACCESS_SERVER_CLI_PREF_ALLOW_WEB_IMPORT=True # OVPN_ACCESS_SERVER_CLI_PREF_ENABLE_CONNECT=True # OVPN_ACCESS_SERVER_CLI_PREF_ENABLE_XD_PROXY=True # OVPN_ACCESS_SERVER_WSHOST=-redacted- # OVPN_ACCESS_SERVER_WEB_CA_BUNDLE_START # -----BEGIN CERTIFICATE----- # -redacted- # -----END CERTIFICATE----- # OVPN_ACCESS_SERVER_WEB_CA_BUNDLE_STOP # OVPN_ACCESS_SERVER_IS_OPENVPN_WEB_CA=0 # OVPN_ACCESS_SERVER_ORGANIZATION=OpenVPN Technologies, Inc. setenv FORWARD_COMPATIBLE 1 client proto udp nobind remote -redacted- port 443 dev tun dev-type tun ns-cert-type server reneg-sec 604800 sndbuf 100000 rcvbuf 100000 auth-user-pass # NOTE: LZO commands are pushed by the Access Server at connect time. # NOTE: The below line doesn't disable LZO. comp-lzo no verb 3 setenv PUSH_PEER_INFO <ca> -----BEGIN CERTIFICATE----- -redacted- -----END CERTIFICATE----- </ca> <cert> -----BEGIN CERTIFICATE----- -redacted- -----END CERTIFICATE----- </cert> <key> -----BEGIN PRIVATE KEY----- -redacted- -----END PRIVATE KEY----- </key> key-direction 1 <tls-auth> # # 2048 bit OpenVPN static key (Server Agent) # -----BEGIN OpenVPN Static key V1----- -redacted- -----END OpenVPN Static key V1----- </tls-auth>
如果一个SSH到我的路由器(这意味着我已经打开了sshd),我可以使用此configuration连接到OpenVpn服务器。 如果我看看VPN服务器访问控制页面显示我已经成功连接。 但是,我相信dd-wrt的路由表不是从wifi设备发送stream量到VPN。
我是非常新的路由,并没有能够工作的任何dd-wrt教程(他们都假设你使用其他types的configuration,我不能使用)。 所以我的问题分两部分:
有人可以指导我以可编程的方式设置iptables(或任何从wifinetworking设备发送stream量),以便我可以运行iptables脚本,然后在路由器上启动OpenVPN。
如何改变这种方式只能在VAP(虚拟接入点)上工作,或者只能在某些IP地址上工作(所以只有连接到AP的xxxx的设备才能通过VPN)。
注意:我通常喜欢在我的计算机上安装这些脚本,然后将它们ssh到任何dd-wrt路由器,然后运行它们来打开VPN连接。
通过谷歌和这个网站到目前为止还没有帮助我。
我主要根据我的计划将我的OpenVPN安装到OpenWRT。 它目前在Fedora18上实现,但是我想用testing机来做其他事情。 我会想象DD-WRT是相似的,但由于实施困难,可能会有一些不准确的地方。 希望有更多的DD-WRT经验的人应该能够支持我,并消除任何颠簸。
dev tun
指令意味着你正在使用一个单独的子网,通常使用server
指令来设置(我猜这个部分是在VPNpipe理页面中处理的)。 例如, server 10.0.0.0 255.255.255.0
,意味着您的客户端将在这个范围内的客户端虚拟适配器上获得一个地址。
如果此设备是您的互联网路由器,那么它将被用作您的networking的默认网关。 如果您的无线设备没有设置给定networking的静态路由,它会询问默认网关。 我怀疑发生的是你的iptables规则没有设置查找和接受来自你的VPN子网的任何stream量,基于input接口
你可以使用iptables -nvL --line-numbers
查看你的iptablesconfiguration。 希望将您的设备用作路由器的用户将遇到以下类似问题。
如果您的OpenVPN子网在阶段#3没有提到,那么它将会进入阶段#4并且下降。
这些程序整齐地组织到基于任务的规则链中。 我打算做的是在“zone_lan_forward”(处理本地连接的规则链)的开始处为我的OpenVPN子网定义一个链。 它是这样的:
iptables -N zone_lan_vpn
iptables -I zone_lan_forward -i tun+ -j zone_lan_vpn
下一步做什么取决于你想要对这些客户端应用什么样的限制。 我有三个不同的OpenVPN实例(一个pipe理和两个级别的访客访问),所以我已经进一步划分了这一点。
pipe理VPN子网上的用户被授予几乎所有的访问权限,所以我实现了一个DENY-> ALLOW设置,它在接受其他任何事情之前只阻止菜单closures的特定地址。 客人只能访问某些资源,所以他们在允许 – >拒绝设置。
用DD-WRT我不确定的部分是如何设置这个在启动时自动发生的。 在OpenWRT中,防火墙规则是基于/lib/firewall
脚本生成的(不应该被插入)。 configuration文件/etc/config/firewall
包含以下几行:
config 'include'
option 'path' '/etc/firewall.user'
上面定义的/etc/firewall.user
文件在重新加载防火墙规则时作为BASH脚本读取,以允许用户特定的调整。 我对DD-WRT并不熟悉,所以我不确定是否使用了相同的防火墙设置方法。
如果您的防火墙规则处于DD-WRT默认设置,您是否可以将iptables -nvL --line-numbers
的输出发布到pastebin或类似的地方,并且您的公共地址被编辑? 这将有助于我更好地了解DD-WRT的具体布局。 您能否确认远程客户端获得的OpenVPN子网上的IP地址? 你能不能也发布你的路由器的路由表,如route -n
的结果所示? (确保OpenVPN服务器正在运行,而你这样做)。 如果你从这里编辑networking地址,请确定范围的目的是什么(例如本地子网,VPN子网,公共)。
当然,如果在Web界面中有一个定义这个访问的选项,这可能都是没有意义的。 在您的路由器的Web控制台中是否有一个选项来过滤OpenVPN子网上的用户?
恐怕我不太明白你的问题的第二部分。 你只希望某些IP地址能够通过OpenVPN连接到设备? 您希望将来此服务在DD-WRT路由器之外的其他服务器上吗?