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,添 ...
随机推荐
- 【夯实基础】javakeywordsynchronized 详细说明
尊重版权:http://www.cnblogs.com/GnagWang/archive/2011/02/27/1966606.html Java语言的keyword.当它用来修饰一个方法或者一个代码 ...
- iOS 面试题:OC标题的基本概念<延续>
第一,如何确定一个方法方法名称 删除减号,加,删除返回值,删除参数类型,删除参数,剩下的就是的方法名 秒,id,能够用assign,copy,retain,依据须要使用 第三,autorelease ...
- CodeForces 396C 树状数组 + DFS
本主题开始看到以为段树或树状数组,但是,对于一个节点的有疑问的所有子节点的加权,这一条件被视为树的根,像 然后1号是肯定在第一层中,然后建立一个单向侧倒查,然后记录下来 其中每个节点 层,终于 两个节 ...
- android内置存储器memory和第三方外部存储disk管理
缓存管理这里 http://blog.csdn.net/intbird/article/details/38338713 图片处理在这里 http://blog.csdn.net/intbird/ar ...
- mybatis generator插件开发
mybatis现在普遍使用的每一个人DAO框架.mybatis generator它可以基于数据库中的表结构,生成自己主动mybatis代码和配置文件,方便使用,当然,实际的使用过程中.generat ...
- 如何基于对话框的project基于改变BCG的
一,stdafx.h 增加在下面的例子.BCGCBProInc.h间接介绍lib. #include <BCGCBProInc.h> // BCGControlBar Pro #if ...
- UIMenuController,UIPasteboard:复制,粘贴详细解释
首先,这四个地图.我想实现的功能.[一张照片讲一个复制到另一UIimageView上] 实现代码例如以下: -(IBAction)panGestureTop:(UILongPressGestureRe ...
- cidaemon.exe是什么进程及怎样关闭cidaemon.exe进程
问题描写叙述: 这段时间机器总是出现一个奇怪的问题:cidaemon.exe进程占用CUP率98%以上,大大影响了电脑的正常使用.资源管理器中出现多个cidaemon.exe进程,强制结束占用cpu率 ...
- Linux访问Windows共享文件夹 (转)
在开发Linux程序中,经常会使用Windows的编辑器进行编辑,这样还要拷贝到Linux服务器,如果有这种开发习惯的同学,可以使用这种方式进行开发. 当然除了这种方法之外,可以再Windows安装n ...
- Android在第三方应用程序系统应用尽早开始,杀死自己主动的第三方应用程序,以重新启动
1.为什么第三方应用程序可能早于System的app启动? Android能够查阅了,这里就不细述了,这里不阐述ROM启动还有bootloader.软件启动的大致流程应该是 启动kernel 执行se ...