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 # 这个就是给客户端分配置的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. 添加服务器名称 /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. 服务端的用户名和密码的配置 /etc/ppp/chap-secrets
#(位置):
#  用户名 服务器名(可设置为*) 密码 允许登入的ip(可设置为*)
echo "\"$3\"    $1  \"$4\"  *" >> /etc/ppp/chap-secrets
# such as: "tmp" 192.168.1.1 "tmp" *

# 5. 查看运行的端口
# netstat -tnlpu | grep pptpd
# pptp 端口是tcp1723,可以看到1723端口开户
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. 第四步打开端口转发后,路由器端口转发
# 转发本地tcp1723端口即可

# 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的规则,经老衲测试,没有效果。
#经反复摸索,发现客户端拨完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:连接过程中无法通过帐号密码验证,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服务否则客户端获取的IP段不生效
/etc/init.d/pptpd restart

exit 0

时间: 2024-10-20 17:37:50

Ubuntu自动搭建VPN Server - PPTP的Shell脚本的相关文章

Centos 7搭建VPN(PPTP)服务器方法

在中国大陆封闭的互联网环境下,VPN这东西是必不可少的 免费VPN很多,可是,既不稳定又不安全,速度还慢,如果你有一台海外的VPS或服务器 自己搭建一个VPN是最好的选择 下面介绍Centos 7搭建VPN(PPTP)服务器方法 注意:本教程只适用于Centos 7 检查是否支持 若你使用XEN架构的VPS,下面的步骤不用执行 检测PPP是否开启: 1 cat /dev/ppp 开启成功的标志:cat: /dev/ppp: No such file or directory 或者 cat: /d

通过openswan基于Azure平台搭建VPN server

用过Azure的读者都知道,Vnet一直是Azure比较自豪的地方,尤其是VPN,Azure提供了两种VPN以及专线来保证客户数据的安全性,S2S vpn(站点到站点的,基于IPsec的),P2S vpn(点到站点的,基于sstp的),专线express route是和物理链路或者MPLS网络相连接,在这里笔者要提醒大家一句,Azure的vpn身后是两台机器做HA的vpn server,是提供LSA保证的,而无论是阿里还是AWS都没有这样的服务,而且Azure最高提供带宽200M的VPN链路,三

web服务文件更新自动同步、数据库主从复制、shell脚本实现网站代码备份和mysql备份

基搭建LAMP环境,并实践基于DNS做基于域名的虚拟主机中的环境,重新搭建一个同样的环境 要求: a)实现web服务文件更新的自动同步到另一台机器上 b)数据库实现主从复制 c)通过shell脚本实现网站源代码备份和mysql备份,备份策略包括全量备份.增量备份.差异备份 a,实现web服务文件更新的自动同步到另一台机器上: 1,在httpd服务器上建立基于FQDN的两个虚拟web站点,并创建相关目录. 2,修改测试windows主机的hosts文件,并编辑两个虚拟web站点对应的目录下的ind

编写自动测试c语言程序的shell脚本

目前经常用vim编写一些c语言程序,写好了程序一般都得进行一些测试,当然我们可以进行一些常规的手动测试.心里一想,如果能够用shell脚本编写一个能自动测试c语言程序就好了. 为了试一试这样的想法,找了一个c语言程序题目: [一球从 100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10 次落地时,共经过多少米?第10 次反弹多高? ] 根据这样的要求我编写了一个解决这个问题的程序: #include <stdio.h> #include <stdlib.h> #

(转自张戈博客)Linux系统防CC攻击自动拉黑IP增强版Shell脚本

(转自张戈博客) 前天没事写了一个防CC攻击的Shell脚本,没想到这么快就要用上了,原因是因为360网站卫士的缓存黑名单突然无法过滤后台,导致WordPress无法登录!虽然,可以通过修改本地hosts文件来解决这个问题,但是还是想暂时取消CDN加速和防护来测试下服务器的性能优化及安全防护. 前天写的Shell脚本是加入到crontab计划任务执行的,每5分钟执行一次,今天实际测试了下,可还是可以用的,但是感觉5分钟时间有点过长,无法做到严密防护.于是稍微改进了下代码,现在简单的分享下! 一.

树莓派搭建VPN(PPTP)服务器

备注:本文转自http://www.cnblogs.com/alexsun/p/5894338.html 需求及环境 学校的教务管理系统需要内网才能登录,当我不在学校的时候使用外网无法访问.于是打算把树莓派部署在寝室并搭建一个VPN服务器以便我连接以访问教务管理系统.树莓派通过有线连接到一个路由器,路由器拨号访问网络. 必要软件安装 我们需要用到ppp pptpd这2个软件 sudo apt-get install ppp sudo apt-get install pptpd 配置pptpd 设

搭建VPN server

VPN:即虚拟专用网络,用于公司员工,在外地出差能通过互联网建立专用隧道访问公司内网资源的技术,它不同于专线,虽然没有专线稳定,但它也有自己的优点,不受地域的限制而且价格也便宜. 下面我就来分享一下我搭建vpnserver的具体步骤: VPN服务器环境说明 操作系统:CentOS release 6.4 VPNserver IP:192.168.1.1 分配客户端IP:192.168.20.0 安装vpn所需要的包:ppp 和pptpd yum -y install ppp*  yum -y i

VPS 上ubuntu 里搭建VPN服务器

根据https://my.oschina.net/isnail/blog/363151里逐步完成,自己本机WIN10连接不成功,VM里面用WIN7连接也不行,找别人试连却成功了,然后自己用手机4G网络连接成功,用WIFI连又失败了.用的是电信宽带,应该是电信做了什么限制吧. 参考地址:https://my.oschina.net/isnail/blog/363151 备查地址:https://app.yinxiang.com/shard/s5/nl/605460/07cab749-60c7-44

贡献个Android 截屏并自动传到电脑上的shell脚本

Android设备用久了,截屏是个麻烦事.更麻烦的是通过qq传到电脑上,倒腾半天.其实用adb命令就可以截屏,然后写个pull的语句就可以拉到电脑上了.文件名为capture.sh, 内容如下: #! /bin/bash adb shell screencap -p /sdcard/test.png #adb pull /sdcard/test.png ~/Desktop/test.png dir=~/Desktop/ curr=`date "+%Y-%m-%d %H:%M:%S"`