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. 牛客网PAT练兵场-统计同成绩学生

    题解:开100的数组,进行存储人数,方便查询 题目地址:https://www.nowcoder.com/questionTerminal/3df4810cc0664b8bb848d785f68f7c ...

  2. neighbor和neigh_modify(转载)

    (转载:http://blog.sina.com.cn/s/blog_b48a7ac30102w4mg.html###) 以下取自:http://simulation.haotui.com/viewt ...

  3. java23种设计模式——四、原型模式

    源码在我的github和gitee中获取 目录 java23种设计模式-- 一.设计模式介绍 java23种设计模式-- 二.单例模式 java23种设计模式--三.工厂模式 java23种设计模式- ...

  4. 温故知新——Spring AOP

    Spring AOP 面向切面编程,相信大家都不陌生,它和Spring IOC是Spring赖以成名的两个最基础的功能.在咱们平时的工作中,使用IOC的场景比较多,像咱们平时使用的@Controlle ...

  5. java23种设计模式——八、组合模式

    目录 java23种设计模式-- 一.设计模式介绍 java23种设计模式-- 二.单例模式 java23种设计模式--三.工厂模式 java23种设计模式--四.原型模式 java23种设计模式-- ...

  6. JavaScript基础语法资料

    JavaScript基础第01天 1 - 编程语言 1.1 编程 编程: 就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到结果的过程. 计算机程序: 就是计算机所执行的一系列的 ...

  7. [PyTorch 学习笔记] 3.3 池化层、线性层和激活函数层

    本章代码:https://github.com/zhangxiann/PyTorch_Practice/blob/master/lesson3/nn_layers_others.py 这篇文章主要介绍 ...

  8. PageObject六大原则

    The public methods represent the services that the page offers 公共方法表示页面提供的服务 Try not to expose the i ...

  9. A+B in Hogwarts (20)(模拟)

    时间限制 1000 ms 内存限制 65536 KB 代码长度限制 100 KB 判断程序 Standard (来自 小小) 题目描述 If you are a fan of Harry Potter ...

  10. 面试【JAVA基础】多线程

    本次整理的内容如下: 1.进程与线程的区别 进程是一个可执行的程序,是系统资源分配的基本单位:线程是进程内相对独立的可执行单元,是操作系统进行任务调度的基本单位. 2.进程间的通信方式 2.1.操作系 ...