在不同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私钥,用于通过路由器进行身份验证
  • 更好的文档
    • 登机
    • 代码
  • 单元测试

我将很高兴地审查和合并给这个项目的请求。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
maven字段#getGenericType()抛出java。lang.TypeNotPresentException   用java绘制三角形的几何图形   java无法下载主题和发件人地址(rediff)   java如何使代码线程安全   java在尝试转换FileInputStream中的文件时,我遇到了一个FileNotFound异常   java Moxy和Jackson如何将Json映射到Pojo   在foreach循环中使用BufferedWriter生成新行的java问题   java为什么我的测试在单次执行中运行时间小于1秒,而在maven构建中运行时间大于20秒?   java如何显示下载附件的进度条   了解java rmi的良好实践   .net可以将Java portlet嵌入ASP。网页?   循环如何多次执行Java方法?   java如何确保用户输入在给定的有效范围内?   java单元测试定理   java如何在IntelliJ上运行外部构建项目?   JAVA:试图编写一个检查字符串是否为数字的方法。总是返回错误   javahadoop将特定键的所有map方法生成的所有值都发送到一个reduce方法,对吗?   在java中读取和使用文件