CentOS 7下安装pptp服务

一、检查是否支持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.安装epel源

yum install -y epel-release

3.检查是否已添加到源列表中

yum repolist

4.没有则更新源列表

yum -y update

5.安装pptp

yum install -y pptpd

 

注:如出现异常:One of the configured repositories failed (Unknown)

解决方案是:先把epel卸载,更新后再装

yum remove epel-release

yum -y update

yum install epel-release

 

三、修改配置

1.vi /etc/pptpd.conf设置VPN内网IP段

最后IP设置改为:

localip 192.168.100.1

remoteip 192.168.100.234-238,192.168.100.245

2.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.vi /etc/ppp/chap-secrets

设置VPN账号密码(格式:{account} pptpd {password} *)

例:pptptest pptpd 123456 *

 

启动pptp:service pptpd start

关闭pptp:service pptpd stop

重启pptp:service pptpd restart

关闭防火墙,windows下使用使用“添加VPN连接”填写服务IP、用户名、密码连接应该可以连上,这时候本地电脑可以访问VPN服务器,但是不能访问外网

启动防火墙:service firewalld start

关闭防火墙:service firewalld stop

重启防火墙:service firewalld restart

 

四、开启服务器系统路由模式,支持包转发(通过VPN访问外网)

1.vi /etc/sysctl.conf 修改内核参数支持内核转发,增加一行:

net.ipv4.ip_forward=1

sysctl -p  #使设置立刻生效

2.创建规则文件: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>

3.启动防火墙:service firewalld start

4.添加服务:

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

允许防火墙伪装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.设置规则允许数据包由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

8.设置转发规则,从源地址发出的所有包都进行伪装,改变地址,由eth0发出:

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

9.重启防火墙:service firewalld restart

奇怪点,到了这步后发现还是无法上网

需要安装iptables增加规则才能访问外网,配置后卸载iptables也没有问题,或许可以用firewall-cmd命令替代,暂时不知道怎么替代命令

yum install -y iptables-services

 

开放pptp端口1723,允许转发

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

iptables -P FORWARD ACCEPT

iptables配置,配置虚拟网段NAT支持。如果pptp客户端不需要上网,可以忽略本步骤。

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

解决PPTP服务网速慢,参考网页: http://www.92csz.com/52/1244.html
iptables -I FORWARD -p tcp --syn -i ppp+ -j TCPMSS --set-mss 1356
 

保存iptables规则

service iptables save

10.重启防火墙:service firewalld restart

终于可以上网了,浏览器百度输入ip,发现是服务器的ip地址了

观察服务器日志/var/log/pptpd.log,连接断开都有日志打印

Plugin /usr/lib64/pptpd/pptpd-logwtmp.so loaded.
Using interface ppp0
Connect: ppp0 <--> /dev/pts/1
peer from calling number 116.22.2.240 authorized
MPPE 128-bit stateless compression enabled
Cannot determine ethernet address for proxy ARP
local  IP address 192.168.0.1
remote IP address 192.168.1.1


LCP terminated by peer (8Q^WM- ^@<M-Mt^@^@^@^@)
Connect time 0.1 minutes.
Sent 2686 bytes, received 7458 bytes.
Modem hangup
Connection terminated.
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章