Alex的博客

本博客的文章均为原创,是本人从事行业多年来所遇见一些小问题的解决心得,希望可以帮助到大家!



centos6.3 搭建VPN服务器环境

首先需要验证是否开启了ppp,一般只有VPS才需要验证,自己的服务器肯定是开启的。
# cat /dev/ppp
cat: /dev/ppp: No such device or address
如果出现以上提示则说明ppp是开启的,可以正常架设pptp服务,若出现Permission denied等其他提示,你需要先去VPS面板里看看有没有enable ppp的功能开关,如果没有则需要发个ticket给你的提供商,让他们帮你开通,否则就不必要看下去了,100%无法成功配置PPTP。

修改内核,使其支持包转发
# vi /etc/sysctl.conf
net.ipv4.ip_forward的值从0改为1,否则服务器将不会进行包转发操作
sysctl -p
使内核配置生效

安装PPP和iptables
# yum -y install ppp iptables
如果你需要用户连接到你的服务器后可以访问外网,则iptables是必要的,它主要用来做地址转换,将内网IP转换成公网IP(NAT),从而实现上网。否则用户只能访问你服务器上的内网。

安装pptp
# rpm -ivh http://poptop.sourceforge.net/yum/stable/packages/pptpd-1.3.4-2.el6.i686.rpm(无法访问请下载附件)
64位系统用以下命令安装,上面针对32位用户
# rpm -ivh http://poptop.sourceforge.net/yum/stable/packages/pptpd-1.3.4-2.el6.x86_64.rpm(无法访问请下载附件)
由于yum源中没有pptpd这个包,所以这种安装方式是必要的,你也可以自己去寻找软件包,注意32位系统和64位系统需要选择各自的软件包

配置pptp
# vi /etc/pptpd.conf
打开配置文件后,在最下面找到
#localip 192.168.0.1
#remoteip 192.168.0.234-238,192.168.0.245
将注释去掉,并改成你自己想要设置的IP段
localip就是指定你服务器的内网IP地址,其实即便网卡没有配置成这个地址也无所谓
remoteip就是用户连接到你的服务器后,服务器为用户分配的ip地址范围,注意格式。
localip 192.168.1.254
remoteip 192.168.1.1-253

配置options.pptpd文件
# vi /etc/ppp/options.pptpd
打开后,找到下面字段,去掉注释,并修改成你想要为用户分配的dns服务器,一般指定google的即可
ms-dns 8.8.8.8
ms-dns 8.8.4.4

配置iptables转发规则
# iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j SNAT --to-source 122.96.157.22
以上命令的作用就是让192.168.1.0这个段的ip地址,可以通过122.96.157.22这个公网地址上网。
你需要将192.168.1.0/24替换成你在pptp.conf中设置的ip段和子网掩码,122.96.157.22替换成你服务器自己的公网ip地址,否则拨上来的用户是没有办法上网的。
 
 
# service iptables save
将新增的转发规则写入文件保存,不执行此命令,服务器重启后上面的转发规则就没了

清空iptables转发规则
# iptables -F -t nat
# iptables -X -t nat
# iptables -Z -t nat
如果不小心配置了错误的转发规则可以使用以上三条命令清空
 
修改iptables规则:
注释掉#-A FORWARD -j REJECT --reject-with icmp-host-prohibited
添加-A FORWARD -j ACCEPT
然后在上面添加开放端口和协议:
-A INPUT -p tcp -m state --state NEW -m tcp --dport 1723 -j ACCEPT
      -A INPUT -p tcp -m state --state NEW -m tcp --dport 1721 -j ACCEPT
      -A INPUT -p tcp -m state --state NEW -m tcp --dport 47 -j ACCEPT
      -A INPUT -p gre -j ACCEPT
 
 
# service iptables save
清空后别忘了再次使用保存命令将清空后的配置写入文件,否则重启后上次配置的转发规则又回恢复。


添加VPN账号密码
以上配置完成后,我们就可以添加VPN账号密码进行测试了
# vi /etc/ppp/chap-secrets
需要添加的4个字段分别为用户名,服务,密码,ip地址(如果为*,则表示随机分配,范围即为你在pptp.conf中的设置
以下表示添加了一个账号为test,密码为test,ip地址为随机分配的用户
# Secrets for authentication using CHAP
      # client        server  secret                  IP addresses
      #
        test            pptpd  test                        *  
保存以后我们就可以启动相关服务进行测试了。


启动相关服务
# service pptpd start
# service iptables start
此时就可以在另一台机器上建立VPN来测试了


将服务配置为开机自动启动
# chkconfig pptpd on
# chkconfig iptables on
 
 
随便说下怎么做端口映射
 
方法为如下:
   首先我注释掉了iptables文件原始的全部内容,然后在iptables文件中写入如下内容!
##################################### Nat段开始 #########################################
*nat
:PREROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
#
#------------------------------ Web Server 端口映射 ------------------------------
# 192.168.0.200 端口80
######################
# 用DNAT作端口映射!注意以下指令一定要在NAT透明代理的前面,否则无效!
-A PREROUTING -i eth1 -p tcp -d 221.222.111.10 --dport 80 -j DNAT --to-destination 192.168.0.200:80
-A PREROUTING -i eth0 -p tcp -d 221.222.111.10 --dport 80 -j DNAT --to-destination 192.168.0.200:80
#
#------------------------------ Iptables NAT 透明代理 ------------------------------
#
-A POSTROUTING -s 192.168.0.0/255.255.255.0 -j SNAT --to 221.222.111.10
#
COMMIT
##################################### Nat段结束 #########################################
###################################### Filter段开始 #####################################
#
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
#
#防止网络上其它计算机使用Ping命令探测本机:
-A INPUT -p icmp --icmp-type echo-request -i eth0 -j DROP
#
# 防止广播包从IP代理服务器进入局域网:
-A INPUT -s 255.255.255.255 -i eth0 -j DROP
-A INPUT -s 224.0.0.0/224.0.0.0 -i eth0 -j DROP
-A INPUT -d 0.0.0.0 -i eth0 -j DROP
# 屏蔽掉以下的TCP和UDP端口:
-A INPUT -i eth1 -p udp -m udp --dport 3 -j DROP
-A INPUT -i eth1 -p tcp -m tcp --dport 3 -j DROP
-A INPUT -i eth1 -p tcp -m tcp --dport 111 -j DROP
-A INPUT -i eth1 -p udp -m udp --dport 111 -j DROP
-A INPUT -i eth1 -p udp -m udp --dport 587 -j DROP
-A INPUT -i eth1 -p tcp -m tcp --dport 587 -j DROP
#
COMMIT
###################################### Filter段结束 #####################################
修改完以上的文件后,再将/etc/sysctl.conf 文件里面修改成 net.ipv4.ip_forward = 1 ,这个很重要,不然NAT代理不能生效的!
然后用#: service iptables restart 这个指令重起iptables 服务!!OK,你再试试看代理服务和WEB能否则正常访问,我想一定可以的!

附:
   Web Server 端口映射一定要在 Iptables NAT透明代理指令前面,否则内网用户将无法通过公网IP或域名访问内网的Web服务器!
 
浏览3313  评论0  Alex于 2013-1-27 5:54
发言