在不同IP规则表之间切换客户端的Web UI
vpnchooser的Python项目详细描述
#vpnchooser
啊![vpnchooser截图](https://github.com/cbrand/vpnchooser/raw/master/images/screenshot.png“vpnchooser截图”)
vpnchooser是一个web应用程序,可以用作图形 用于将设备从一个IP规则表移动到另一个IP规则表的用户界面。
这些可以用于将客户端重新路由到不同的网关,因此 名称“vpnchooser”。
##设置
该系统建立在利用ip规则系统的linux路由器之上。 它已经用“[dd wrt](http://www.dd-wrt.com/site/index)”进行了测试 不过,路由器系统应该可以与每一个拥有 ssh访问。
首先,您需要定义自己的IP规则定义并发送流量 在路由器上到另一个网关(通常应该发送 通过VPN的流量)。
` ip route add default via {gateway} dev {device} table 10 `
###通过Docker
为此,必须在 [github](https://github.com/cbrand/vpnchooser)。
如果你想测试设置,我推荐Docker。
确保您有[Docker](https://www.docker.com/)和 [docker compose](https://docs.docker.com/compose/)已安装。
复制“example.cfg”并将其与用户名、密码放在一起 检索到的主机密钥为“docker.cfg”。
要填充数据,需要用户的ssh主机密钥。你可以 通常使用服务器/路由器上的以下命令之一获取这些命令:
` ssh-keygen-l-f /etc/ssh/ssh_host_rsa_key.pub ssh-keygen-l-f /etc/ssh/ssh_host_dsa_key.pub ssh-keygen-l-f /etc/ssh/ssh_host_key.pub `
作为替代方案,您可以遵循正常的安装说明 并使用控制台提供的配置生成实用程序 脚本,打包在包中。
` vpnchooser generate_config --docker {path_to_config_file} `
这将要求必要的配置选项(路由器的主机, 用户名、密码)并从主机中提取ssh主机密钥。最后 它将其存储到作为命令行参数传递的文件中。
对于生产版本,还应该调整mysql的根密码, 存储在docker-compose.yml文件中。
之后,您可以使用以下命令启动必要的docker实例 命令。
` docker-compose up `
这将生成并下载所有必需的系统组件,并启动 必要的系统组件。 之后,您应该能够通过端口5000访问应用程序。 默认用户名为“admin”,密码为“admin”。
###不带Docker
要在没有docker的情况下运行系统,至少需要提供一个redis 可用于同步redis后端的服务器。可选的 也可以提供数据库。但是,默认的sqlite数据库可以 也被利用。
如果您提供了必要的软件,则可以安装应用程序。 我建议在 [虚拟环境](http://docs.python-guide.org/en/latest/dev/virtualenvs/)。
现在您可以通过 ` easy_install vpnchooser `
之后,您可以使用“vpnchooser”命令生成配置文件。
` vpnchooser generate_config {path_to_config_file} `
这将指导您完成配置数据的过程。之后 文件已生成,您应将其设置为配置文件并 然后可以启动服务器。
` export FLASK_CONFIG_FILE={path_to_config_file} vpnchooser runserver `
在另一个终端启动芹菜进程以同步 路由器的当前状态。
` export FLASK_CONFIG_FILE={path_to_config_file} vpnchooser runcelery `
##开发环境
要编译前端,需要node.js和npm。
转到“src/vpnchooser/static”文件夹并键入
` npm install grunt dev `
这将编译前端。
##许可证
代码是根据[mit]授权的(http://opensource.org/licenses/MIT) 执照。
##待办事项
该应用程序仍在开发中。如果你想贡献 以下是一些很好的主题:
- ssh私钥,用于通过路由器进行身份验证
- 更好的文档
- 登机
- 代码
- 单元测试
我将很高兴地审查和合并给这个项目的请求。