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

安装所需的依赖包 [root@vultr ~]# yum install ppp

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

ppp配置: 配置ppp,一个option文件/etc/ppp/options.pptpd,一个用户账户文件

echo 'ms-dns 8.8.8.8' >> /etc/ppp/options.pptpd echo 'ms-dns 8.8.4.4' >> /etc/ppp/options.pptpd

pptpd配置: [root@vultr software]# sed -i 's/^logwtmp/#logwtmp/g' /etc/pptpd.conf echo 'localip 192.168.0.1' >> /etc/pptpd.conf echo 'remoteip 192.168.0.100-199' >> /etc/pptpd.conf

[root@vultr software]# echo 'test pptpd 123456 *' >> /etc/ppp/chap-secrets

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

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

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

service pptpd restart

设置pptpd开机自启动: [root@vultr software]# chkconfig --level 35 pptpd on

防火墙配置:

yum install iptables-services

cat /etc/sysconfig/iptables

*filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -j REJECT --reject-with icmp-host-prohibited COMMIT

#开启常用服务端口 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 192.168.0.0/24 -o eth0 -j ACCEPT iptables -A FORWARD -d 192.168.0.0/24 -i eth0 -j ACCEPT iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -s 192.168.0.0/24 -j TCPMSS --set-mss 1400 /etc/init.d/iptables save

systemctl restart iptables.service  

systemctl enable iptables.service


如果pptp服务器还是有问题,可查看下面设置,如果没有问题,下面可以忽略

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

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

使该参数修改生效: [root@vultr 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

#开启常用服务端口 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 192.168.0.0/24 -o eth0 -j ACCEPT iptables -A FORWARD -d 192.168.0.0/24 -i eth0 -j ACCEPT iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -s 192.168.0.0/24 -j TCPMSS --set-mss 1400 /etc/init.d/iptables save

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

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

客户端连接能上google了,但是却不能访问baidu,看日志。。。。。

iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -s 192.168.0.0/24 -j TCPMSS --set-mss 1400 这里涉及到不同系统平台下MTU值不一样