CentOS6.8系统下安装VPN(pptpd)服务器

星期六休息,没事又开始折腾那台vps了,上周在上面安装了shadowsocks和vsftpd,一直开着就没动过了,ss代理需要单独安装客户端,只能寻找另一种方案代替了。

PPTP
点对点隧道协议(PPTP)是一种实现虚拟专用网络的方法。 PPTP使用用于封装PPP数据包的TCP及GRE隧道控制通道
PPTP可以应用到几乎所有的操作系统,无需安装任何软件。

部署环境:
硬件平台:vps,基于kvm虚拟化,512MB Memory
OS:CentOS 6.8
网络:eth0  45.76.210.222

验证内核是否加载MPPE模块
[[email protected] ~]# modprobe ppp-compress-18 && echo is ok
is ok
[[email protected] ~]#

安装所需的依赖包
[[email protected] ~]# yum install ppp

安装pptpd
[[email protected] ~]# yum install pptpd
说明:如果所使用的yum源中没有pptpd,就手动去下载该软件包或者包含该软件包的源

[[email protected] software]# wget http://poptop.sourceforge.net/yum/stable/rhel6/x86_64/pptpd-1.4.0-1.el6.x86_64.rpm
如果报错找不到路径,就需要手动进该网站,可能路径有所改动。

我把源和该软件包都下载了
[[email protected] software]# ls
pptpd-1.4.0-1.el6.x86_64.rpm  pptp-release-4-7.rhel6.noarch.rpm

[[email protected] software]# rpm -ivh pptpd-1.4.0-1.el6.x86_64.rpm

ppp配置:
配置ppp,一个option文件/etc/ppp/options.pptpd,一个用户账户文件
[[email protected] software]# grep -vE "^#|^ *$" /etc/ppp/options.pptpd
name pptpd
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
require-mppe-128
ms-dns 108.61.10.10
ms-dns 8.8.8.8
proxyarp
lock
nobsdcomp
novj
novjccomp
nologfd
说明:该文件就加两条ms-dns就可以了,可以写你所使用网络运营商默认的DNS

[[email protected] software]# cat /etc/ppp/chap-secrets
# Secrets for authentication using CHAP
# client        server  secret                  IP addresses
xjh     pptpd   123456         *
test    pptpd   123456         *

说明:VPN客户的用户名、服务名称、密码和IP地址范围,每行一个账户:

pptpd配置:
[[email protected] software]# grep -vE "^#|^ *$" /etc/pptpd.conf
option /etc/ppp/options.pptpd
logwtmp
localip 10.0.1.100
remoteip 10.0.1.101-111

说明:该配置文件就添加localip和remoteip两个参数就好了,localip为服务端的ip段,我暂且理解为网关,remoteip暂且理解为分配给客户端的ip段。这两项都可以分配多个ip。

注意:这两个IP段不能有重合。

开启系统内核的IP转发功能:
[[email protected] software]# grep ip_forward /etc/sysctl.conf
net.ipv4.ip_forward = 0

该参数默认为0,将该参数设置为1
net.ipv4.ip_forward = 1

使该参数修改生效:
[[email protected] software]# sysctl -p
net.ipv4.ip_forward = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
net.ipv6.conf.all.accept_ra = 2
net.ipv6.conf.eth0.accept_ra = 2

设置pptpd开机自启动:
[[email protected] software]# chkconfig --level 35 pptpd on

做到这里基本顺利,没遇到什么问题,在防火墙配置的过程中出现了一点小问题,很久没写防火墙了,基本忘的差不多了,自己不断填坑。

防火墙配置:
因为直接在公网IP上做的,所以防火墙的策略是关闭所有,开启所需,因为做了代理,OUTPUT链就全放开了。
[[email protected] scripts]# cat iptables.sh
#/bin/bash
#清除规则
iptables -F
iptables -X
iptables -Z
iptables -t nat -F
iptables -t nat -X
iptables -t nat -Z
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT

#设定规则
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP

#开启常用服务端口
iptables -A INPUT -p tcp --dport 21 -m state --state NEW -j ACCEPT
iptables -A INPUT -p tcp --dport 20 -m state --state NEW -j ACCEPT

iptables -A INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m recent --set
iptables -A INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m recent --update --seconds 300 --hitcount 5 -j DROP
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j ACCEPT

#开启端口转发
iptables -A INPUT -p gre -j ACCEPT
iptables -A INPUT -p tcp --dport 1723 -m state --state NEW -j ACCEPT
iptables -A FORWARD -s 10.0.1.0/24 -o eth0 -j ACCEPT
iptables -A FORWARD -d 10.0.1.0/24 -i eth0 -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.0.1.0/24 -o eth0 -j SNAT --to-source 45.76.210.222
iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -s 10.0.1.0/24 -j TCPMSS --set-mss 1400
/etc/init.d/iptables save

该防火墙配置,我并不是严格按四表五链的顺序来写的,我是按服务器上开的应用顺序来写的,可能执行效率上会有点问题,这个问题后续完善。

说明:
iptables -t nat -A POSTROUTING -s 10.0.1.0/24 -o eth0 -j SNAT --to-source 45.76.208.222(这是vps公网IP)
这一条也可以写成:
iptables -t nat -A POSTROUTING -s 10.0.1.0/24 -o eth0 -j MASQUERADE   (这种写法主要应用于无固定公网IP,直接让它自动获取访问外网的IP作为源IP。比如有些拨号上网,公网IP经常会变动)

写完上面这一条规则基本算是完成了,可以在客户端访问了

客户端连接能上google了,但是却不能访问baidu,一脸懵逼,这什么鬼????
查找原因,看日志。。。。。

iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -s 10.0.1.0/24 -j TCPMSS --set-mss 1400
这一条我查了很久才找到这种写法,主要很多网络方面的知识体系不全,钻了很多牛角尖,被百度坑的不要不要的,这里就不详写了。
这里面涉及到不同系统平台下MTU值不一样
查找相关知识
http://deferrable28.rssing.com/browser.php?indx=14833347&last=1&item=10
http://blog.csdn.net/inthat/article/details/17403829

写在最后,本来会的东西,很久不用就会变得很陌生,最后渐渐就不会使用了,以后有空还是多写写博客。

时间: 2024-12-20 01:17:59

CentOS6.8系统下安装VPN(pptpd)服务器的相关文章

CentOS6.7系统下安装配置Oracle11G R2

一.安装Oracle 11G前环境搭建 本次实验是基于Linux(CentOS6.7_64)下搭建oracle 11g环境,这里选择CentOS安装oracle并不是最佳选择,可以根据需要选择不同的Linux发行版,如Oracle Linux.SuSE Linux.Red Hat.IBM AIX等. VM或物理机的配置要求: 在实验环境安装oracle11g最少需要2G内存.2个cpu.2G交换分区.磁盘空间不低于20G. 生产环境中,要保证oracle的性能,建议最低配置为8G内存.4个cpu

Linux系统下安装搭建FTP服务器

FTP是File Transfer Protocol(文件传输协议),就是专门用来传输文件的协议.简单地说,支持FTP协议的服务器就是FTP服务器. FTP支持两种模式:PORT(主动).PASV(被动). PORT模式:首先FTP 客户端和服务器的TCP 21端口建立连接, 然后在这个通道上发送PORT命令,命令中包含客户端用某个端口连接,服务器收到命令后会利用数据端口(20)连接客户端那个端口. PASV模式:当开启一个FTP连接时,客户端会随机打开两个非特权端口A和B, 其中A端口和服务器

Centos6.x系统下安装telnet命令及使用

一.查看系统是否已安装telnet rpm -qa | grep telnet telnet-0.17-48.el6.x86_64 telnet-server-0.17-48.el6.x86_64 telnet 是挂在 xinetd 底下的,所以同时查看是否安装了xinetd服务 rpm -qa | grep xinetd xinetd-2.3.14-39.el6_4.x86_64 两者都没有的安装的话,yum安装以下服务 yum install xinetd telnet telnet-ser

Centos6.3系统下Smokeping2.6.8安装教程

Centos6.3系统下Smokeping2.6.8安装教程 smokeping是对IDC网络质量,稳定性等最好的检测工具,包括常规的 ping,dig,echoping,curl等,可以监视www服务器性能,监视dns查询性能,监视ssh性能等. 1.关闭防火墙和selinux服务 [[email protected] ~]# service iptables stop [[email protected] ~]# setenforce 0 2.用yum安装httpd服务以及一些库文件 [[e

CentOS6.4系统下FastDFS部署

    (一)   概述 FastDFS是一个开源的分布式文件系统,她对文件进行管理,功能包括:文件存储.文件同步.文件访问(文件上传.文件下载)等,解决了大容量存储和负载均衡的问题.特别适合以文件为载体的在线服务,如相册网站.视频网站等等. FastDFS服务端有两个角色:跟踪器(tracker)和存储节点(storage).跟踪器主要做调度工作,在访问上起负载均衡的作用. FastDFS系统结构如下图所示: 上传文件交互过程: 1. client询问tracker上传到的storage,不需

Centos 7.0 下安装 Zabbix server 服务器的安装及 监控主机的加入(1)

一.本系列分为6部分 1.Centos 7.0 下安装 Zabbix server 服务器的安装及 监控主机的加入 2.Centos 6.5 下安装 Zabbix server 服务器的安装及 监控主机的加入 3.zabbix server的Discover功能,实现zabbix agent 大批量的自动添加,并链接到指定的模版 4.zabbix 报警方式之 邮件报警 5.zabbix 报警方式之 微信公众号报警 6.zabbix server 端的优化工作(解决mysql 性能下降,以及zab

在Linux系统下安装大于mysql5.5版本的数据库

linux下mysql 5.5的安装方法: 1.安装所需要系统库相关库文件      gcc等开发包,在安装linux系统的时候安装. 2.创建mysql安装目录 # mkdir -p /usr/local/mysql/ 3.创建数据存放目录 # mkdir -p /service/data/ 4.创建用户和用户组与赋予数据存放目录权限 # groupadd mysql # useradd -g mysql mysql # chown mysql:mysql -R /service/data/

Linux系统下安装rz/sz命令以及使用说明

Linux系统下安装rz/sz命令以及使用说明 对于经常使用Linux系统的人员来说,少不了将本地的文件上传到服务器或者从服务器上下载文件到本地,rz / sz命令很方便的帮我们实现了这个功能,但是很多Linux系统初始并没有这两个命令.今天,我们就简单的讲解一下如何安装和使用rz.sz命令. 一.软件安装 1.编译安装(方法一) 这种方法必须保证机器可以上网,使用root账号登录系统后,依次执行下面命令: cd /tmp wget http://www.ohse.de/uwe/releases

linux系统下安装Apache(个人经验)

在安装Apache之前,我们需要安装Apr,和Apr相关的Apr-util,和pcre 这三个东西. Apr是Apache可移植运行库,pcre是一个Perl库,包括 perl 兼容的正规表达式库. 这三个文件的安装很类似,后面会详细讲. 我的系统是CentOS6.2 (保证安装了G++,后面会讲安装G++),准备四个文件分别是: 1.pcre-8.31.tar.bz2 2.apr-1.5.1.tar.gz 3.pcre-8.30.tar.bz2 4.httpd-2.4.10.tar.bz2 我