首页 > 编程知识 正文

centos pptp,centos安装pptp

时间:2023-05-04 18:57:44 阅读:240325 作者:357

一、检查是否支持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

#更改DNSms-dns 8.8.8.8ms-dns 8.8.4.4#修改日志文件nologfdlogfile /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 = 1net.ipv6.conf.default.disable_ipv6 = 1net.ipv6.conf.lo.disable_ipv6 = 1vm.swappiness = 0net.ipv4.neigh.default.gc_stale_time = 120net.ipv4.conf.all.rp_filter = 0net.ipv4.conf.default.rp_filter = 0net.ipv4.conf.default.arp_announce = 2net.ipv4.conf.lo.arp_announce = 2net.ipv4.conf.all.arp_announce = 2net.ipv4.tcp_max_tw_buckets = 5000net.ipv4.tcp_max_syn_backlog = 1024net.ipv4.tcp_synack_retries = 2kernel.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

#!/哭泣的羊/sh# get the username/ppp line number from the parametersREALDEVICE=$1USER=$2# create the directory to keep pid files per usermkdir -p /var/run/pptpd-users# if there is a session already for this user, terminate the old oneif [ -f /var/run/pptpd-users/$USER ]; thenkill -HUP `cat /var/run/pptpd-users/$USER`rm /var/run/pptpd-users/$USERfi# copy the pid file of current user to /var/run/pptpd-userscp "/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.logecho "time: `date -d today +%F_%T`" >> /var/log/pptpd.logecho "clientIP: $6" >> /var/log/pptpd.logecho "username: $PEERNAME" >> /var/log/pptpd.logecho "device: $1" >> /var/log/pptpd.logecho "vpnIP: $4" >> /var/log/pptpd.logecho "assignIP: $5" >> /var/log/pptpd.logecho "-----------------------------------------------------------" >> /var/log/pptpd.log

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

vi /etc/ppp/ip-down.local

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

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

最后重启pptpd服务

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。