VPN服务搭建流程记录

article/2025/9/24 14:55:55

       之前,一直有想法搭建一套属于自己的VPN服务,但是,一直苦于"拖延症"的困扰,没有真正实际去实践。最近,终于打破了这个困扰,所以,也希望记录一下整体的搭建流程,操作系统CentOS7.2,在此,做一下记录。这里,我这边主要参考的前辈的文章记录是以下这个链接:搭建VPN服务之PPTP - 熊孩子

       真心很感谢前辈们的不吝指导,才使得本次有机会可以顺利搭建一下VPN服务。但是呢,实际的搭建的主要流程,有些细节与前辈的文章还是有些差异的,所以,还是想做一下对主要流程的记录:

1、查看系统是否支持PPP

[root@node01 ~]# cat /dev/ppp 
cat: /dev/ppp: No such device or address

如果出现以上提示则说明ppp是开启的,可以正常架设pptp服务,若出现Permission denied等其他提示,你需要先去VPS面板里看看有没有enable ppp的功能开关,如果没有则需要发个消息给你的提供商帮其打开,否则无法进行安装

2、设置内核转发

[root@node01 ~]# grep forward /etc/sysctl.conf
[root@node01 ~]# echo "net.ipv4.ip_forward = 1" >>/etc/sysctl.conf 
[root@node01 ~]# grep forward /etc/sysctl.conf
net.ipv4.ip_forward = 1
[root@node01 ~]# sysctl -p

3、安装PPTP

# 需要安装epel源
[root@node01 ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
[root@node01 ~]# yum -y install pptpd

备注:实际操作的时候,epel源,我并没有去下载,直接运行了命令:

yum -y install pptpd

yum -y install iptables

yum -y install iptables-services

4、配置PPTP

[root@node01 ~]# vim /etc/pptpd.conf
##增添
.......
localip 118.190.201.68
remoteip 172.16.1.10-80
# 添加本机公网IP(localip),分配VPN用户的内网网段(remoteip)

备注:localip填写公网IP,remoteip填写内网IP所在网段的地址范围

修改/etc/ppp/options.pptpd文件

name pptpd
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
require-mppe-128
proxyarp
lock
nobsdcomp
novj
novjccomp
nologfd
idle 2592000
ms-dns 8.8.8.8
ms-dns 8.8.4.4

备注:ms-dns修改为8.8.8.8与114.114.114.114,这2行值。

5、设置用户与密码

[root@node01 ~]# vim /etc/ppp/chap-secrets
John * 123456 *
###有四行第一行用户 第三行密码  其他行用*号表示

6、启动PPTP

[root@node01 ~]# systemctl start pptpd
[root@node01 ~]# netstat -lntup|grep 1723
tcp        0        0         0.0.0.0:1723         0.0.0.0:*         LISTEN         1651/pptpd

备注:此处可以使用systemctl status pptpd、systemctl restart pptpd、systemctl stop pptpd等命令来操作和管理此服务的开启、重启、查看服务状态等操作。

8、打开防火墙

开启47及1723端口:
firewall-cmd --zone=public --add-port=47/tcp --permanent
firewall-cmd --zone=public --add-port=1723/tcp --permanent允许防火墙伪装IP:
firewall-cmd --zone=public --add-masquerade允许gre协议:
firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT 0 -p gre -j ACCEPT
firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 0 -p gre -j ACCEPT设置规则允许数据包由eth0和ppp+接口中进出
firewall-cmd --permanent --direct --add-rule ipv4 filter FORWARD 0 -i ppp+ -o eth0 -j ACCEPT
firewall-cmd --permanent --direct --add-rule ipv4 filter FORWARD 0 -i eth0 -o ppp+ -j ACCEPT设置转发规则,从源地址发出的所有包都进行伪装,改变地址,由eth0发出:(192.168.0.0内网地址,子网地址前两位)
firewall-cmd --permanent --direct --passthrough ipv4 -t nat -I POSTROUTING -o eth0 -j MASQUERADE -s 192.168.0.0/24重启服务器:
firewall-cmd --reload
systemctl restart pptpd

备注:个人觉得比较重要的命令是下面几条:

8-1:允许防火墙伪装IP:

firewall-cmd --zone=public --add-masquerade

8-2:允许gre协议,此处感觉不一定需要执行任何命令

8-3:设置转发规则,从源地址发出的所有包都进行伪装,改变地址,由eth0发出:(192.168.0.0内网地址,子网地址前两位)

firewall-cmd --permanent --direct --passthrough ipv4 -t nat -I POSTROUTING -o eth0 -j MASQUERADE -s 192.168.0.0/24

附图一下安全组的配置:

TCP协议:1723端口,以及"全部GRE",可能是必须需要在安全组中开启的。

后续发现下面这几条命令可能才是最重要的:

iptables -t nat -A POSTROUTING -s 192.168.0.0/255.255.255.0 -j SNAT --to-source {服务器公网IP}iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADEiptables -A INPUT -p tcp --dport 1723 -j ACCEPTiptables -A INPUT -p gre -j ACCEPTiptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

添加NAT转发规则,*为云服务器的公网IP地址,命令如下:

iptables -t nat -A POSTROUTING -s 192.168.0.0/255.255.255.0 -j SNAT --to-source {服务器公网IP} 

备注:以上这条需不需要执行,待定

使用iptables设置转发规则:

iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE

备注:以上这条需不需要执行,待定

iptables -A INPUT -p tcp --dport 1723 -j ACCEPT

备注:以上这条需不需要执行,待定

iptables -A INPUT -p gre -j ACCEPT

备注:以上这条需不需要执行,待定

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

service iptables save

systemctl restart iptables

systemctl restart pptpd

9、查看日志的方法

1、上线日志
vim /etc/ppp/ip-up在[ -x /etc/ppp/ip-up.local ] && /etc/ppp/ip-up.local "$@" 后加上echo "$PEERNAME 分配IP: $5 登录IP: $6 登录时间: `date -d today +%F_%T`" >> /var/log/pptpd.log2、下线日志
vim /etc/ppp/ip-down在/etc/sysconfig/network-scripts/ifdown-post --realdevice ${REALDEVICE} \ifcfg-${LOGDEVICE}
后加上echo "$PEERNAME 下线IP: $6 下线时间: `date -d today +%F_%T`" >> /var/log/pptpd.log

备注:此处有条命令感觉挺实用的,用于查看在线的PPP用户

last | grep ppp | grep still

还可以通过以下文件:

/var/log/messages,来查看日志,看是否有client 端连接


http://chatgpt.dhexx.cn/article/7XCyKS53.shtml

相关文章

Guava常用方法

目录 简介 Maven依赖 字符串检查工具 NULL值检查 先决条件检查 判断对象是否为null 操作集合 简介 Guava,中文是石榴的意思,Guava项目,是基于java的Google的开源的工具类库,包含了许多被Google的java项目广泛依赖的核心库&…

【guava】基础用法

依赖 <dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>29.0-jre</version></dependency> 不可变集合与对象 优点&#xff1a;1、线程安全 2、可用作常熟 ImmutableXXX 创建方式&…

guacamole 源码_Guacamole学习笔记

1: 介绍: Guacamole可以同HTML5来代理远程桌面协议(如: VNC, RDP, Telnet, SSH) 官网: http://guac-dev.org/ 2: 架构: 架构图: image.png 架构解释: 用户通过浏览器连接到Guacamole的服务端, Guacamole通过JS写的客户端是为用户提供服务, 服务端和客户端的通信是基于HTTP的私有…

Guacamole 介绍以及架构

目前在从事一些虚拟化解决方案方面的工作&#xff0c;最近项目有需求&#xff0c;希望能在浏览器上远程操作虚拟机。 此时发现了Guacamole&#xff0c;一个提供远程桌面的解决方案的开源项目&#xff0c;通过浏览器就能操作虚拟机&#xff0c;适用于Chrome&#xff0c;Firefox&…

使用Google Guava来编写优雅的代码一Guava简介

以往我们在使用工具包的时候首先想到是著名的Apache的Commons系列,今天我要介绍的是同样出色&#xff0c;并且目前发展比Apache Commons系列更为迅速的Google Guava库。 Google Guava库是一个非常优秀的包含很多Java工具类集的库&#xff0c;广泛使用在Google公司内部&#xf…

guacamole学习小结(一)

一、快速安装 https://blog.csdn.net/qq_38781075/article/details/106459458 二、整体理解 先放一张经典的图。 guacamole最重要的作用还是连接远程服务器的&#xff0c;可以连接多台服务器&#xff0c;连接不同的远程协议的服务器。使得用户能远程快捷的访问远程桌面。它跨…

guacamole 认识

简介&#xff1a;guacamole是apache开源的一款连接远程机器(类似window机器的mstsc工具以及linux的 xfreerdp远程工具)的web应用。 官网&#xff1a;http://guacamole.apache.org/ 一、介绍 1、先看看官网提供的架构图 其中guacamole将架构图中 HTML5(JavaScript编写)以及g…

Guacamole搭建教程

目录 安装系统环境安装依赖环境安装依赖包 下载安装包服务端安装解压并安装&#xff1a;在当前目录下继续执行&#xff1a;安装完成之后&#xff0c;可以使用以下来看guacd是否安装成功&#xff1a; 客户端安装安装安装git安装maven 下载客户端并解压创建/etc/guacamole/文件目…

使用EasyDarwin+FFmpeg实现rtsp推流

一、背景 ​ 最近在学习ffmpeg的基本操作,ffmpeg功能非常强大&#xff0c;可以运行音频和视频多种格式的录影、转换、流功能&#xff0c;包含了libavcodec——这是一个用于多个项目中音频和视频的解码器库&#xff0c;以及libavformat——一个音频与视频格式转换库 可以利用ff…

windows 10 安装EasyDarwin流服务器推流、本地存储

1、EasyDarwin介绍 EasyDarwin 是一款开源的、高性能的rstp流媒体服务器&#xff0c;基于go语言开发。主要功能有&#xff1a;支持rtsp推流分发、支持rtsp拉流分发、录像、检索、回访、关键帧缓存、秒开画面、Restful接口、web后台管理、分布式负载均衡等特点。 2、安装部署&a…

从零开始搭建EasyDarwin环境——Windows系统开发环境Golang的搭建

EasyDarwin在语言上服务端使用的是Golang&#xff0c;前端网页是Vue&#xff0c;因此我们需要有Golang和node的开发环境。上一篇我们介绍了Linux环境下的搭建&#xff0c;本章我们将说明一下如何在Windows下搭建起Golang环境。 一、下载 Go包 Go的官方网站&#xff1a;http://…

EasyDarwin源码分析(三)——rtsp-client

rtsp-client.go 这个模块主要实现了客户端的拉流功能。也就是在网页上点击“拉流分发”按钮后&#xff0c;easydarwin会向用户填写的源地址拉流&#xff0c;然后再转发出去&#xff0c;在向源地址拉流的时候&#xff0c;easydarwin相当于是一个rtsp客户端。所以这里使用rtsp-c…

EasyDarwin源码分析(一)——main.go

main.go ​ easydarwin源码的代码量不是很多&#xff0c;主要的代码也就集中在下面的几个文件夹中&#xff0c;核心业务的代码也就主要集中在rtsp包中。 ​ 而且用Go语言写的代码&#xff0c;不像springboot那样&#xff0c;你在读源码前至少要对Springboot框架有一定的学习&a…

关于EasyDarwin二次开发编译后无法以服务启动的问题

问题描述&#xff1a; 在win7上二次开发EasyDarwin后&#xff0c;编译出的EasyDarwin.exe运行正常&#xff0c;或是使用ServiceInstall-EasyDarwin.exe在系统中注册服务&#xff0c;启动服务也正常。 于是打包将其部署在win server 2008上&#xff0c;发现如果直接运行EasyDar…

EasyDarwin接口的使用——使用C++编写客户端实现与EasyDarwin服务器的交互

EasyDarwin提供了接口供客户端使用&#xff0c;以实现客户端与其的交互。比如&#xff0c;根据EasyDarwin的8.1.0版本的接口文档&#xff0c;有获取推流列表的接口如下所示&#xff1a; 我们可以测试一下上述接口。首先启动EasyDarwin服务器&#xff0c;启动后在浏览器&#xf…

EasyDarwin的交叉编译

easyDarwin的交叉编译 前言一、EasyDarwin简介二、配置环境介绍三、交叉编译过程1.go环境的搭建2.编译 后记 前言 最近项目有个需求是在嵌入式设备中运行一个RTSP服务器&#xff0c;满足推流到该服务器后&#xff0c;其他终端设备能够从这个RTSP服务器中拉RTSP流出来。找来找去…

EasyDarwin 流服务器搭建及相关软件教程

一、产品 运行 exe 文件 启动 服务器 双击 运行 EasyDarwin.exe 会出现如下界面&#xff1a; 在 浏览器打开 http://192.168.10.80:10008 2.解压ffmpeg 添加环境变量&#xff1a;复制C:\SoftWare\ffmpeg-6.0-essentials_build\bin路径&#xff0c;添加环境变量中 的用户变…

EasyDarwin —— ubuntu搭建rtsp服务,使用FFmpeg进行rtsp推拉流

开源流媒体服务器 EasyDarwin是由国内开源流媒体团队开发和维护的一款开源流媒体平台框架&#xff0c;从2012年12月创建并发展至今&#xff0c;从原有的单服务的流媒体服务器形式&#xff0c;扩展成现在的云平台架构的开源项目&#xff0c;更好地帮助广大流媒体开发者和创业型企…

EasyDarwin测试

EasyDarwin是由国内开源流媒体团队维护的一款开源流媒体平台框架&#xff0c;开发语言是go语言。本文主要使用它作为RTSP服务器使用&#xff0c;并以此进行测试。方便之后记录。 &#xff08;1&#xff09;软件获取&#xff08;自行下载&#xff0c;具体代码编译方式&#xff0…

流媒体开发之EasyDarwin搭建rtsp server

0 背景 EasyDarwin 旭帆科技开源的流媒体服务器软件&#xff0c;EasyDarwin 社区专注于传统安防&#xff08;RTSP/RTP/Onvif&#xff09;流媒体技术&#xff0c;能够帮助开发者快速搭建流媒体服务平台&#xff0c;更快、更简单地实现流媒体直播与点播功能。本文主要介绍 rtsp …