原理:PPTP 使用 PPP 协议对用户数据进行封装,然后将 PPP 数据帧封装在 IP 数据包里,pptpd 更多是负责客户端到服务器的连接,ppp协议负责用户数据包的封装和转发,当客户端连接到服务器时pptpd服务就是创建一个虚拟网卡ppp0进行用户数据包的封装,和转发到物理网卡,进入以太网
1:验证内核是否加载MPPE模块
modprobe ppp-compress-18 && echo MPPE is Success
#打印Success表示已加载
2:安装ppp软件
yum install ppp -y
3:安装pptpd
rpm -ivh http://poptop.sourceforge.net/yum/beta/packages/pptpd-1.4.0-1.el6.x86_64.rpm
4:配置pptpd和ppp
vi /etc/ppp/options.pptpd
#把以下选项的注释#去掉
name pptpd refuse-pap refuse-chap refuse-mschap require-mschap-v2 require-mppe-128 ms-dns 8.8.8.8 ms-dns 8.8.4.4 proxyarp lock nobsdcomp novj novjccomp nologfd
以上至于不知道指定什么的,可以看配置文件的解释,虽然都是英文但是解释还是挺清楚
5:添加用户
vi /etc/ppp/chap-secrets
#打开配置文件
username1 pptpd passwd1 * #一行一个用户 username2 pptpd passwd2 * #分别是 用户名 服务 密码 来源ip(这个可以指定网段或者唯一IP)如果不符合全都拒绝掉,*号知道正则表达式的都知道是什么
6;配置pptpd服务
vi /etc/pptpd.conf
把以下行的注释去掉
option /etc/ppp/options.pptpd logwtmp localip 172.16.36.254 remoteip 172.16.36.1-250
7:打开内核转发
vi /etc/sysctl.conf
net.ipv4.ip_forward = 1 #找到这个选项并且改成1
#保存后执行
sysctl -p
8:启动pptpd服务
chkconfig pptpd on #加入开机自动启动 service pptpd start #启动pptpd服务
9:添加防火墙规则
#备份原来的防火墙规则
[root@local ~]# cp /etc/sysconfig/iptables /etc/sysconfig/iptables.bak [root@local ~]# iptables -P INPUT ACCEPT #设置全部为允许,以免等下清除防火墙规则时,ssh断开 [root@local ~]# iptables -F [root@local ~]# iptables -X [root@local ~]# iptables -Z #清除防火墙规则结束
#添加防火墙规则
[root@local ~]# iptables -A INPUT -i lo -p all -j ACCEPT [root@local ~]# iptables -A INPUT -p gre -j ACCEPT [root@local ~]# iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT [root@local ~]# iptables -A INPUT -p tcp -m tcp --dport 21 -j ACCEPT [root@local ~]# iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT [root@local ~]# iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT [root@local ~]# iptables -A INPUT -p tcp -m tcp --dport 1723 -j ACCEPT [root@local ~]# iptables -A FORWARD -p tcp --syn -s 172.16.36.0/24 -j TCPMSS --set-mss 1356
#设置共享ip,nat表预路由
[root@local ~]# iptables -t nat -A POSTROUTING -s 172.16.36.0/24 -o eth0 -j MASQUERADE
#因为命令生成的重启后就会失效,所以我们要把它不保存到配置文件中
[root@local ~]# iptables-save > /etc/sysconfig/iptables
#重启[root@local ~]# iptables
[root@local ~]# service iptables restart
给大家发一个我VPS的iptables文档参考
# Generated by iptables-save v1.4.7 on Mon Sep 21 10:53:00 2015
*filter
:INPUT ACCEPT [2:156]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [20:1845]
-A INPUT -i lo -j ACCEPT
-A INPUT -p gre -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 21 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 25 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 110 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 8080 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 1723 -j ACCEPT
-A INPUT -s 127.0.0.1/32 -p tcp -m tcp --dport 3306 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 3306 -j DROP
-A INPUT -i virbr0 -p udp -m udp --dport 53 -j ACCEPT
-A INPUT -i virbr0 -p tcp -m tcp --dport 53 -j ACCEPT
-A INPUT -i virbr0 -p udp -m udp --dport 67 -j ACCEPT
-A INPUT -i virbr0 -p tcp -m tcp --dport 67 -j ACCEPT
-A INPUT -p udp -m udp --dport 53 -j ACCEPT
-A FORWARD -s 172.16.36.0/24 -j ACCEPT
-A FORWARD -d 172.16.36.0/24 -j ACCEPT
-A FORWARD -p tcp --syn -s 172.16.36.0/24 -j TCPMSS --set-mss 1356
-A FORWARD -i ppp+ -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
-A FORWARD -d 192.168.122.0/24 -o virbr0 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -s 192.168.122.0/24 -i virbr0 -j ACCEPT
-A FORWARD -i virbr0 -o virbr0 -j ACCEPT
-A FORWARD -o virbr0 -j REJECT --reject-with icmp-port-unreachable
-A FORWARD -i virbr0 -j REJECT --reject-with icmp-port-unreachable
COMMIT
# Completed on Mon Sep 21 10:53:00 2015
# Generated by iptables-save v1.4.7 on Mon Sep 21 10:53:00 2015
*nat
:PREROUTING ACCEPT [12:1068]
:POSTROUTING ACCEPT [25:1844]
:OUTPUT ACCEPT [25:1844]
-A POSTROUTING -s 192.168.122.0/24 ! -d 192.168.122.0/24 -p tcp -j MASQUERADE --to-ports 1024-65535
-A POSTROUTING -s 192.168.122.0/24 ! -d 192.168.122.0/24 -p udp -j MASQUERADE --to-ports 1024-65535
-A POSTROUTING -s 192.168.122.0/24 ! -d 192.168.122.0/24 -j MASQUERADE
-A POSTROUTING -s 172.16.36.0/24 -o eth2 -j MASQUERADE
COMMIT
# Completed on Mon Sep 21 10:53:00 2015
# Generated by iptables-save v1.4.7 on Mon Sep 21 10:53:00 2015
*mangle
:PREROUTING ACCEPT [283:25473]
:INPUT ACCEPT [281:25015]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [258:37097]
:POSTROUTING ACCEPT [258:37097]
-A POSTROUTING -o virbr0 -p udp -m udp --dport 68 -j CHECKSUM --checksum-fill
COMMIT
# Completed on Mon Sep 21 10:53:00 2015
windows客户端若遇到拨通×××后无法访问内网资源请 CMD 下输入
route -p add 172.16.0.0 mask 255.255.0.0 192.168.10.254
注:172.16.0.0为×××网段,根据个人情况可以使用192.168.1.0 或 192.168.10.0,具体情况根据你×××网段设置而定;
255.255.0.0为掩码,通常使用 255.255.255.0 即可;
192.168.10.254 为局域网网关IP地址,请根据个人情况设置。
转载于:https://blog.51cto.com/itpanda/1722770