一、检查是否支持PPTP

1、查看系统是否支持PPTP

modprobe ppp-compress-18 && echo success
#应该输出:success

2、是否开启TUN/TAP

cat /dev/net/tun
#应该输出:cat: /dev/net/tun: File descriptor in bad state

3、是否开启ppp

cat /dev/ppp
#应该输出:cat: /dev/ppp: No such device or address

如果环境不满足上面3个条件,表示很可能不支持pptp

二、安装相关软件

1、安装PPP

yum install -y ppp

2、安装PPTP

yum install -y pptpd

3、安装Iptbles

yum install -y iptables-services

三、配置PPTP

1、设置vpn网卡

vi /etc/pptpd.conf

# vpn服务虚拟网卡地址
localip 192.168.0.1
# 给连接到的机器分配的ip池
remoteip 192.168.0.101-200

2、修改DNS服务器及日志文件

vi /etc/ppp/options.pptpd

#更改DNS
ms-dns 8.8.8.8
ms-dns 8.8.4.4#修改日志文件
nologfd
logfile /var/log/pptpd.log

3、设置VPN账号密码
vi /etc/ppp/chap-secrets

# 格式:<用户名> pptpd <密码> *
pptptest pptpd 123456 *

4、启动pptp

  • 启动pptp:service pptpd start

  • 关闭pptp:service pptpd stop

  • 重启pptp:service pptpd restart

这时候本地电脑可以访问VPN服务器,但是不能访问外网

四、修改内核参数支持转发

1、开启服务器系统路由模式,支持包转发

vi /etc/sysctl.conf(如果文件没有内容,把下面这些全部复制进去即可)

net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
vm.swappiness = 0
net.ipv4.neigh.default.gc_stale_time = 120
net.ipv4.conf.all.rp_filter = 0
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_announce = 2
net.ipv4.tcp_max_tw_buckets = 5000
net.ipv4.tcp_max_syn_backlog = 1024
net.ipv4.tcp_synack_retries = 2
kernel.sysrq = 1
# 增加这一行
net.ipv4.ip_forward = 1

2、生效

sysctl -p

五、配置firewalld

1、创建规则文件

vi /usr/lib/firewalld/services/pptpd.xml

<?xml version="1.0" encoding="utf-8"?><service><short>pptpd</short><description>PPTP</description><port protocol="tcp" port="1723"/></service>

2、启动防火墙

service firewalld start

3、添加服务

firewall-cmd --permanent --zone=public --add-service=pptpd

  • 注:pptpd就是上面创建的pptpd.xml

4、允许防火墙伪装IP

firewall-cmd --add-masquerade

5、开启47及1723端口

firewall-cmd --permanent --zone=public --add-port=47/tcp

firewall-cmd --permanent --zone=public --add-port=1723/tcp

6、允许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

7、设置规则允许数据包由可访问外网的网卡(上图的em1)和 vpn虚拟网卡ppp+(加号指正则匹配一个数字)中进出

firewall-cmd --permanent --direct --add-rule ipv4 filter FORWARD 0 -i ppp+ -o em1 -j ACCEPT

firewall-cmd --permanent --direct --add-rule ipv4 filter FORWARD 0 -i em1 -o ppp+ -j ACCEPT

  • 注意把这里的em1改成自己可以访问外网的网卡

8、设置转发规则,从指定源地址发出的所有包都进行伪装,改变地址,由可访问外网的网卡发出

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

  • 注意:

    • em1:改成自己可访问外网网卡地址
    • 192.168.0.0/24:要和 /etc/pptpd.conf 的 remoteip 地址段对应,格式为 xxx.xxx.xxx.0/24

9、重启防火墙

service firewalld restart

六、配置iptables

1、开放pptp端口1723(pptp的连接端口)

iptables -I INPUT 7 -m state --state NEW -p tcp --dport 1723 -j ACCEPT

2、允许转发

iptables -P FORWARD ACCEPT

3、iptables配置,配置虚拟网段NAT支持。

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

4、解决PPTP服务网速慢
(参考网页: http://www.92csz.com/52/1244.html)

iptables -I FORWARD -p tcp --syn -i ppp+ -j TCPMSS --set-mss 1356

5、保存iptables规则

service iptables save

6、重启防火墙

service iptables restart

service firewalld restart

firewalld与iptables补充说明:

1、配置存储位置

  • iptables服务将配置存储在 /etc/sysconfig/iptables和/etc/sysconfig/ip6tables 中
  • firewalld将配置存储在/usr/lib/firewalld/和/etc/firewalld/中的各种XML文件中
  • 注意,/etc/sysconfig/iptables文件不存在,因为在Red Hat Enterprise Linux上默认安装了firewalld
  • 所以两个防火墙软件配置互不相干,如果要开启端口要把两个都开启

2、每次更改配置时

  • 在iptables服务中,每次更改都意味着刷新所有旧规则并从/etc/sysconfig/iptables读取所有新规则,即一次save之后,之前的所有的设置将丢失,只会保存该次save的内容

  • 而在firewalld中不需要重新创建所有规则。

  • iptables在更改配置后会丢失连接,但firewalld可以在运行时更改设置,而不会丢失现有的连接。

为了保证速度 限制一个账户登录(参考)
1、创建auth-up文件

vi /etc/ppp/auth-up

#!/bin/sh
# get the username/ppp line number from the parameters
REALDEVICE=$1
USER=$2
# create the directory to keep pid files per user
mkdir -p /var/run/pptpd-users
# if there is a session already for this user, terminate the old one
if [ -f /var/run/pptpd-users/$USER ]; then
kill -HUP `cat /var/run/pptpd-users/$USER`
rm /var/run/pptpd-users/$USER
fi
# copy the pid file of current user to /var/run/pptpd-users
cp "/var/run/$REALDEVICE.pid" /var/run/pptpd-users/$USER

流程如下:

  • 1.用户登录判断是否有/var/run/pptpd-users/用户名的文件

  • 2.如果有平滑重启这个vpn用户进程,如果没有创建这个文件,文本里面有用户进程ID

  • 3.老的连接被踢掉,新的连接可以使用

  • 备注:这种模式下,一个账号只允许一个用户使用。

2、保证有可执行权限
chmod a+x /etc/ppp/auth-up

3、重启pptpd

service pptpd restart

日志记录更多用户信息(参考)
vpn 登录和断开的时候,会自动执行/etc/ppp/ip-up和/etc/ppp/ip-down两个脚本,查看这两个脚本,会发现有这样一行 “This file ”should not be modified – make local changes to /etc/ppp/ip-up.local instead"

也就是说这两个脚本不要修改,如果要添加自定义的功能,修改ip-up.local脚本。

  • vi /etc/ppp/ip-up.local

    echo "---------------Login---------------------------------------" >> /var/log/pptpd.log
    echo "time: `date -d today +%F_%T`" >> /var/log/pptpd.log
    echo "clientIP: $6" >> /var/log/pptpd.log
    echo "username: $PEERNAME" >> /var/log/pptpd.log
    echo "device: $1" >> /var/log/pptpd.log
    echo "vpnIP: $4" >> /var/log/pptpd.log
    echo "assignIP: $5" >> /var/log/pptpd.log
    echo "-----------------------------------------------------------" >> /var/log/pptpd.log
    

    保存后,注意chmod +x ip-up.local添加可执行权限;

  • vi /etc/ppp/ip-down.local

    echo "---------------Logout--------------------------------------" >> /var/log/pptpd.log
    echo "time: `date -d today +%F_%T`" >> /var/log/pptpd.log
    echo "clientIP: $6" >> /var/log/pptpd.log
    echo "username: $PEERNAME" >> /var/log/pptpd.log
    echo "device: $1" >> /var/log/pptpd.log
    echo "vpnIP: $4" >> /var/log/pptpd.log
    echo "assignIP: $5" >> /var/log/pptpd.log
    echo "-----------------------------------------------------------" >> /var/log/pptpd.log
    

    保存后,注意chmod +x ip-down.local添加可执行权限;

最后重启pptpd服务

Centos7配置PPTP共享网络相关推荐

  1. CentOS7配置samba共享文件系统

    文章目录 一.安装软件包 二.修改系统配置 1.关闭SELINUX 2.开通防火墙端口 3.启用smb服务 三.Samba服务的参数文件 四.配置任何人都可以访问的共享文件系统 1.创建测试目录和文件 ...

  2. Centos7命令行连接wifi网络,手机usb共享网络

    Centos7命令行连接wifi网络,手机usb共享网络 无线网卡可用的情况下,查看网卡 激活 查看一下网卡状态 扫描可用wifi 连接指定wifi 获取ip 查看ip 使用以上方式连接手机热点有ip ...

  3. centos7开机自动连接网络和固定IP配置

    说明 centos7 系统安装好之后是默认是不自动连接网络 配置自动连接网络 进入网络配置文件目录: cd /etc/sysconfig/network-scripts/ 网络配置文件:ifcfg-x ...

  4. 利用Parallels Desktop如何配置Mac与 Windows之间共享网络

    在mac电脑上安裝Parallels Desktop后,默认设置状况下,Windows 已设置为与 mac电脑 Os X 共享网络设定.Windows 程序可以通过使用 Mac 的 IP 地址访问本地 ...

  5. VMware虚拟机设置固定IP配置步骤(与宿主机共享网络)

    1.目的: 实现a:虚拟机可以ping通宿主机,可以访问宿主机指定端口,宿主机可以ping通虚拟机,访问虚拟机指定端口. 实现b:本机可以上外网,虚拟机也可以上外网. 2.实现步骤: 2.1  虚拟机 ...

  6. Proxmox VE 网络配置 NAT共享IP 端口映射iptables、brook

    PVE网络配置官方文档:跳转 配置桥接网卡,使Proxmox VE(PVE)可以同时创建NAT虚拟机和独立IP虚拟机,同时可以使用脚本映射NAT虚拟机的端口到外网. 1.开启ipv4.ipv6转发 v ...

  7. Centos7配置yum源(本地yum源和阿里网络yum源)

    一.centos7配置yum源 yum源分为本地yum源和网络yum源 1.配置本地yum源 步骤一:在centos虚拟机中挂载光盘 1.创建挂载点目录 [root@localhost ~]# mkd ...

  8. 虚拟机centos7 配置网络不成功问题

    虚拟机centos7 配置网络不成功问题 重要可以分为三步 1.虚拟机安装 2.虚拟机网络配置 3.虚拟机内centos网络配置 具体的可以参考centos详细网关配置 在按照原文操作时依然无法连接 ...

  9. 驱动板网线直连电脑共享网络配置

    驱动板网线直连电脑共享网络配置 1 前置情况 1.1 电脑设置WiFi共享 1.2 查看主机和共享网络的ip 2 驱动板内设置共享网络 2.1 查看驱动板网络状态 2.2 UP BROADCAST R ...

最新文章

  1. 速度超快!字节跳动开源序列推理引擎LightSeq
  2. android easylink 搜索设备_手把手教你将数据从Android移动到iPhone步骤与技巧
  3. docker run指定entrypiont
  4. php msgid排重,如何应用php数组对百万数据停止排重
  5. 漫步最优化二十四——二分搜索
  6. Pytorch入门-2
  7. zend studio 的注册码-php的编辑器
  8. mysql 数据库取前后几秒 几分钟 几小时 几天的语句
  9. easyui自学模板代码
  10. 主板电源接口测试软件,雷电接口加入! Intel原厂血统Z77测试
  11. 台式计算机搜索不到无线信号,win7电脑搜不到无线信号怎么办_win7找不到无线网络怎么解决-win7之家...
  12. 怎么用u盘安装服务器系统,怎么安装原版Windows server 2008?U盘安装很省心
  13. c语言写定时闹钟程序,定时闹钟C语言程序.doc
  14. 领扣LintCode问题答案-5. 第k大元素
  15. 为什么不推荐大家去外包公司
  16. 清华化学北航学计算机怎么选填志愿,2017年清华、北航多校采用大类招生,高考志愿该如何填报?...
  17. 三分钟了解一下深度学习
  18. 高级运维工程师证书_一位IT运维工程师的CISSP认证历程,值得借鉴!
  19. swift 生命周期_iOS View的生命周期详解
  20. 120年奥运史:运动员和成绩(相关数据集)

热门文章

  1. 827. 最大人工岛
  2. 企业如何选择加密软件?
  3. Pandas 读取Excel并设定n列做MultiIndex
  4. 将下载的字体导入Dreamweaver(系统)
  5. 苹果手机群控免越狱手机投屏
  6. Python学习笔记 - 探索33个保留关键字
  7. AngularJS 如何进行字符串换行 HTML 换行的互换
  8. ubuntu安装klee教程
  9. MySQL中 show processlist命令详解
  10. php网站实战,PHP实战之WEB网站常见受攻击方式及解决办法