实验环境:
(1) 公司所有game服务器,只允许一个外网ip去访问,需要维护服务器,必须先拨号到指定外网ip。
(2) 公司与总部通信都是走***通道,公司内部ip与***设备下是不同网段,需要在***设备下接一台双网卡服务器
解决方案:通过linux下的pptp协议,远程用户能通过支持点对点协议的所有操作系统,安全访问网络.
实验图
:
根据方案,需在192.168.15.50搭建
Poptop服务
关于Poptop介绍信息:
Poptop是一个 PPTP 服务器的开源实现,采用 C 预言开发,可运行在 x86 或者是摩托罗拉嵌入式ColdFire体系。可与微软的 PPTP ××× 客户端进行完全互操作。
点对点隧道协议(
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
服务器×××虚拟接口将分配的IP地址,可设置为与×××服务器内网地址相同网段的IP,也可设置为另一网段的IP;
remoteip 192.168.1.11-30
客户端×××连接成功后将分配的IP地址段,同样可设置为与×××服务器内网地址相同网段的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地址
也可以使用***user命令来进行配置:
# ***user add viong 123 添加一个viong用户
6.
开启路由转发
因为×××客户端在拨号后实际是通过服务器外网网卡进行数据通信的,那么要访问内网网段的地址就必须开启数据包转发,使外网网卡的数据包能够转发到内网网卡上
[root@viong soft]#
vi /etc/sysctl.conf
6 # Controls IP packet forwarding
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过滤的主机,需要开放×××服务的端口: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
服务
在×××客户端成功拨号以后,本地网络的默认网关会变为×××服务器的×××内网地址,这样会导致客户端只能够连接×××服务器及其所在的内网,而不能访问互联网;
在×××客户端成功拨号以后,本地网络的默认网关会变为×××服务器的×××内网地址,这样会导致客户端只能够连接×××服务器及其所在的内网,而不能访问互联网;
[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
通过以上测试,说明已经成功生效了
.
小插曲:每次写一篇文章,都是追求把它整理得完美点来与大家分享。但也是比较累人。关于这次blog编辑器的升级,给我带来一些欢喜。我不用整理从word复制到编辑的文本,文章篇幅不会被限得那么死.谢谢51cto的努力,期待着图片的直接黏贴功能...有时间,我会把平时工作关联到的一些技术写出来与大家分享,谢谢支持!