Ubuntu自己主动搭建VPN Server - PPTP的Shell脚本
#!/bin/bash if [ "$UID" != "0" ]; then echo "please use sudo to run $0" exit 1 fi if [ "$#" != "5" ]; then echo "Usage: (5 parameters)" echo " $0 localip remoteip username password networkSegment/NetMask" echo "" echo " such as: $0 192.168.1.1 192.168.1.1-254 tmp tmp 192.168.1.0/24" echo " $0 192.168.1.1 10.0.0.2-130 myuser mypassword 10.0.0.0/24" exit 1 fi which pptpd > /dev/null if [ "$?" != "0" ]; then apt-get install -y pptpd fi # 1. config /etc/pptpd.conf sed -i "s%localip%#local_old_ip%g" /etc/pptpd.conf sed -i "s%remoteip%#remote_old_ip%g" /etc/pptpd.conf echo "localip $1" >> /etc/pptpd.conf # 这个就是你当前主机的IP地址 echo "remoteip $2" >> /etc/pptpd.conf # 这个就是给client分配置的IP地址池 # 2. 加入DNS , config /etc/ppp/options sed -i "s%ms-dns%#old-dns%g" /etc/ppp/options echo "ms-dns 114.114.114.114" >> /etc/ppp/options echo "ms-dns 10.0.101.10" >> /etc/ppp/options echo "ms-dns 8.8.8.8" >> /etc/ppp/options # 3. 加入server名称 /etc/ppp/pptpd-options # sed -i "s%name pptpd%name $1%g" /etc/ppp/pptpd-options sed -i "s%name%#na_me%g" /etc/ppp/pptpd-options echo "name $1" >> /etc/ppp/pptpd-options echo "logfile /var/log/pptp.log" >> /etc/ppp/pptpd-options # 4. 服务端的username和password的配置 /etc/ppp/chap-secrets #(位置): # username server名(可设置为*) password 同意登入的ip(可设置为*) echo "\"$3\" $1 \"$4\" *" >> /etc/ppp/chap-secrets # such as: "tmp" 192.168.1.1 "tmp" * # 5. 查看执行的port # netstat -tnlpu | grep pptpd # pptp port是tcp1723,能够看到1723port开户 echo 1 > /proc/sys/net/ipv4/ip_forward #改动内核设置,使其支持转发 # 要想永久生效,使其支持转发的话 # config /etc/sysctl.conf #echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf # 将后面值改为1,然后保存文件 sed -i "s%net.ipv4.ip_forward=1%#net_old_.ipv4.ip_forward = 1%g" /etc/sysctl.conf # 将后面值改为1,然后保存文件 echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf # 将后面值改为1,然后保存文件 sysctl -p # 立即生效 # 6. 第四步打开port转发后,路由器port转发 # 转发本地tcp1723port就可以 # 7. 不加这条仅仅能訪问内网资源,加了可訪问外网 # iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o eth0 -j MASQUERADE iptables -t nat -A POSTROUTING -s $5 -o eth0 -j MASQUERADE # 7.1 出如今openwrt无法上网 # 默认在OpenWrt中安装pptpd并设置好后,尽管能通过vpn连接上,可是连上之后无法通过路由器上网。网上有人说在iptables中添加POSTROUTING的masquerade的规则,经老衲測试,没有效果。 #经重复摸索,发现client拨完vpn后,上网时的包都被rst掉了,于是想到应该是防火墙在搞鬼。 #看了下iptable,还真是复杂,添加了好几个链。想来想去应该是在FORWORD链中有名堂,于是加了条规则,发现最终能够上网了。甚喜,遂来分享之。 # iptables -A forwarding_rule -s 10.1.56.0/24 -j ACCEPT iptables -A forwarding_rule -s $5 -j ACCEPT # 8. 可能问题1:连接过程中无法通过帐号password验证,logfile显示:pppd[26133]: Couldn’t open the /dev/ppp device: No such file or directory # 确少/dev/ppp ls /dev/ppp if [ "$?" != "0" ]; then mknod /dev/ppp c 108 0 fi # 8. 重新启动pptpd服务否则client获取的IP段不生效 /etc/init.d/pptpd restart exit 0
Ubuntu自己主动搭建VPN Server - PPTP的Shell脚本的更多相关文章
- AWS 搭建 VPN 服务(PPTP & L2TP) 整理
只为记录和整理在AWS上假设VPN服务器帮助过我的资料,环境使用AWS EC2 东京区域, OS为ubuntu, PPTP和L2TP各自建立一个, 从speed test上看, 下载有2mbps左右, ...
- Ubuntu14.04下搭建VPN服务 -pptp
在Ubantu下采用PPTP搭建VPN,优点是配置简单快捷.本教程亲自测试,熟练了在新机器上5分钟搞定VPN. - - - - - - - - - - - - - - - - - - - - - - ...
- 通过openswan基于Azure平台搭建VPN server
用过Azure的读者都知道,Vnet一直是Azure比较自豪的地方,尤其是VPN,Azure提供了两种VPN以及专线来保证客户数据的安全性,S2S vpn(站点到站点的,基于IPsec的),P2S v ...
- SQL Server 中执行Shell脚本计算本地文件的内容大小
SQL Server 数据库中除了能执行基本的SQL语句外,也可以执行Shell脚本.默认安装后,SQL中的Shell脚本的功能是关闭的,需要手动打开, 执行以下脚本即可打开该功能. -- 允许配置高 ...
- 【转】在ubuntu环境下搭建svn server遇到的一些问题
原文网址:http://www.cnblogs.com/pcchinadreamfly/archive/2012/11/24/2786046.html 前段时间在ubuntu 12.04lts上倒腾了 ...
- Ubuntu 14.04 在桌面上双击运行shell 脚本文件
http://askubuntu.com/questions/465531/how-to-make-a-shell-file-execute-by-double-click up vote7down ...
- 在Ubuntu 15下搭建V/P/N服务器pptpd安装和配置
在Ubuntu 15下搭建VPN服务器pptpd安装和配置 在ubuntu下配置vpn的方式有很多种,其中比较常见的是pptpd,它配置简单,但是安全性不高,不过对于一般使用来说足够了,我按照程搭建了 ...
- Ubuntu中shell脚本无法使用source命令的原因与解决方法
本文简要描述了在ubuntu系统下无法使用source命令的原因,及对应的两种解决方法,并在附录中引用一篇文章来详细解释source命令的用法 问题: 由于在交叉编译时,需要在当前shell内执行so ...
- Ubuntu系统下搭建PPTP类型VPN环境
step1: 安装pptpd 很简单的命令:sudo apt-get install pptpd step2: 修改pptpd的配置 有三个文件需要修改: (1)修改/etc/pptpd.conf,添 ...
随机推荐
- 程序猿常识--OJ系统和ACM测试考试大全
OJ它是Online Judge缩写系统,来在线检測程序源码的正确性. 著名的OJ有RQNOJ.URAL等. 国内著名的题库有北京大学题库.浙江大学题库等. 国外的题库包含乌拉尔大学.瓦拉杜利德大学题 ...
- js 模块化的规范
The Module Pattern,模块模式,也译为模组模式,是一种通用的对代码进行模块化组织与定义的方式.这里所说的模块(Modules),是指实现某特定功能的一组方法和代码.许多现 ...
- 通过gradle运行测试脚本(转)
练习一:HelloWorld 创建项目,源代码在src/main/java,测试源代码在src/test/java build.gradle的脚本: apply plugin: 'java' depe ...
- 辛星整理3linux笔记,免费下载点,我希望对你有所帮助
忙乱,这是我第一次看李指出老师的视频时,,这本书是关于116页面,在csdn下载对:点我下载 ,假设左边的地址崩溃了,也能够在浏览器中输入例如以下地址然后下载:http://download.csdn ...
- Qt on Android: Qt 5.3.0 公布,针对 Android 改进的说明
5月20日本,Qt 官方博客宣布 Qt 5.3.0 公布! 这个版本号聚焦在性能.稳定性和可用性的提升上,与 5.1 / 5.2 相比有非常大提升. 5.3.0 的主要变化: 稳定能.可用性大大提升 ...
- Android应用程序的组成部分和Manifest文件(转)
Android应用程序由松散耦合的组件组成,并使用应用程序Manifest绑定到一起:应用程序Manifest描述了每一组件和它们之间的交互方式,还用于指定应用程序元数据.其硬件和平台要求.外部库以及 ...
- Xcode的小标记旁边的文件的名称的作用
这两天老板教我要注意Xcode该文件名以小标记权.例如: 这里的M就是Xcode中类名旁边的一个symbol.还有A,D等,这些标记用于显示当前文件和代码仓库中该文件对照后的状态: M = Local ...
- 超赞的CSS3进度条 可以随进度显示不同颜色
原文:超赞的CSS3进度条 可以随进度显示不同颜色 现在的WEB已经不是以前的WEB了,传输更大的数据量,有着更加复杂的计算,这就需要利用进度条来提高用户体验,必要时可以让用户耐心等待,不至于因操作卡 ...
- JavaScript 实现Map效果
var map = {}; // 类似:Map map = new HashMap(); map[key] = value; // 类似:map.put(key, value); var value ...
- JAVA解决大数
主题链接:CLICK HERE~ 有了Java求解大数变得如此简单,以后再也不用操心大数模板了.哦啦啦啦. import java.math.BigInteger; import java.math. ...