PPTP 站点到站点 ×××

某公司有两个站点,如下图所示。

现在需要使用PPTP ××× 在这两个站点之间实现站点到站点×××。
下面描述实现步骤:
一. 安装和配置 Linux PPTP ××× 服务器
由于服务器已经装好了,这里就不说具体的安装步骤了。
1. 在 /etc/ppp/chap-secrets 文件里面新建一个帐号。站点一网关将使用该账号来拨×××。
   # vi chap-secrets
    "site1-gateway"    pptpd   "password-for-site1-gateway"   10.1.1.2
    其中:
    “site1-gateway” 和 “password-for-site1-gateway”分别是站点一拨本×××服务器时
      使用的用户名和密码;
   “pptpd” 对应于
     # cat /etc/ppp/options.pptpd | grep name
     name pptpd    <---- " pptpd"
     “10.1.1.2” 表示给站点一的网关拨号后分配这个IP;
2. 添加一条路由,以便让××× 服务器知道该怎样路由到达站点一的数据包。
   # ip route add 10.0.0.0/16 via 10.1.1.2。
   这里假设站点一网关拨号后获得的IP地址为10.1.1.2 , 跟上面为站点一网关建立的帐号
   所列的IP要一致。
注意:是否要添加路由,其实是由站点一的 Linux PPTP ××× 客户端的配置决定的,如果在客户端做 SNAT 的话(也就是把来自站点一的 源地址为10.0.0.0/16的数据包的源地址NAT为该客户端拨×××后所分配的IP地址,即是10.1.1.2),那么此处就不需要手工添加路由了。笔者认为用 SNAT 的方式更好一些,因为这样方便对 ××× 的监控。

二. 安装和配置 Linux PPTP ××× 客户端
1. 确认已经安装了 PPP 软件包。
   # which pppd
    /usr/sbin/pppd
   如果提示找不到,那就需要安装 PPP 软件包了。
2.下载 PPTP 客户端软件:
   # wget [url]http://jaist.dl.sourceforge.net/sourceforge/pptpclient/pptp-1.7.1.tar.gz[/url]
3.安装 PPTP 客户端软件:
   # tar -zxvf pptp-1.7.1.tar.gz
   # cd pptp-1.7.1
   # make & make install
4.配置 PPTP 客户端:
  1) 给PPTP 客户端配置拨号时使用的帐号信息:
   # cd /etc/ppp
   # vi chap-secrets
   # Secrets for authentication using CHAP
   # client                    server     secret                                  addresses
    "site1-gateway"      pptpd   "passwdforsite1gateway"   *
   其中前面3个字段要与在站点二×××服务器上建立的帐号的相应字段一致,
   第4个字段可以用 * 号填充,表示地址由服务器端的配置决定。
   2) 配置拨号属性:
   # vi peers/t5
    pty "pptp 59.xxx.xx.xx --nolaunchpppd"
    # 59.xxx.xx.xx 指站点二的×××服务器的公网IP
    name "site1-gateway"
    remotename "pptpd"
    # 这两个name的配置要与 /etc/ppp/chap-secrets 文件里相应项的信息一致
    require-mppe-128
    #如果站点二×××服务器要求加密,使用该语句,如果不要求加密,
    # 注释掉该语句
    noauth
5.拨 ×××并添加相应路由:
   # pppd call m5; tail -f /var/log/messages
    如果你看到下面的消息,表示拨号成功了
       mail1 kernel: PPP MPPE Compression module registered
       mail1 pppd[2227]: MPPE 128-bit stateless compression enabled
       mail1 pppd[2227]: local  IP address 10.1.1.1
       mail1 pppd[2227]: remote IP address 10.1.1.2
   上面的10.1.1.1对应于PPTP ××× 服务器配置文件的
    # cat /etc/pptpd.conf | grep local
     localip 10.1.1.1 <----- " 10.1.1.1"
   # ip addr l  # 检查是否已经建立了拨号接口
   # ip route add 10.1.0.0/16 via 10.1.1.1 
     添加一条到达站点二的路由,以便网关知道该怎么路由到达站点二的数据包
6. 可以选择配置 SNAT,从而避免在站点二 ××× 服务器上手工添加路由:
  # iptables -t nat -A POSTROUTING -s 10.0.0.0/16 -d 10.1.0.0/16 -j SNAT --to-source 10.1.1.2

三. 验证
   在站点一的任意一台电脑上去tracert 站点二的某台机器, 看路由是否正确。
 C:\Documents and Settings\Administrator>tracert 10.1.2.1
 Tracing route to 10.1.2.1 over a maximum of 30 hops
   1    <1 ms    <1 ms    <1 ms  10.0.1.1  # 交换机上的SVI IP
   2    <1 ms    <1 ms    <1 ms  10.0.0.1  # 站点一网关的内网 IP
   3    34 ms    34 ms    34 ms  10.1.1.2  # 站点二××× 服务器的本地 ××× IP
   4    34 ms    34 ms    34 ms  10.1.2.1  # 站点二的目标 IP
 Trace complete.
  上面的10.1.1.1对应于PPTP ××× 服务器配置文件的
    # cat /etc/pptpd.conf | grep local
     localip 10.1.1.1 <----- " 10.1.1.1"

最后,别忘了将启动配置写入 /etc/rc.local 文件。