绕创翼开wifi

Overview

  • 在一台长期开机的windows主机上用电信官网下载的NetKeeper客户端拨号。这台主机是连接了网线,并且能够访问内网资源的(例如:jwzx.cqupt.edu.cn)
  • 在这台主机上搭一个ubuntu虚拟机,虚拟机需要有两块虚拟网卡,一块是nat,一块是桥接有线网卡
  • 在ubuntu虚拟机上安装并配置pptpd
  • 自动化(开机自启,断网检测,等脚本)

搭建步骤

  • 硬件要求

    • 一台空闲的物理机,长期开机。

    • 有一块有线网卡,板载或usb转rj45

    • 一台路由器(支持vpn如pptp,tp-link的一般都行)

  • 环境准备

  • 装系统

    • windows
    • 虚拟机ubuntu
  • 虚拟机配置(Vmware示例):

    • 给虚拟机加一块桥接网卡,桥接到物理机有线网卡上。确保虚拟机有两块网卡,一个是nat网卡,一个是桥接有线网卡(用来获得内网ip以供拨号连接)

    • 开启虚拟机

    • 安装pptpd

      1
      2
      apt-get update
      apt-get install pptpd
    • 配置/etc/pptpd.conf

      删除以下行的注释

      1
      2
      #localip 192.168.0.1
      #remoteip 192.168.0.234-238,192.168.0.245

      变为

      1
      2
      localip 192.168.0.1
      remoteip 192.168.0.234-238,192.168.0.245

      解释:

      • localip是vpn中ubuntu虚拟机的ip,remoteip是分配给连接vpn的设备的ip
    • 配置/etc/ppp/pptpd-options

      注释以下两行。这两行是用来加密vpn的,但会对pptpd的运行有影响,可以关掉。如果你需要加密就不要注释。

      1
      2
      require-mschap-v2
      require-mppe-128

      设置dns,以下两行可改为

      1
      2
      ms-dns 202.202.32.33
      ms-dns 114.114.114.114

      202.202.32.33是内网dns,作为主dns服务器

      114是电信dns作为备选dns

    • 配置vpn的用户和密码 /etc/ppp/chap-secrets

      1
      2
      3
      # Secrets for authentication using CHAP
      # client server secret IP addresses
      用户名 pptpd 密码 *
      • 每一行代表一个用户

      • 每一行由四个部分组成。第一个是用户名,第二个(上图为pptpd)表示vpn的类型,第三个是密码,第四个(上图为*) 表示动态分配vpn的ip

    • 重启pptpd

      1
      /etc/init.d/pptpd restart
    • 配置/etc/sysctl.conf

      删除这一行的注释

      1
      #net.ipv4.ip_forward=1

      然后使配置生效

      1
      2
      sysctl -p
      /etc/init.d/procps restart
    • 配置路由表

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      #以下是设置nat转发
      iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o 虚拟机的nat网卡名(比如ens33或者eth0) -j MASQUERADE

      #以下是设置双网卡默认路由
      route add -net 202.202.32.0/20 gw 桥接网卡的网关ip(172开头的)
      route add -net 172.16.0.0/12 gw 桥接网卡的网关ip(172开头的)
      route add -net 172.32.0.0/15 gw 桥接网卡的网关ip(172开头的)
      route add -net 211.83.208.0/20 gw 桥接网卡的网关ip(172开头的)
      route add -net 222.177.140.0/25 gw 桥接网卡的网关ip(172开头的)
      route add -net 219.153.62.64/26 gw 桥接网卡的网关ip(172开头的)
      route add -net 10.10.10.0/24 gw 桥接网卡的网关ip(172开头的)

      虚拟机nat网卡和桥接网卡的网关ip可以通过ifconfig查看

      注意:本路由表不是永久的,关机即灭失,每次开机需要重新运行。

    • 配置pptpd开机自启

      1
      systemctl enable pptpd.service
    • ufw防火墙添加端口

      1
      ufw allow 1723/tcp
  • 如上配置完就应该可以访问拨号了。

  • 访问的方式为:

    pptp拨号,无加密,服务器地址:桥接网卡的ip,用户名和密码为/etc/ppp/chap-secret 里写的

    连接pptpd前请确保能够ping通桥接网卡ip

自动化

  • 需要实现的

    • 开机自动设置路由表
    • 检测外部网络变化,如果网络不通则重启(如我的物理机网络从netkeeper变为wifi,那么虚拟机的外网访问可能会出问题,需要重启)
  • 参照ubuntu18.04开机自启动脚本

  • 我的ping脚本

    大致作用是,ping www.baidu.com 如果ping的通说明网络没有问题,睡眠30秒。如果ping不通,说明需要重启恢复网络,那么连续ping2次,如果第二次还不通就重启。第二次通了就把计数置0并且睡眠30秒。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    #!/bin/sh

    count="0"
    while true
    do
    ping -c 5 -w 10 www.baidu.com
    if [ $? != 0 ];then
    echo "target not approachable"
    count=$((count+1))
    else
    count="0"
    sleep 30
    fi
    if [ $count = "2" ]; then
    reboot
    fi
    done

使用

  • 连wifi拨号,适用移动类设备(手机,平板),笔记本,台式机

    • 连接CQUPT或者其他接入内网的wifi
    • vpn 类型设为pptp 服务器地址为上面提及的虚拟机桥接网卡ip 用户名密码见上面配置。如果配置pptpd的时候设置了加密(见上文),那么客户端也需要设置加密。否则不要设置
      • 注,CQUPT这个热点校园内很多地方都有,但是连上了之后可能暂时无法拨号,这种情况下需要等一段时间(几分钟)或者重新连接。只要搜得到CQUPT并且连的上,那么就一定可以拨pptp。
  • 网线拨号,使用笔记本,台式机

    • 用网线接入内网
    • vpn拨号同上
  • 路由器拨号

    • 连上路由器,进入管理员界面,tp-link的为网络参数页,其他的试试找一下wan口设置。设置为pptp拨号,拨号方式参考上面。