实验环境:
(1) 公司所有game服务器,只允许一个外网ip去访问,需要维护服务器,必须先拨号到指定外网ip。
(2) 公司与总部通信都是走vpn通道,公司内部ip与vpn设备下是不同网段,需要在vpn设备下接一台双网卡服务器
解决方案:通过linux下的pptp协议,远程用户能通过支持点对点协议的所有操作系统,安全访问网络.
实验图:
根据方案,需在192.168.15.50搭建Poptop服务
关于Poptop介绍信息:
Poptop是一个 PPTP 服务器的开源实现,采用 C 预言开发,可运行在 x86 或者是摩托罗拉嵌入式ColdFire体系。可与微软的 PPTP VPN 客户端进行完全互操作。
点对点隧道协议(PPTP)是一种支持多协议虚拟专用网络的网络技术。通过该协议,远程用户能够通过 Microsoft Windows NT 工作站、Windows 95 和 Windows 98 操作系统以及其它装有点对点协议的系统安全访问公司网络,并能拨号连入本地 ISP,通过 Internet 安全链接到公司网络。
PPTP 可以用于在 IP 网络上建立 PPP 会话隧道。在这种配置下,PPTP 隧道和 PPP 会话运行在两个相同的机器上,呼叫方充当 PNS。PPTP 使用客户机-服务器结构来分离当前网络访问服务器具备的一些功能并支持虚拟专用网络。PPTP作为一个呼叫控制和管理协议,它允许服务器控制来自 PSTN 或 ISDN 的拨入电路交换呼叫访问并初始化外部电路交换连接。
PPTP 只能通过 PAC 和 PNS 来实施,其它系统没有必要知道 PPTP。拨号网络可与 PAC 相连接而无需知道 PPTP。标准的PPP 客户机软件可继续在隧道 PPP 链接上操作。
PPTP 使用 GRE 的扩展版本来传输用户 PPP 包。这些增强允许为在 PAC 和 PNS 之间传输用户数据的隧道提供低层拥塞控制和流控制。这种机制允许高效使用隧道可用带宽并且避免了不必要的重发和缓冲区溢出。PPTP 没有规定特定的算法用于低层控制,但它确实定义了一些通信参数来支持这样的算法工作。
Poptop环境需要软件包:
1.Dkms
2.kernel_ppp_mppe MPPE (Microsoft Point to Point Encryption,微软点对点加密)
3.ppp PPP(Point-to-Point Protocol,点到点协议)
4.pptpd
步骤如下:
1.查看还需安装哪些软件,由于RHEL 5 的 2.6.18 内核已经集成了MPPE和高版本的ppp
[root@viong ~]# rpm -q ppp
ppp-2.4.4-2.el5
[root@viong ~]# strings '/usr/sbin/pppd'|grep -i mppe|wc -l
42
检查PPP是否支持MPPE,若结果显示“0”则表示不支持,而“30”或更大的数字就表示支持。
[root@viong ~]# modprobe ppp-compress-18 && echo ‘ok! MPPE was found !’
ok! MPPE was found !
检查内核MPPE补丁是否安装成功:若结果显示“ok! MPPE was found !”则表示成功。
[root@viong ~]# rpm -q dkms
package dkms is not installed
[root@viong ~]# rpm -q pptpd
package pptpd is not installed
2. 安装软件
[root@viong soft]# rpm –ivh http://poptop.sourceforge.net/yum/stable/packages/dkms-2.0.17.5-1.noarch.rpm
[root@viong soft] rpm –ivh http://poptop.sourceforge.net/yum/stable/packages/pptpd-1.3.4-1.rhel5.1.i386.rpm
3.修改pptpd.conf配置参数
[root@viong soft]# vi /etc/pptpd.conf
95 # (Recommended)
96 #localip 192.168.0.1
97 #remoteip 192.168.0.234-238,192.168.0.245
修改为:
95 # (Recommended)
96 localip 192.168.126.2
97 remoteip 192.168.126.100-200
注: /etc/pptpd.conf 常用配置
option /etc/ppp/options.pptpd
PPP组件将使用的配置文件;
stimeout 120
开始PPTP控制连接的超时时间,以秒计;
debug
把所有debug信息记入系统日志/var/log/messages;
localip 192.168.1.10
服务器VPN虚拟接口将分配的IP地址,可设置为与VPN服务器内网地址相同网段的IP,也可设置为另一网段的IP;
remoteip 192.168.1.11-30
客户端VPN连接成功后将分配的IP地址段,同样可设置为与VPN服务器内网地址相同网段的IP地址段,也可以设置为另一网段的IP地址段;
logwtmp
该功能项的作用是“使用wtmp记录客户端的连接与断开信息
4.修改options.pptpd配置参数
/etc/ppp/options.pptpd 默认配置就ok
注:/etc/ppp/options.pptpd常用配置
name pptpd
pptpd server 的名称。
refuse-pap
拒绝 pap 身份验证模式。
refuse-chap
拒绝 chap 身份验证模式。
refuse-mschap
拒绝 mschap 身份验证模式。
require-mschap-v2
在端点进行连接握手时需要使用微软的 mschap-v2 进行自身验证。
require-mppe-128
MPPE 模块使用 128 位加密。
ms-dns 61.139.2.69
ms-dns 202.98.96.68
ppp 为 Windows 客户端提供 DNS 服务器 IP 地址,第一个 ms-dns 为 DNS Master,第二个为 DNS Slave。
proxyarp
建立 ARP 代理键值。
debug
开启调试模式,相关信息同样记录在 /var/logs/message 中。
lock
锁定客户端 PTY 设备文件。
nobsdcomp
禁用 BSD 压缩模式。
novj
novjccomp
禁用 Van Jacobson 压缩模式。
nologfd
禁止将错误信息记录到标准错误输出设备(stderr)
5.修改chap-secrets配置参数
[root@viong soft]# vi /etc/ppp/chap-secrets
# Secrets for authentication using CHAP
# client server secret IP addresse
viong * 123 *
注:
viong 用户账号
*代表自动识别当前服务器主机名,也可以手动配置
123 用户密码
*代表自动分配可用的IP地址,可根据需要指定IP地址
也可以使用vpnuser命令来进行配置:
# vpnuser add viong 123 添加一个viong用户
6.开启路由转发
因为VPN客户端在拨号后实际是通过服务器外网网卡进行数据通信的,那么要访问内网网段的地址就必须开启数据包转发,使外网网卡的数据包能够转发到内网网卡上
[root@viong soft]# vi /etc/sysctl.conf
6 # Controls IP packet forwarding
7 net.ipv4.ip_forward = 0
修改为:
6 # Controls IP packet forwarding
7 net.ipv4.ip_forward = 1
[root@viong soft]# sysctl -p /etc/sysctl.conf
路由转发立即生效
7. 防火墙配置
对于默认开启了SELinux认证:
需执行以下命令使pppd与pptp穿透SELinux
[root@viong soft]# setsebool pppd_disable_trans 1
[root@viong soft]# setssebool pptp_diable_trans 1
附上关闭SELinux认证方法:
编辑vi /etc/sysconfig/selinux文件,配置以下选项
SELINUX=disabled
如果不重启生效就执行以下命令使修改生效
[root@viong soft]# setenforce 0
对于开启了iptables过滤的主机,需要开放VPN服务的端口:47 1723 和gre协议
编辑 /etc/sysconfig/iptables文件,加入以下规则
-A RH-Firewall-1-INPUT -p gre -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 47 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 1723 -j ACCEPT
[root@viong soft]# service iptables restart
重启iptables直接生效
用Iptables做NAT服务
在VPN客户端成功拨号以后,本地网络的默认网关会变为VPN服务器的VPN内网地址,这样会导致客户端只能够连接VPN服务器及其所在的内网,而不能访问互联网;
[root@viong ~]#iptables -t nat -A POSTROUTING -s 192.168.126.0/24 -j SNAT --to 192.168.15.50
[root@viong ~]#echo iptables -t nat -A POSTROUTING -s 192.168.126.0/24 -j SNAT --to 192.168.15.50 >>/etc/rc.local
加入到/etc/rc.local开机自动启动
8.启动pptp
[root@viong ~]#service pptpd restart
[root@viong ~]#netstat -ntpl |grep 1723
tcp 0 0 0.0.0.0:1723 0.0.0.0:* LISTEN 2585/pptpd
9.测试拨号是否成功
客户端:Win 7
C:\Documents and Settings\Administrator>ipconfig
Windows IP Configuration
Ethernet adapter 本地连接:
Connection-specific DNS Suffix . :
IP Address. . . . . . . . . . . . : 192.168.15.253
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 192.168.15.1
PPP adapter test:
Connection-specific DNS Suffix . :
IP Address. . . . . . . . . . . . : 192.168.126.100
Subnet Mask . . . . . . . . . . . : 255.255.255.255
Default Gateway . . . . . . . . . : 192.168.126.100
C:\Documents and Settings\Administrator>ping 192.168.126.1
Pinging 192.168.126.1 with 32 bytes of data:
Reply from 192.168.126.1: bytes=32 time=144ms TTL=127
Reply from 192.168.126.1: bytes=32 time=4ms TTL=127
C:\Documents and Settings\Administrator>ping www.baidu.com
Pinging www.a.shifen.com [119.75.216.20] with 32 bytes of data:
Reply from 119.75.216.20: bytes=32 time=33ms TTL=52
Reply from 119.75.216.20: bytes=32 time=27ms TTL=52
通过以上测试,说明已经成功生效了.
(责任编辑:IT) |