1 #!/bin/bash
2 # Quick and dirty pptp VPN install script
3 # Ubuntu 12+ or Debain 7+
4 # Reference http://jesin.tk/setup-pptp-vpn-server-debian-ubuntu/
5 # Referrence https://github.com/tititake/MyShellScripts/blob/master/ubuntu-pptpd.sh
6
7
8 WANIF=`ip route get 8.8.8.8 | awk '{ for(f=0;f<NF;f++){if($f=="dev"){print $(f+1);exit;}} }'`
9 WANIP=`ip route get 8.8.8.8 | awk '{ print $NF; exit }'`
10 VPNUSER="pptp"
11 VPNPASS="eeettt888"
12
13 function error() {
14 echo -e "\e[0;31m $* \e[0m"
15 exit 1
16 }
17
18 function info() {
19 echo -e "\e[0;32m $* \e[0m"
20 }
21
22 cat /dev/ppp 2>&1 | grep "No such device" > /dev/null || \
23 error "Error : PPP is not enabled, abort."
24 [[ $EUID -eq 0 ]] || error "Error : This script must be run as root!"
25
26 echo "####################################"
27 echo "Server IP : $WANIP"
28 echo "VPN User : $VPNUSER"
29 echo "VPN Password : $VPNPASS"
30 echo "####################################"
31
32 read -p "Press [ENTER] to continue..."
33
34 dpkg-query -l iptables pptpd> /dev/null || ( \
35 apt-get update ; \
36 apt-get install -y iptables pptpd)
37
38 pptpd_conf="
39 option /etc/ppp/pptpd-options
40 logwtmp
41 localip 172.20.1.1
42 remoteip 172.20.1.2-254"
43
44 echo "$pptpd_conf" > /etc/pptpd.conf
45
46 pptpd_options="
47 name pptpd
48 refuse-pap
49 refuse-chap
50 refuse-mschap
51 require-mschap-v2
52 require-mppe-128
53 proxyarp
54 nodefaultroute
55 lock
56 nobsdcomp
57 novj
58 novjccomp
59 nologfd
60 ms-dns 8.8.8.8
61 ms-dns 8.8.4.4"
62
63 echo "$pptpd_options" > /etc/ppp/pptpd-options
64
65 chap_secrets="
66 $VPNUSER * $VPNPASS *
67 "
68 echo "$chap_secrets" > /etc/ppp/chap-secrets
69
70 echo 1 > /proc/sys/net/ipv4/ip_forward
71 grep '^net.ipv4.ip_forward.*=.*1$' /etc/sysctl.conf > /dev/null || \
72 echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
73
74 iptables --list -t nat | grep 172.20.1.0 | grep MASQUERADE > /dev/null || \
75 iptables -t nat -A POSTROUTING -s 172.20.1.0/24 -o $WANIF -j MASQUERADE
76 iptables --list | grep 172.20.1.0 | grep TCPMSS > /dev/null || \
77 iptables -I FORWARD -p tcp --tcp-flags SYN,RST SYN -s 172.20.1.0/24 -j TCPMSS --clamp-mss-to-pmtu
78
79 iptables-save > /etc/iptables.conf
80 echo '#!/bin/sh' > /etc/network/if-up.d/iptables
81 echo "iptables-restore < /etc/iptables.conf" >> /etc/network/if-up.d/iptables
82 chmod +x /etc/network/if-up.d/iptables
83
84 echo '#!/bin/sh' > /etc/ppp/ip-up.d/set_pptp_mtu
85 echo "ifconfig ppp0 mtu 1500" >> /etc/ppp/ip-up.d/set_pptp_mtu
86 chmod +x /etc/ppp/ip-up.d/set_pptp_mtu
87
88 service pptpd restart
89
90 netstat -anp|grep pptpd|grep 1723 > /dev/null 2>&1 && \
91 info "pptpd service is running, seems everything is OK." || \
92 error "pptpd service is not running, something wrong happend."

Ubuntu下快速安装pptpd

ubuntu下一键安装pptpd的更多相关文章

  1. CentOS下一键安装Openstack

    CentOS下一键安装Openstack 系统环境:Oracle VirtualBox 4.38CentOS-6.5-x86_64-bin-DVD1.iso 安装前需要修改 /etc/hosts文件, ...

  2. 在Ubuntu下编译安装GreatSQL

    在Ubuntu下编译安装GreatSQL 本次介绍如何利用Docker构建Ubuntu环境,并将GreatSQL源码编译成二进制文件. 1.准备工作 先创建本次Docker的workdir为 /dat ...

  3. Torch7在Ubuntu下的安装与配置

    Torch7的本系列教程的主要目的是介绍Torch的入门使用.今天首先分享一下Torch7的安装.(在Ubuntu14.04安装torch7) 为什么选择Torch Torch的目标是在建立科学算法的 ...

  4. ubuntu下git安装及使用

    ubuntu下git安装及使用   其实,好几个月前,就已经安装好了,可是一直搁置在那儿,所以密码等一些其它细节都忘的差不多了,所以今天就重新部署了一下,并开始积极使用......... 1,git ...

  5. premake Ubuntu下的安装

    premake是个跨平台的编译工具,先看看在Ubuntu下怎么安装. 首先下载,在/usr目录下: sudo wget -O premake-4.4-beta4-linux.tar.gz http:/ ...

  6. linux,windows,ubuntu下git安装与使用

    ubuntu下git安装与使用:首先应该检查本地是否已经安装了git ,如果没有安装的话,在命令模式下输入 sudo apt-get install git 进行安装 输入git命令查看安装状态及常用 ...

  7. Linux 64位下一键安装scipy等科学计算环境

    Linux 64位下一键安装scipy等科学计算环境 采用scipy.org的各种方法试过了,安装还是失败.找到了一键式安装包Anaconda,基本python要用到的库都齐了,而且还可以选择安装到其 ...

  8. ubuntu下如何安装codeblocks集成开发环境

    codeblocks是一个十分优秀的C/C++开发IDE,虽然后起之秀codelite目前来看大有超越之势哦. 不过在ubuntu下安装codeblocks却比较麻烦,不像其他linux发行版,比如s ...

  9. ubuntu下makeinfo安装,其实真正安装的是texinfo包

    操作系统环境:ubuntu 在终端中执行命令:sudo apt-get install texinfo   今天在打包的时候有个包需要 makeinfo,当时就各种搜结果就没有 makeinfo 这个 ...

随机推荐

  1. 使用Spring Boot DevTools优化你的开发体验

    场景再现 某日少年收到前端同学发来的消息说联调的接口响应异常

  2. 牛客网PAT练兵场-D进制的A+B

    题解:大多数做法是利用循环相除,取余.我是将将A+B传入f函数,利用递归实现D进制的输出 题目地址:https://www.nowcoder.com/questionTerminal/a2063993 ...

  3. 图解 K8s 核心概念和术语

    我第一次接触容器编排调度工具是 Docker 自家的 Docker Swarm,主要解决当时公司内部业务项目部署繁琐的问题,我记得当时项目实现容器化之后,花在项目部署运维的时间大大减少了,当时觉得这玩 ...

  4. 面试官:谈一下你对DDD的理解?我:马什么梅?

    领域模型(domain model)是对领域内的概念类或现实世界中对象的可视化表示.领域模型也称为概念模型.领域对象模型和分析对象模型. ——<UML和模式应用> 我们在日常开发中,经常针 ...

  5. 从零开始的SpringBoot项目 ( 三 ) 项目打包( jar包篇 )

    一.准备工作 1.工具:Idea , maven 2.首先得保证 pom 有 maven 插件 二.开始打包 找到最右边的Maven Projects,点击进去,选择需要打包的项目,并点击 insta ...

  6. 深入理解C++中的new/delete和malloc/free动态内存管理

    malloc/free和new/delete的区别 malloc/free是C/C++标准库的函数:new/delete是C++操作符. malloc/free只是动态分配内存空间/释放空间:new/ ...

  7. 每日JS逆向练习之斗鱼登录密码加密,今天你练了吗?

    一切的基本功都是为后期调试滑块验证码准备的. 有兴趣的关注一下知识图谱与大数据公众号,当然不关注也无所谓.今天来看看斗鱼登录密码加密,正所谓熟能生巧,这种简单一点的基本3-5分钟就要能抠出来,有兴趣得 ...

  8. A Walk Through the Forest (最短路+记忆化搜索)

    Jimmy experiences a lot of stress at work these days, especially since his accident made working dif ...

  9. CTF线下awd攻防文件监控脚本

    CTF线下awd攻防赛中常用一个文件监控脚本来保护文件,但是就博主对于该脚本的审计分析 发现如下的问题: 1.记录文件的路径未修改导致log暴露原文件备份文件夹:drops_JWI96TY7ZKNMQ ...

  10. 6 vue-element.ui 左侧导航栏

    <template> <div> <el-menu :default-active="'/'+activeIndex2" mode="ver ...