Photon Server LoadBalancing搭建

准备:申请3台Windows虚拟机。

3台虚拟机上都部署上Photon Server.

一、主虚拟机上部署MasterServer。

  (1)在第一台虚拟机中,部署的Photon Server目目录下找到Loadbalancing目录,删除GameServer文件夹

  (2)修改Master的配置文件。Photon.LoadBalancing.dll.config (在目录Master/bin/中)

  (3)修改PhotonServer.config 配置文件。(在目录 bin_Win64/ 中) 删除跟Game相关的配置

<?xml version="1.0" encoding="Windows-1252"?>
<!--
    (c) 2015 by Exit Games GmbH, http://www.exitgames.com
    Photon server configuration file.
    For details see the photon-config.pdf.

    This file contains two configurations:

        "LoadBalancing"
                Loadbalanced setup for local development: A Master-server and a game-server.
                Starts the apps: Game, Master, CounterPublisher
                Listens: udp-port 5055, tcp-port: 4530, 843 and 943        

-->

<Configuration>
    <!-- Multiple instances are supported. Each instance has its own node in the config file. -->

    <LoadBalancing
        MaxMessageSize="512000"
        MaxQueuedDataPerPeer="512000"
        PerPeerMaxReliableDataInTransit="51200"
        PerPeerTransmitRateLimitKBSec="256"
        PerPeerTransmitRatePeriodMilliseconds="200"
        MinimumTimeout="5000"
        MaximumTimeout="30000"
        DisplayName="LoadBalancing (MyCloud)">

        <!-- 0.0.0.0 opens listeners on all available IPs. Machines with multiple IPs should define the correct one here. -->
        <!-- Port 5055 is Photon‘s default for UDP connections. -->
        <UDPListeners>
            <UDPListener
                IPAddress="0.0.0.0"
                Port="5055"
                OverrideApplication="Master">
            </UDPListener>
        </UDPListeners>

        <!-- 0.0.0.0 opens listeners on all available IPs. Machines with multiple IPs should define the correct one here. -->
        <TCPListeners>
            <!-- TCP listener for Game clients on Master application -->
            <TCPListener
                IPAddress="0.0.0.0"
                Port="4530"
                OverrideApplication="Master"
                PolicyFile="Policy\assets\socket-policy.xml"
                InactivityTimeout="10000"
                >
            </TCPListener>

            <!-- DON‘T EDIT THIS. TCP listener for GameServers on Master application -->
            <TCPListener
                IPAddress="0.0.0.0"
                Port="4520">
            </TCPListener>
        </TCPListeners>

        <!-- Policy request listener for Unity and Flash (port 843) and Silverlight (port 943)  -->
        <PolicyFileListeners>
          <!-- multiple Listeners allowed for different ports -->
          <PolicyFileListener
            IPAddress="0.0.0.0"
            Port="843"
            PolicyFile="Policy\assets\socket-policy.xml">
          </PolicyFileListener>
          <PolicyFileListener
            IPAddress="0.0.0.0"
            Port="943"
            PolicyFile="Policy\assets\socket-policy-silverlight.xml">
          </PolicyFileListener>
        </PolicyFileListeners>

        <!-- WebSocket (and Flash-Fallback) compatible listener -->
        <WebSocketListeners>
            <WebSocketListener
                IPAddress="0.0.0.0"
                Port="9090"
                DisableNagle="true"
                InactivityTimeout="10000"
                OverrideApplication="Master">
            </WebSocketListener>

        </WebSocketListeners>

        <!-- Defines the Photon Runtime Assembly to use. -->
        <Runtime
            Assembly="PhotonHostRuntime, Culture=neutral"
            Type="PhotonHostRuntime.PhotonDomainManager"
            UnhandledExceptionPolicy="Ignore">
        </Runtime>

        <!-- Defines which applications are loaded on start and which of them is used by default. Make sure the default application is defined. -->
        <!-- Application-folders must be located in the same folder as the bin_win32 folders. The BaseDirectory must include a "bin" folder. -->
        <Applications Default="Master">
            <Application
                Name="Master"
                BaseDirectory="LoadBalancing\Master"
                Assembly="Photon.LoadBalancing"
                Type="Photon.LoadBalancing.MasterServer.MasterApplication"
                ForceAutoRestart="true"
                WatchFiles="dll;config"
                ExcludeFiles="log4net.config"
                >
            </Application>

            <!-- CounterPublisher Application -->
            <Application
                Name="CounterPublisher"
                BaseDirectory="CounterPublisher"
                Assembly="CounterPublisher"
                Type="Photon.CounterPublisher.Application"
                ForceAutoRestart="true"
                WatchFiles="dll;config"
                ExcludeFiles="log4net.config">
            </Application>
        </Applications>
    </LoadBalancing>

</Configuration>

 

   (4)启动服务。

二、在另外两台虚拟机上部署GameServer服务

  (1)在目前中删除Master

  (2)修改GameServer/bin/Photon.LoadBalancing.dll.config 配置文件。

先删除MasterServer配置项

修改GameServerSetting项中的  MasterIPAddress 一项。

  总体配置

<?xml version="1.0"?>

<configuration>
  <configSections>
    <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
      <section name="Photon.LoadBalancing.Common.CommonSettings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
              requirePermission="false" />
      <section name="Photon.LoadBalancing.GameServer.GameServerSettings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
               requirePermission="false" />
      <section name="Photon.LoadBalancing.MasterServer.MasterServerSettings"
               type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
               requirePermission="false" />
      <section name="Photon.Common.Authentication.Settings"
           type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
           requirePermission="false" />
    </sectionGroup>
    <section name="Photon" type="Photon.SocketServer.Diagnostics.Configuration.PhotonSettings, Photon.SocketServer" />
    <section name="PluginSettings" type="Photon.Hive.Configuration.PluginSettings, PhotonHive" />
    <section name="WebRpcSettings" type="Photon.Hive.WebRpc.Configuration.WebRpcSettings, PhotonHive" />
    <section name="AuthSettings" type="Photon.Common.Authentication.Configuration.Auth.AuthSettings, Photon.Common" />
  </configSections>
  <applicationSettings>

    <Photon.LoadBalancing.Common.CommonSettings>
      <setting name="NodesFileName" serializeAs="String">
        <value>Nodes.txt</value>
      </setting>
      <setting name="NodesFilePath" serializeAs="String">
        <value>..\..\</value>
      </setting>
      <setting name="EnablePerformanceCounters" serializeAs="String">
        <value>True</value>
      </setting>
    </Photon.LoadBalancing.Common.CommonSettings>

    <Photon.Common.Authentication.Settings>
      <setting name="AuthCacheUpdateInterval" serializeAs="String">
        <value>300</value>
      </setting>

      <setting name="AuthTokenKey" serializeAs="String">
        <value>76B2814E-2A50-4E29-838A-20411D335FC9</value>
      </setting>

      <setting name="AuthTokenExpiration" serializeAs="String">
        <value>10000</value>
      </setting>

      <!-- Custom Authentication Queue Settings -->
      <setting name="MaxConcurrentRequests" serializeAs="String">
        <value>50</value>
      </setting>
      <setting name="MaxQueuedRequests" serializeAs="String">
        <value>5000</value>
      </setting>
      <setting name="MaxErrorRequests" serializeAs="String">
        <value>10</value>
      </setting>
      <setting name="MaxTimedOutRequests" serializeAs="String">
        <value>10</value>
      </setting>
      <setting name="HttpRequestTimeoutMS" serializeAs="String">
        <value>30000</value>
      </setting>
      <setting name="ReconnectIntervalS" serializeAs="String">
        <value>60</value>
      </setting>
      <setting name="QueueTimeoutS" serializeAs="String">
        <value>20</value>
      </setting>
      <setting name="MaxBackoffTimeInMiliseconds" serializeAs="String">
        <value>10000</value>
      </setting>
    </Photon.Common.Authentication.Settings>

    <Photon.LoadBalancing.GameServer.GameServerSettings>
      <setting name="AppStatsPublishInterval" serializeAs="String">
        <value>1000</value>
      </setting>
      <!-- GameServer-to-Master connections. -->
      <setting name="ConnectReytryInterval" serializeAs="String">
        <value>15</value>
      </setting>
      <setting name="EnableNamedPipe" serializeAs="String">
        <value>False</value>
      </setting>
      <!-- Path for Client-to-Gameserver HTTP connections -->
      <setting name="GamingHttpPath" serializeAs="String">
        <value>photon/g</value>
      </setting>
      <!-- Client-to-Gameserver HTTP connections. Needs to match the RHTTPListener in PhotonServer.config -->
      <setting name="GamingHttpPort" serializeAs="String">
        <value>80</value>
      </setting>
      <!-- Client-to-Gameserver HTTPS connections. Needs to match the RHTTPListener in PhotonServer.config -->
      <setting name="GamingHttpsPort" serializeAs="String">
        <value>443</value>
      </setting>
      <!-- Client-to-Gameserver Secure WebSocket connections. Needs to match the secure WebSocketListener in PhotonServer.config -->
      <setting name="GamingSecureWebSocketPort" serializeAs="String">
        <value>19091</value>
      </setting>
      <!-- Client-to-Gameserver TCP connections. Needs to match the TCPListener in PhotonServer.config -->
      <setting name="GamingTcpPort" serializeAs="String">
        <value>4531</value>
      </setting>
      <!-- Client-to-Gameserver UDP connections. Needs to match the UDPListener in PhotonServer.config -->
      <setting name="GamingUdpPort" serializeAs="String">
        <value>5056</value>
      </setting>
      <!-- Client-to-Gameserver WebSocket connections. Needs to match the WebSocketListener in PhotonServer.config -->
      <setting name="GamingWebSocketPort" serializeAs="String">
        <value>9091</value>
      </setting>
      <setting name="HttpQueueMaxErrors" serializeAs="String">
        <value>30</value>
      </setting>
      <setting name="HttpQueueMaxTimeouts" serializeAs="String">
        <value>30</value>
      </setting>
        <setting name="HttpQueueRequestTimeout" serializeAs="String">
            <value>30000</value>
        </setting>
        <setting name="HttpQueueMaxBackoffTime" serializeAs="String">
            <value>10000</value>
        </setting>
        <setting name="HttpQueueMaxQueuedRequests" serializeAs="String">
            <value>5000</value>
        </setting>
        <setting name="HttpQueueQueueTimeout" serializeAs="String">
            <value>90000</value>
        </setting>
        <setting name="HttpQueueReconnectInterval" serializeAs="String">
            <value>60000</value>
        </setting>
        <setting name="HttpQueueMaxConcurrentRequests" serializeAs="String">
            <value>1</value>
        </setting>
        <setting name="LastTouchCheckIntervalSeconds" serializeAs="String">
        <value>60</value>
      </setting>
      <setting name="LastTouchSecondsDisconnect" serializeAs="String">
        <value>0</value>
      </setting>
      <!-- Set to the IP Address of the Photon instance where your Master application is running. -->
      <setting name="MasterIPAddress" serializeAs="String">
        <value>15.24.15.114</value>
      </setting>
      <setting name="MaxEmptyRoomTTL" serializeAs="String">
        <value>60000</value>
      </setting>
      <!-- Gameserver-to-Master connections. -->
      <setting name="OutgoingMasterServerPeerPort" serializeAs="String">
        <value>4520</value>
      </setting>
      <setting name="PublicIPAddress" serializeAs="String">
        <value></value>
      </setting>
      <setting name="PublicIPAddressIPv6" serializeAs="String">
        <value></value>
      </setting>
      <!-- the hostname for this gameserver. Required for HTTP & websocket connections. Change it to a useful entry, like hostname.mydomain.com, for a production scenario. -->
      <setting name="PublicHostName" serializeAs="String">
        <!--<value>%COMPUTERNAME%.mydomain.com</value>-->
        <value>localhost</value>
      </setting>

      <!-- The domain name for this gameserver. Required for websocket connections and needs to match the certificate for secure websocket / https connections.
           For example:  mydomain.com -->
      <setting name="PublicDomainName" serializeAs="String">
        <value />
      </setting>
      <setting name="RelayPortHttp" serializeAs="String">
        <value>0</value>
      </setting>
      <setting name="RelayPortSecureWebSocket" serializeAs="String">
        <value>0</value>
      </setting>
      <setting name="RelayPortTcp" serializeAs="String">
        <value>0</value>
      </setting>
      <setting name="RelayPortUdp" serializeAs="String">
        <value>0</value>
      </setting>
      <setting name="RelayPortWebSocket" serializeAs="String">
        <value>0</value>
      </setting>
      <setting name="ServerStateFile" serializeAs="String">
        <value>ServerState.txt</value>
      </setting>
      <setting name="WorkloadConfigFile" serializeAs="String">
        <value>Workload.config</value>
      </setting>
    </Photon.LoadBalancing.GameServer.GameServerSettings>
  </applicationSettings>

  <Photon>
    <CounterPublisher enabled="True" updateInterval="1">
      <Sender
        endpoint="udp://255.255.255.255:40001"
        protocol="PhotonBinary"
        initialDelay="10"
        sendInterval="10" />
    </CounterPublisher>
  </Photon>
  <!-- Enable webhooks plugin by setting Enabled to "true" -->
  <PluginSettings Enabled="false">
    <Plugins>
      <Plugin
              Name="WebHooksPlugin1.2"
              Version=""
              AssemblyName="PhotonHive.WebhooksPlugin1.2.dll"
              Type="Photon.Hive.Plugin.WebHooks.PluginFactory"
              BaseUrl="http://photon-photon-pluginsdk-v1.webscript.io"
              IsPersistent="true"
              HasErrorInfo="true"
              PathClose="GameClose"
              PathCreate="GameCreate"
              PathEvent="GameEvent"
              PathGameProperties="GameProperties"
              PathJoin="GameJoin"
              PathLeave="GameLeave"
              PathLoad="GameCreate" />
    </Plugins>
  </PluginSettings>
  <!-- Enable webRPCs by setting Enabled to "true" -->
  <WebRpcSettings Enabled="false">
    <BaseUrl Value="http://photon-photon-pluginsdk-v1.webscript.io" />
  </WebRpcSettings>

  <!-- Enable Custom Authentication by setting Enabled to "true" -->
  <AuthSettings Enabled="false" ClientAuthenticationAllowAnonymous="true">
    <AuthProviders>
      <AuthProvider Name="Custom"
                    AuthenticationType="0"
                    AuthUrl="http://photon.webscript.io/auth-demo"
                    secret="customauthsecret" />

      <AuthProvider Name="Facebook"
                    AuthenticationType="2"
                    AuthUrl=""
                    secret="Val1"
                    appid="Val2" />
    </AuthProviders>
  </AuthSettings>

  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" />
  </startup>
</configuration>

  (3)修改服务器启动配置  /deploy/bin_Win64/PhotonServer.config 。删除跟Master修改配置

<?xml version="1.0" encoding="Windows-1252"?>
<!--
    (c) 2015 by Exit Games GmbH, http://www.exitgames.com
    Photon server configuration file.
    For details see the photon-config.pdf.

    This file contains two configurations:

        "LoadBalancing"
                Loadbalanced setup for local development: A Master-server and a game-server.
                Starts the apps: Game, Master, CounterPublisher
                Listens: udp-port 5055, tcp-port: 4530, 843 and 943        

-->

<Configuration>
    <!-- Multiple instances are supported. Each instance has its own node in the config file. -->

    <LoadBalancing
        MaxMessageSize="512000"
        MaxQueuedDataPerPeer="512000"
        PerPeerMaxReliableDataInTransit="51200"
        PerPeerTransmitRateLimitKBSec="256"
        PerPeerTransmitRatePeriodMilliseconds="200"
        MinimumTimeout="5000"
        MaximumTimeout="30000"
        DisplayName="GameLoab (MyCloud)">

        <!-- 0.0.0.0 opens listeners on all available IPs. Machines with multiple IPs should define the correct one here. -->
        <!-- Port 5055 is Photon‘s default for UDP connections. -->
        <UDPListeners>
            <UDPListener
                IPAddress="0.0.0.0"
                Port="5056"
                OverrideApplication="Game">
            </UDPListener>

        </UDPListeners>

        <!-- 0.0.0.0 opens listeners on all available IPs. Machines with multiple IPs should define the correct one here. -->
        <TCPListeners>
            <!-- TCP listener for Game clients on Master application -->

            <TCPListener
                IPAddress="0.0.0.0"
                Port="4531"
                OverrideApplication="Game"
                PolicyFile="Policy\assets\socket-policy.xml"
                InactivityTimeout="10000">
            </TCPListener>

            <!-- DON‘T EDIT THIS. TCP listener for GameServers on Master application -->
            <TCPListener
                IPAddress="0.0.0.0"
                Port="4520">
            </TCPListener>
        </TCPListeners>

        <!-- Policy request listener for Unity and Flash (port 843) and Silverlight (port 943)  -->
        <PolicyFileListeners>
          <!-- multiple Listeners allowed for different ports -->
          <PolicyFileListener
            IPAddress="0.0.0.0"
            Port="843"
            PolicyFile="Policy\assets\socket-policy.xml">
          </PolicyFileListener>
          <PolicyFileListener
            IPAddress="0.0.0.0"
            Port="943"
            PolicyFile="Policy\assets\socket-policy-silverlight.xml">
          </PolicyFileListener>
        </PolicyFileListeners>

        <!-- WebSocket (and Flash-Fallback) compatible listener -->
        <WebSocketListeners>
            <WebSocketListener
                IPAddress="0.0.0.0"
                Port="9091"
                DisableNagle="true"
                InactivityTimeout="10000"
                OverrideApplication="Game">
            </WebSocketListener>

        </WebSocketListeners>

        <!-- Defines the Photon Runtime Assembly to use. -->
        <Runtime
            Assembly="PhotonHostRuntime, Culture=neutral"
            Type="PhotonHostRuntime.PhotonDomainManager"
            UnhandledExceptionPolicy="Ignore">
        </Runtime>

        <!-- Defines which applications are loaded on start and which of them is used by default. Make sure the default application is defined. -->
        <!-- Application-folders must be located in the same folder as the bin_win32 folders. The BaseDirectory must include a "bin" folder. -->
        <Applications Default="Game">        

            <Application
                Name="Game"
                BaseDirectory="LoadBalancing\GameServer"
                Assembly="Photon.LoadBalancing"
                Type="Photon.LoadBalancing.GameServer.GameApplication"
                ForceAutoRestart="true"
                WatchFiles="dll;config"
                ExcludeFiles="log4net.config">
            </Application>

            <!-- CounterPublisher Application -->
            <Application
                Name="CounterPublisher"
                BaseDirectory="CounterPublisher"
                Assembly="CounterPublisher"
                Type="Photon.CounterPublisher.Application"
                ForceAutoRestart="true"
                WatchFiles="dll;config"
                ExcludeFiles="log4net.config">
            </Application>
        </Applications>
    </LoadBalancing>    

</Configuration>

    (4) 启动服务

  三、第3台虚拟机跟第二台虚拟机配置一样

四、测试。在第一天MasterServer虚拟机中直接用服务器自带的测试工具。

测试发现MasterServer服务器已经能够连上另外两个GameServer服务器了。(这里conneting ip 就是另外两台GameServer服务器的Ip地址).

查看文档: https://doc.photonengine.com/en-us/server/current/applications/loadbalancing/application

      https://gitchat.csdn.net/columnTopic/5a39d5a575e5a577886d6c20

原文地址:https://www.cnblogs.com/cj8988/p/11731428.html

时间: 2024-10-09 02:21:35

Photon Server LoadBalancing搭建的相关文章

Photon Server伺服务器在LoadBalancing的基础上扩展登陆服务

一,如何创建一个Photon Server服务 参见此博客 快速了解和使用Photon Server 二, 让LoadBalancing与自己的服务一起启动 原Photonserver.config文件中需要改动的地方有4处 1.  <UDPListeners> 标签 Udp监听端口 <UDPListeners> <UDPListener IPAddress="0.0.0.0" Port="5055" OverrideApplicati

Windows Server 2003搭建邮件服务器

由于Windows Server 2003默认是没有安装我们搭建邮件服务器所需要的POP3和SMTP服务的,因此需要我们自己来安装.方法如下: 1. 将Windows Server 2003的系统光盘放入光驱,或者将镜像文件挂载到虚拟光驱.在控制面板中点击“添加或删除程序”,在“添加或删除程序”对话框中,点击“添加/删除Windows组件”.Hn 2. 在“Windows组件向导”中,需要进行如下操作: ① 安装POP3服务. 选中“电子邮件服务”,双击打开,会看到它包括“POP3服务”和“PO

Windows server 2012 搭建VPN图文教程(二)配置路由和远程访问服务

Windows server 2012 搭建VPN图文教程(一)安装VPN相关服务 Windows server 2012 搭建VPN图文教程(二)配置路由和远程访问服务 Windows server 2012 搭建VPN图文教程(三)配置VPN访问账户 Windows server 2012 搭建VPN图文教程(四)客户端访问VPN测试 PartII 配置路由和远程访问服务 本部分主要介绍如何安装和配置路由及远程访问服务的方法,请参考以下操作步骤: (续上)前面提到重新启动操作系统,重启后服务

Windows server 2012 搭建VPN图文教程(三)配置VPN访问账户

Windows server 2012 搭建VPN图文教程(一)安装VPN相关服务 Windows server 2012 搭建VPN图文教程(二)配置路由和远程访问服务 Windows server 2012 搭建VPN图文教程(三)配置VPN访问账户 Windows server 2012 搭建VPN图文教程(四)客户端访问VPN测试 Part III 配置VPN访问账户 本部分主要介绍如何配置VNP相关服务以及配置VPN访问账户的方法,具体如下: 选择路由和远程访问服务器,右键,选择"属性

Windows server 2012 搭建VPN图文教程(四)客户端访问VPN测试

Windows server 2012 搭建VPN图文教程(一)安装VPN相关服务 Windows server 2012 搭建VPN图文教程(二)配置路由和远程访问服务 Windows server 2012 搭建VPN图文教程(三)配置VPN访问账户 Windows server 2012 搭建VPN图文教程(四)客户端访问VPN测试 Part IV 客户端访问VPN测试 本部分主要介绍如何通过客户端访问VPN的方法.实验客户端操作系统为windows 8,以下是客户端配置VPN的步骤: 打

Windows Server 2008搭建域控制器《转载51CTO.com》

Windows Server 2008搭建域控制器 引入 在小型网络中,管理员通常独立管理每一台计算机,如最为常用的用户管理.但当网络规模扩大到一定程度后,如超过 10 台计算机,而每台计算机上有 10 个用户,那么管理员就要创建100个以上的用户账户,相同的工作就要重复很多遍.→此时可以将网络中的多台计算机逻辑上组织到一起,进行集中管理,这种区别于工作组的逻辑环境叫做域(domain).对应于我们第二章中提到过的C/S网络管理模式. 本章内容很重要,也很抽象,教员应多举生活中的例子来帮助学员理

What is Photon Server?

http://blog.csdn.net/menuconfig/article/details/8215033 Photon Server是一套套裝的遊戲伺服器,以往開發線上遊戲都必需自行花費大筆的研發資金和人力先從研發遊戲引擎和伺服器開始,後來慢慢的遊戲引擎開始走向套裝化,研發人員有許多現成的遊戲引擎可以選擇,像是unreal或是unity等等,接著,遊戲伺服器也開始朝套裝發展,市面上常見的套裝Game Server有 smart fox server . electro server 5 .

CentOs Server环境搭建

CentOs Server环境搭建 标签(空格分隔): 环境搭建 centos 引言:本文档是在全新的CentOs系统搭建JAVA工程相关的服务器环境的指导文档,阅读本文档请使用markdown阅读器,或者在IDE开发工具中安装markdown插件 步骤索引: 1.安装JDK 2.安装Tomcat 3.安装Nginx 4.安装mysql 5.安装redis 正文 安装JDK 检查CentOs是否默认安装了openjdk软件,可以使用以下命令中的任意命令,最好都试一下: #rpm -qa |gre

转 Windows server 2008 搭建VPN服务

VPN英文全称是“Virtual Private Network”,就是“虚拟专用网络”. 虚拟专用网络就是一种虚拟出来的企业内部专用线路.这条隧道可以对数据进行几倍加密达到安全使用互联网的目的. 此项技术已被广泛使用.虚拟专用网可以帮助远程用户.公司分支机构.商业伙伴及供应商同公司的内部网建立可信的安全连接,用于经济有效地连接到商业伙伴和用户的安全外联网虚拟专用网. 实验环境: 服务器系统:Windows server 2008 客户机系统:Windows server 2003 服务器双网卡