圣诞礼物——西南大学校园网突围之跨园区共享网络(已稳定使用一年)【上】

前言:

    提前送大家2014年圣诞节的礼物。欢迎转载,转载请注明作者和出处。

   很多人看了标题第一反应是会觉得我是标题党,不信。还是那句老话,我分享我的东西,信不信,由你。

   标题上是说的上集,其实这一篇博文中就把这个方法讲完了,之所以说是上,因为在跨园区共享网络这一块里面,一共可以有2种方法。



知识准备:

    先说下我们学校的上网方式情况:在寝室,电脑只能使用NetKeeper来拨号上网,使用手机连接swu-wifi-dorm,然后拨号上网,在教学区可以使用web认证方式上网。这些方法都可以共享网络,只是拨号上网的方式中,用户名不是你真实的用户名,所以只能使用他给的软件进行登录(当然之前有说过可以破解),但是在教学区内就没有加密了。什么意思呢?就是教学区内限制就少了很多。

    本次要用到的方法是VPN共享上网。什么是VPN呢,翻译下就是虚拟专用网络,具体的自己百度去,我不想讲太多,我又不是老师。

    

    简单说,就是在教学区内放置自己的vpn服务器,vpn服务器使用web认证方式获取到访问外网权限,然后在寝室的PC机,手机等设备使用vpn客户端连接到VPN服务器,使用vpn服务器的外网,so,这样就很简单的破解了寝室不能用web登录的限制了。同时,这个方法做到了几个人即使在不同的寝室、园区,也可以一起使用一个账号,因为大家用的都是这一台服务器上的网络。

    

      上图是我画的一个学校校园网的一个简单拓扑,PC1在李园,PC2在桃园,本来应该是PC1->李园路由器->...->出口路由器->Internet,   PC2->桃园路由器->...->出口路由器->Internet,教学区->...->出口路由器  这种方式上网,PC1和PC2想共享网络,基本是不可以的。现在,我们把教学区的这台主机作为VPN服务器,PC1和PC2可以通过内网连接到VPN服务器上,这里的VPN服务器就好像是你寝室的路由器那样代替PC1和PC2来上网。



使用vpn共享上网的优点:

   1.不受地域限制,上面具体已经分析过了。只要是能连上内网的地方,不论是餐厅,教室,寝室。

   2.不受拨号客户端升级限制,破解后,如果服务端更改了加密因子,又要找,破解难度加大的话,很费时。

   3.晚上不会断网,现在的swu-wifi-dorm连上之后不会断网,没有认证之前是不可以上外网,但是可以访问内网,so,你懂吧。



 配置篇:

如果你会配置了,那就可以不看后面的了。服务器配置是重点,客户端的配置比较简单,翻过墙的人都会吧。废话多了点,开始吧。



服务器:

  服务器我使用的是Linux发行版当中的Ubuntu,其它版本的都是可以的。  

1 sudo apt-get update #更新软件源
2
3 sudo apt-get install pptpd  #安装pptpd软件

然后就是等他安装了。

安装完毕后,几个配置文件介绍下:

/etc/pptpd.conf                  #这个是主配文件
/etc/ppp/pptpd-options        #这个是选项设置
/etc/ppp/chap-secrets           #这里是你的客户端的用户名密码文件

正式开始~

1.修改pptpd.conf文件
            sudo vi /etc/pptpd.conf
  在最下方添加如下配置:

         localip 10.0.0.1
         remoteip 10.0.0.2-10
  #localip是主机的地址,remoteip是地址池,也就是远程拨进来的计算机所分配到的ip地址。

2.修改/etc/ppp/pptpd-options文件,设置DNS
            sudo vi /etc/ppp/pptpd-options
  改变其中的 ms-dns 选项,为 VPN 客户端指派 DNS 服务器地址。添加以下两行。
           ms-dns 202.202.96.33
           ms-dns 68.128.128.61
这里值得注意的是,里面有个  require-mschap-v2  require-mppe-128这两个是加密的选项,默认是开启的,如果你开启加密的话,后面连接的时候就要选上加密方式,我为了方便就没有设置加密,直接在这两行前面加个#注释掉。

3.修改/etc/ppp/chap-secrets文件,添加用户
         sudo  vi /etc/ppp/chap-secrets
  添加的时候一行一个用户。格式如下:
         用户名 pptpd 密码  *
       例如:mediciyan pptpd 123456 *
  注明:pptpd是你的服务名,如果你没修改的话,就填这个。后面*处应该填的是客户端拨入时候分配的IP,如果填*则代表启用DHCP服务,自动分配IP。
  4.现在重启pptpd服务应该是可以连接上了,但是,不能访问Internet。还需要设置IP转发。
      5.是否已经打开IP转发?
查看”/proc/sys/net/ipv4/ip_forward"文件中的值是否为"1”, 如果不是, 则需要在”/etc/sysctl.conf"文件中修改"net.ipv4.ip_forward=1”, 然后执行以下命令:
           sudo sysctl -p            //应用配置
           sudo /etc/init.d/procps restart   //重启服务
 6.有些时候,到这里就已经可以上外网了,但是像实验室的电脑,还需要设置NAT。这里需要用到iptables。
                 sudo apt-get install iptables
检查是否在VPN服务器上设置了对于客户端IP地址的NAT?
执行下面的命令查看表中是否有相应的表项:
               sudo iptables —table nat -L POSTROUTING
如果没有则执行以下命令:
       sudo iptables -t nat -A POSTROUTING -s 10.0.0.1/10 -o eth0 -j MASQUERADE
       sudo iptables —table nat —append POSTROUTING —out-interface eth0 —jump MASQUERADE
 一般来说,两条命令随便一句都可以。这时候重启pptpd服务,就可以上外网了。

 为了简单配置,我就自己写了个脚本来代替手工配置,节省时间。

#!/bin/bash
#############################################################################################
#                                                                     #####
#    ScriptName:Setting.sh                                                  #####
#                                                                     #####
#    Version: 1.0                                                         #####
#                                                                     #####
#    Description: This script in order to install vpn                           #####
#               You must run this script in root to get                          #####
#permition.                                                             #####
#                                                                     #####
#    Author:        Medici.Yan([email protected])                           #####
#                    2013.10                                             #####
#
#############################################################################################

#############################################################################################

#update the software source

sudo apt-get update

#download and install pptpd

sudo apt-get install pptpd
#如果你是yum 管理的话就把这里打开#sudo yum update#sudo yum install pptpd

pptpd_conf=/etc/pptpd.conf
pptpd_options=/etc/ppp/pptpd-options
pptpd_chap_secrets=/etc/ppp/chap-secrets
sysctl_conf=/etc/sysctl.conf

#PPTPD.conf sourcefile
#
#       IP for each simultaneous client.
#
# (Recommended)
#localip 192.168.0.1
#remoteip 192.168.0.234-238,192.168.0.245
# or
#localip 192.168.0.234-238,192.168.0.245
#remoteip 192.168.1.234-238,192.168.1.245

###options
# Network and Routing

# If pppd is acting as a server for Microsoft Windows clients, this
# option allows pppd to supply one or two DNS (Domain Name Server)
# addresses to the clients.  The first instance of this option
# specifies the primary DNS address; the second instance (if given)
# specifies the secondary DNS address.
# Attention! This information may not be taken into account by a Windows
# client. See KB311218 in Microsoft‘s knowledge base for more information.
#ms-dns 10.0.0.1
#ms-dns 10.0.0.2

##chap
# Secrets for authentication using CHAP
# client    server    secret            IP addresses

#sed -i ‘/^localip /c localip 10.0.0.1‘ ${pptpd_conf}
#sed -i ‘/^remoteip /c remoteip 10.0.0.2-10‘ ${pptpd_conf}

echo "Checking vpn config file..."
if  !([ -f ${pptpd_conf} ]&&[ -f ${pptpd_options} ]&&[ -f ${pptpd_chap_secrets} ])
  then
    echo "Can not find the vpn config file!" && exit 1
else
    echo "File exist..."
    echo "Update the vpn config..."
    #update the localip and remoteip这里是配置vpn内网地址的
    sudo sed -i ‘$a localip 10.0.0.1\nremoteip 10.0.0.2-10‘ ${pptpd_conf}
    #Encryption 如果你要加密的话,就把这两行注释了
    sudo sed -i ‘/^require-mschap-v2/c\#require-mschap-v2‘ ${pptpd_options}
    sudo sed -i ‘/^require-mppe-128/c\#require-mppe-128‘ ${pptpd_options}
    #dns 这里配置dns服务器地址
    sudo sed -i ‘/^\#ms-dns 10.0.0.2/a\ms-dns 8.8.8.8‘ ${pptpd_options}
    sudo sed -i ‘/^\#ms-dns 10.0.0.2/a\ms-dns 61.128.128.68‘ ${pptpd_options}
    sudo sed -i ‘/^\#ms-dns 10.0.0.2/a\ms-dns 202.202.96.33‘ ${pptpd_options}
    #vpn user 修改下这里配置用户名和密码
    #user servicename password ip ( * means dhcp on)
    sudo sed -i ‘$a medicean\tpptpd\t123456\t\*‘ ${pptpd_chap_secrets}
    sudo sed -i ‘$a mediceantest2\tpptpd\tmediceantest2password\t\*‘ ${pptpd_chap_secrets}
    #ipv4
    sudo sed -i ‘/^#net.ipv4.ip_forward=1/c net.ipv4.ip_forward=1‘ ${sysctl_conf}
    sudo sysctl -p
    sudo /etc/init.d/procps restart
    sudo apt-get install iptables
    #NAT
    sudo iptables -t nat -A POSTROUTING -s 10.0.0.1/10 -o eth0 -j MASQUERADE
    sudo iptables-save
    sudo /etc/init.d/pptpd restart

    echo "OK! You can use VPN!"
fi

将上面的脚本加上可执行权限后就直接执行,等待输出是OK,就可以使用了。



客户端的配置,这里就用win8来测试吧,安卓IOS上面的相对比较简单,Linux的我相信这对你不是问题。

图片有点多,实在是不想解释什么了,自己看着图片一步步来吧。

别急,还没有完。



至此,大功告成。提前一周祝大家圣诞快乐~~~

时间: 2024-10-13 01:47:58

圣诞礼物——西南大学校园网突围之跨园区共享网络(已稳定使用一年)【上】的相关文章

西南大学校园网客户端共享网络之路由器开wifi

1年前出了NetKeeper,让寝室只能一个人用一个账号,而且,在寝室平板手机什么的只能靠360wifi什么的来维持了,电脑一直不能关,确实让人不爽. 最近学校又出台了swu-wifi-dorm来让寝室里手机能使用wifi,结果几天下来都是差评,手机电脑,不可兼得. 本人一直致力于校园网突围,先后出过几个版本的校园网登录软件,后来寝室不能直接访问到login.swu.edu.cn的时候,那些登录软件基本不能使用了.于是我就使用了其他方法一直在寝室用 着wifi,这种方法的成本也比较高,类似代理的

跨园区容灾,升级不停服——高可用负载均衡集群实践

对于云计算行业来说,云服务的可用性和可扩展性是的检测其服务质量的重要标准,也是最受用户关注的两大难题.各云计算厂商针对容灾.升级等需求的解决方案,最能够体现其底层架构的实力.腾讯云基于基础架构的优势,为分期乐.微信红包等平台提供技术支持,可以完美满足如下三点需求: 1. 高可用能力,容灾能力强,升级不停服 2. 可扩展性强,功能丰富,性能超高 3. 避免重复造轮子,性价比之王 近期,针对一些客户对腾讯云产品可用性的问询,腾讯云基础产品团队对负载均衡产品的原理做出详细阐述,并希望通过对腾讯负载均衡

跨园区容灾,升级不停服:高可用负载均衡集群实践

欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由腾讯云中间件团队发表于云+技术周刊特别版 作者:方坤丁 对于云计算行业来说,云服务的可用性和可扩展性是的检测其服务质量的重要标准,也是最受用户关注的两大难题.各云计算厂商针对容灾.升级等需求的解决方案,最能够体现其底层架构的实力.腾讯云基于基础架构的优势,为分期乐.微信红包等平台提供技术支持,可以完美满足如下三点需求: 1. 高可用能力,容灾能力强,升级不停服 2. 可扩展性强,功能丰富,性能超高 3. 避免重复造轮子,性价比之王

如何实现session跨服务器共享

Session共享有多种解决方法,常用的有四种:客户端Cookie保存.服务器间Session同步.使用集群管理Session.把Session持久化到数据库. 1.客户端Cookie保存 以cookie加密的方式保存在客户端,每次session信息被写在客户端,然后经浏览器再次提交到服务器,即使两次请求在集群中的两台服务器上完成,也可以到达session共享. 优点是减轻服务器端的压力: 缺点是受到cookie的大小限制,可能占用一定带宽,因为每次请求会在头部附带一定大小的cookie信息,另

Android 跨程序共享数据,探究内容提供器

内容提供器(Content Provider)主要用于在不同的应用程序之间实现数据共享的功能,它提供了一套完整的机制,允许一个程序访问另一个程序中的数据,同时还能保证被访问数据的安全性.目前,使用内容提供器是 Android 实现跨程序共享数据的标准方式. 不同于文件存储和 SharePreferences 存储中的两种全局可读写操作模式,内容提供器可以选择只对哪一部分数据进行共享,从而保证我们程序中的隐私数据不会有泄露的风险. 访问其他程序中的数据: 对于每一个应用程序来说,如果想要访问内容提

通过jsonp解决浏览器的跨域共享

因为浏览器的同源策略,普通ajax访问跨域请求返回的json数据是不会被浏览器接受的.看下面例子可以看出是访问不到的 首先 定义webapi 后台代码 public class JsopController : ApiController { public IHttpActionResult GetAlluser() { User[] contacts = new User[] { new User{ Name="123", PhoneNo="111", Email

在ExpressJS中设置二级域名跨域共享Cookie

问题:我使用expressjs和mongostore来管理session.下面是expressjs中的设置. app.configure(function(){ app.use(express.session({ secret: conf.secret, maxAge: new Date(Date.now() + 3600000), cookie: { path: ‘/‘ }, store: new MongoStore(conf.db) })); }); 我已经在上面设置了cookie路径.但

内容提供者(Content Provider)--跨程序共享数据

内容提供者简介 访问其他应用中的数据 ContentResolver 的基本用法 实例读取系统联系人 创建自己的内容提供器 创建内容提供器的步骤 创建新类继承ContentProvider并且重写其中6个方法 内容URI参数 使用UriMatcher实现匹配内容URI的功能 getType函数介绍 实现跨程序数据共享 内容提供者 访问自己创建的内容提供者数据 遇到的问题 内容提供者简介 使用场景: 比如:电话薄,短信,媒体库 简介 主要用于在不同的应用程序之间实现数据共享的功能,它提供了一套完整

session跨域共享解决方案

要让session跨域共享,需要解决三个问题: 1.通过什么方法来传递session_id? 2.通过什么方法来保存session信息? 3.通过什么方法来进行跨域 一.传递session_id有4种方法 1. 通过cookie 2. 设置php.ini中的session.use_trans_sid=1,让PHP自动跨页传递session id 3. 手动通过url或隐藏表单传值 4. 用文件或数据库方式传递,在通过其他key对应取值 二.保存session信息有3种方法 1.数据库 2.mem