博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

对NAT中术语和转换关系的理解和研究

Posted on 2011-03-25 16:03  bw_0927  阅读(600)  评论(0)    收藏  举报

在NAT中有4个术语:内部本地,内部全局,外部本地,外部全局.这四个术语如果不细致理解,确实让人感到非常的乱,但理解后其实并不难.


内部本地 内部全局 外部本地 外部全局

(相同颜色处于同一层次平面)
上面四个术语描述的IP地址,可以这样理解:
内部本地和外部全局,是通信中正式的真正源/目的地址
内部全局和外部本地是在NAT过程中的一个中间量.

    内部全局是内部本地在全局平面(外部网络)的表现,也就是说 内部全局在外部网络(全局平面)中代表了内部本地
    外部本地是外部全局在本地平面(内部网络)的表现,也就是说 外部本地在内部网络(本地平面)中代表了外部全局
如图:

    看下面的图进一步理解这样的关系,这个图是我自己理解关系时候想象出来的,通过这个图可以比较直观的理清关系,在这个图中我引入了2个名词本地平面/全局平面.

只有处在同一平面的才能进行直接的数据传输

    那么内部本地(SA)要想和外部全局(DA)通信,该如何进行?
首先:要想能正常传输,必须要让数据处于同一个平面,现在2者不在同一平面,由于数据方向是内部本地-->外部全局,要统一到全局平面,所以需要把内部本地转换成内部全局,用内部全局代表了内部本地,内部全局与外部全局就处于同一平面,就可以正常通信.

     同理,外部全局(SA)要和内部本地(DA)通信,由于数据方向是外部全局--->内部本地,要统一到本地平面,外部全局就需要被转换到外部本地,用然后外部本地与内部本地通信.

一个例子: CONFIGURATION EXAMPLES The following sample configuration translates between inside hosts addressed from either the 192.168.1.0 or 192.168.2.0 nets to the globally-unique 171.69.233.208/28 network.
ip nat pool net-20 171.69.233.208 171.69.233.223 netmask <netmask> 255.255.255.240
ip nat inside source list 1 pool net-20
!
interface Ethernet0
ip address 171.69.232.182 255.255.255.240
ip nat outside
!
interface Ethernet1
ip address 192.168.1.94 255.255.255.0
ip nat inside
!
access-list 1 permit 192.168.1.0 0.0.0.255
access-list 1 permit 192.168.2.0 0.0.0.255
The next sample configuration translates between inside hosts addressed from the 9.114.11.0 net to the globally unique 171.69.233.208/28 network. Packets from outside hosts addressed from 9.114.11.0 net (the "true" 9.114.11.0 net) are translated to appear to be from net 10.0.1.0/24.
ip nat pool net-20 171.69.233.208 171.69.233.223 netmask <netmask> 255.255.255.240 定义一个名称为 net-20的内部全局地址池
ip nat pool net-10 10.0.1.0 10.0.1.255 netmask <netmask> 255.255.255.0 定义一个名称为net-10的外部本地地址池
ip nat inside source list 1 pool net-20
ip nat outside source list 1 pool net-10 注意inside /outside全部调用了list 1 这说明 内外两边的源地址是重叠地址,通过将内部的源地址转换成net-20中地址和外部的9.114.11.0网络通信将外部的源地址转换成net-10中的地址来与内部这边的9.114.11.0网络通信
!
interface Ethernet0
ip address 171.69.232.182 255.255.255.240
ip nat outside
!
interface Ethernet1
ip address 9.114.11.39 255.255.255.0
ip nat inside
!
access-list 1 permit 9.114.11.0 0.0.0.255
NAT的一些扩展特性: 1更灵活的地址池分配方法 More flexible pool configuration: The pool configuration syntax has been extended to allow discontiguous ranges of addresses. The following syntax is now allowed:
ip nat pool <name> { netmask <mask> | prefix-length <length> } [ type { rotary } ]
This command will put the user into IP NAT Pool configuration mode, where a sequence of address ranges can be configured. There is only one command in this mode:
address <start> <end>
Example:
Router(config)#ip nat pool fred prefix-length 24
Router(config-ipnat-pool)#address 171.69.233.225 171.69.233.226
Router(config-ipnat-pool)#address 171.69.233.228 171.69.233.238
This configuration creates a pool containing addresses 171.69.233.225-226 and 171.69.233.228-238 (171.69.233.227 has been omitted). 2使用接口作地址,满足那些没有固定IP情况的需要 Translating to interface's address: As a convenience for users wishing to translate all inside addresses to the address assigned to an interface on the router, the NAT code allows one to simply name the interface when configuring the dynamic translation rule:
ip nat inside source list <number> interface <interface> overload
If there is no address on the interface, or it the interface is not up, no translation will occur.
Example:
ip nat inside source list 1 interface Serial0 overload 3利用端口的静态转换 Static translations with ports: When translating addresses to an interface's address, outside-initiated connections to services on the inside network (like mail) will require additional configuration to send the connection to the correct inside host. This command allows the user to map certain services to certain inside hosts.
ip nat inside source static { tcp | udp } <localaddr> <localport> <globaladdr> <globalport>
Example:
ip nat inside source static tcp 192.168.10.1 25 171.69.232.209 25
In this example, outside-initiated connections to the SMTP port (25) will be sent to the inside host 192.168.10.1. 4利用route-map实现多ISP策略 Support for route maps: The dynamic translation command can now specify a route-map to be processed instead of an access-list. A route-map allows the user to match any combination of access-list, next-hop IP address, and output interface to determine which pool to use:
ip nat inside source route-map <name> pool <name>
Example:
ip nat pool provider1-space 171.69.232.1 171.69.232.254 prefix-length 24
ip nat pool provider2-space 131.108.43.1 131.108.43.254 prefix-length 24
ip nat inside source route-map provider1-map pool provider1-space
ip nat inside source route-map provider2-map pool provider2-space
!
interface Serial0/0
 ip nat outside
!
interface Serial0/1
 ip nat outside
!
interface Fddi1/0
 ip nat inside
!
route-map provider1-map permit 10
 match ip address 1
 match interface Serial0/0
!
route-map provider2-map permit 10
 match ip address 1
 match interface Serial0/1 关于在NAT中route-map 与ACL逻辑先后关系的研究请看这里: http://www.mycisco.cn/post/70.html 5利用add-route参数自动增加一个路由,详细例子请看这里 PAT相关:

Basic Concepts of PAT

Figure 5

Unique Source Port per Translation Entry

Several internal addresses can be NATed to only one or a few external addresses by using a feature called Port Address Translation (PAT) which is also referred to as "overload", a subset of NAT functionality. PAT uses unique source port numbers on the Inside Global IP address to distinguish between translations. Because the port number is encoded in 16 bits, the total number could theoretically be as high as 65,536 per IP address. PAT will attempt to preserve the original source port, if this source port is already allocated PAT will attempt to find the first available port number starting from the beginning of the appropriate port group 0-5111, 512-1023 or 1024-65535. If there is still no port available from the appropriate group and more than one IP address is configured, PAT will move to the next IP address and try to allocate the original source port again. This continues until it runs out of available ports and IP addresses.

本文参考了CISCO文档:

http://www.cisco.com/en/US/tech/tk648/tk361/technologies_white_paper09186a0080091cb9.shtml http://www.cisco.com/en/US/tech/tk648/tk361/technologies_tech_note09186a0080094837.shtml

事实上,我们可以这样理解路由器的行为:

     从内部本地发向外部全局的数据,数据包的源地址是内部本地,目的地址是外部本地,在经过路由器的inside接口后,源地址被替换为内部全局,而目的地址被替换为外部全局,也就是说实现了从本地平面向全局平面的迁移,在这里,如果转换前后的目标地址相同(外部本地和外部全局),就可以认为是普通的由内到外的NAT,如果转换前后的目标地址不同(外部本地和外部全局),就可以将这种方式用来处理路由器两边网络存在地址重叠的情况.

    从外部全局发向内部本地的数据,数据保的源地址是外部全局,目的地址是内部全局,在经过路由器的outside接口后,源地址被替换为外部本地,而目的地址被替换为内部本地,也就是说实现了从全局平面向本地平面的迁移,在这里,如果转换前后的目标地址相同(内部全局和内部本地)相同,就可以认为是普通的由外向内的NAT,如果转换前后的目标地址不同,就可以将这种方式用来处理路由器两边网络存在地址重叠的情况.

============

NAT 具体命令理解

1,由内向外的转换,在路由器的inside口处发生了NAT转换行为

r1-2514(config)#ip nat inside ?
destination Destination address translation
source       Source address translation

从上面可以看出,在inside边可以对数据包中的源地址或者目标地址进行转换.

r1-2514(config)#ip nat inside source ?
list       Specify access list describing local addresses
route-map Specify route-map
static     Specify static local->global mapping

从上面可以看出,针对源地址进行转换可以使用acl 或者 route-map来表述一个本地地址,意思是数据包中源地址符合这些的都要被转换. 也可以使用static进行静态映射,指定一个静态的从本地到全局的映射.

r1-2514(config)#ip nat inside source list 1 ?
interface Specify interface for global address
pool       Name pool of global addresses

从上面输出可以看出接下来要给一个全局地址,数据包中的源地址将被这个全局地址替代.

对于静态映射,还可以指定协议 端口号:
When translating addresses to an interface's address, outside-initiated connections to services on the inside network (like mail) will require additional configuration to send the connection to the correct inside host. This command allows the user to map certain services to certain inside hosts.

ip nat inside source static { tcp | udp } <localaddr> <localport> <globaladdr> <globalport>
Example:
ip nat inside source static tcp 192.168.10.1 25 171.69.232.209 25
In this example, outside-initiated connections to the SMTP port (25) will be sent to the inside host 192.168.10.1.
在inside边对目标进行转换:
r1-2514(config)#ip nat inside destination ?
list Specify access list describing global addresses
从上面输出可以看出,路由器要求输入一个表示全局地址的ACL
r1-2514(config)#ip nat inside destination list 1 ?
pool Name pool of local addresses
pool Name pool of local addresses
接着要求输入一个本地地址池
所以这是一个针对从outside向inside方向数据的NAT,凡是在这个方向数据包中目标地址符合ACL描述的全部被转换成POOL中的本地地址.这可以被用来进行TCP的负载均衡,即外部都请求同一个全局地址,而在路由器的inside边,这些请求的目标地址全部被转换成地址池中的地址,而且是循环使用地址池中的地址,从而达到负载均衡,但是这种方法只适合TCP流,同时不适宜用在WEB服务的负载均担上.详细解释看这里:


Destination Address Rotary Translation

A dynamic form of destination translation can be configured for some outside-to-inside traffic. Once a mapping is set up, a destination address matching one of those on an access list will be replaced with an address from a rotary pool. Allocation is done in a round-robin basis, performed only when a new connection is opened from the outside to the inside. All non-TCP traffic is passed untranslated (unless other translations are in effect).
This feature was designed to provide protocol translation load distribution. It is not designed nor intended to be used as a substitute technology for Cisco's LocalDirector product. Destination address rotary translation should not be used to provide web service load balancing because, like vanilla DNS, it knows nothing about service availability. As a result, if a web server were to become offline, the destination address rotary translation feature would continue to send requests to the downed server.
http://www.cisco.com/warp/public/732/Tech/ipservices/natalgs.pdf
2.由外向内,在OUTSIDE边发生的行为:
r1-2514(config)#ip nat outside ?                
source Source address translation
从上面可以看出在OUTSIDE边,只能对数据包中的源地址转换
r1-2514(config)#ip nat outside source ?
list       Specify access list describing global addresses
route-map Specify route-map
static     Specify static global->local mapping
从上面可以看出接下来路由器要求给定一个全局地址的描述,可以是ACL route-map 或者 静态的.
r1-2514(config)#ip nat outside source list 1 ?
pool Name pool of local addresses
从上面可以看出,路由器接着又要求给定一个本地地址,这说明 这个命令是对从外到内的数据包,进行源地址字段的替换,它将外部全局地址转换成内部地址(内部本地或者内部全局,内部本地和内部全局可以相同也可以不同)
ip nat outside source { list <acl> pool <name> | static <global-ip> <local-ip> }
The first form (list..pool..) enables dynamic translation. Packets from addresses that match those on the simple access list are translated using local addresses allocated from the named pool.
The second form (static) of the command sets up a single static translation.个例子:
CONFIGURATION EXAMPLES
The following sample configuration translates between inside hosts addressed from either the 192.168.1.0 or 192.168.2.0 nets to the globally-unique 171.69.233.208/28 network.
ip nat pool net-20 171.69.233.208 171.69.233.223 netmask <netmask> 255.255.255.240
ip nat inside source list 1 pool net-20
!
interface Ethernet0
ip address 171.69.232.182 255.255.255.240
ip nat outside
!
interface Ethernet1
ip address 192.168.1.94 255.255.255.0
ip nat inside
!
access-list 1 permit 192.168.1.0 0.0.0.255
access-list 1 permit 192.168.2.0 0.0.0.255
The next sample configuration translates between inside hosts addressed from the 9.114.11.0 net to the globally unique 171.69.233.208/28 network. Packets from outside hosts addressed from 9.114.11.0 net (the "true" 9.114.11.0 net) are translated to appear to be from net 10.0.1.0/24.
ip nat pool net-20 171.69.233.208 171.69.233.223 netmask <netmask> 255.255.255.240
定义一个名称为 net-20的内部全局地址池
ip nat pool net-10 10.0.1.0 10.0.1.255 netmask <netmask> 255.255.255.0
定义一个名称为net-10的外部本地地址池
ip nat inside source list 1 pool net-20
ip nat outside source list 1 pool net-10
注意inside /outside全部调用了list 1 这说明 内外两边的源地址是重叠地址,通过将内部的源地址转换成net-20中地址和外部的9.114.11.0网络通信。将外部的源地址转换成net-10中的地址来与内部这边的9.114.11.0网络通信
!
interface Ethernet0
ip address 171.69.232.182 255.255.255.240
ip nat outside
!
interface Ethernet1
ip address 9.114.11.39 255.255.255.0
ip nat inside
!
access-list 1 permit 9.114.11.0 0.0.0.255

NAT的一些扩展特性:
1。更灵活的地址池分配方法
More flexible pool configuration:
The pool configuration syntax has been extended to allow discontiguous ranges of addresses. The following syntax is now allowed:
ip nat pool <name> { netmask <mask> | prefix-length <length> } [ type { rotary } ]
This command will put the user into IP NAT Pool configuration mode, where a sequence of address ranges can be configured. There is only one command in this mode:
address <start> <end>
Example:
Router(config)#ip nat pool fred prefix-length 24
Router(config-ipnat-pool)#address 171.69.233.225 171.69.233.226
Router(config-ipnat-pool)#address 171.69.233.228 171.69.233.238
This configuration creates a pool containing addresses 171.69.233.225-226 and 171.69.233.228-238 (171.69.233.227 has been omitted).
2。使用接口作地址,满足那些没有固定IP情况的需要
Translating to interface's address:
As a convenience for users wishing to translate all inside addresses to the address assigned to an interface on the router, the NAT code allows one to simply name the interface when configuring the dynamic translation rule:
ip nat inside source list <number> interface <interface> overload
If there is no address on the interface, or it the interface is not up, no translation will occur.
Example:
ip nat inside source list 1 interface Serial0 overload
3。利用端口的静态转换
Static translations with ports:
When translating addresses to an interface's address, outside-initiated connections to services on the inside network (like mail) will require additional configuration to send the connection to the correct inside host. This command allows the user to map certain services to certain inside hosts.
ip nat inside source static { tcp | udp } <localaddr> <localport> <globaladdr> <globalport>
Example:
ip nat inside source static tcp 192.168.10.1 25 171.69.232.209 25
In this example, outside-initiated connections to the SMTP port (25) will be sent to the inside host 192.168.10.1.
4。利用route-map实现多ISP策略
Support for route maps:
The dynamic translation command can now specify a route-map to be processed instead of an access-list. A route-map allows the user to match any combination of access-list, next-hop IP address, and output interface to determine which pool to use:
ip nat inside source route-map <name> pool <name>
Example:
ip nat pool provider1-space 171.69.232.1 171.69.232.254 prefix-length 24
ip nat pool provider2-space 131.108.43.1 131.108.43.254 prefix-length 24
ip nat inside source route-map provider1-map pool provider1-space
ip nat inside source route-map provider2-map pool provider2-space
!
interface Serial0/0
ip nat outside
!
interface Serial0/1
ip nat outside
!
interface Fddi1/0
ip nat inside
!
route-map provider1-map permit 10
match ip address 1
match interface Serial0/0
!
route-map provider2-map permit 10
match ip address 1
match interface Serial0/1
关于在NAT中route-map 与ACL逻辑先后关系的研究请看这里:
http://www.mycisco.cn/post/70.html
5。利用add-route参数自动增加一个路由,详细例子请看这里
PAT相关:
Basic Concepts of PAT


Figure 5


Unique Source Port per Translation Entry



Several internal addresses can be NATed to only one or a few external addresses by using a feature called Port Address Translation (PAT) which is also referred to as "overload", a subset of NAT functionality.
PAT uses unique source port numbers on the Inside Global IP address to distinguish between translations. Because the port number is encoded in 16 bits, the total number could theoretically be as high as 65,536 per IP address. PAT will attempt to preserve the original source port, if this source port is already allocated PAT will attempt to find the first available port number starting from the beginning of the appropriate port group 0-5111, 512-1023 or 1024-65535. If there is still no port available from the appropriate group and more than one IP address is configured, PAT will move to the next IP address and try to allocate the original source port again. This continues until it runs out of available ports and IP addresses.


 

宽带路由器工作原理
  
  宽带路由器从准确的定义上并不能完全称之为路由器,这类产品只能实现部分传统路由器的功能,很多厂商希望用户更能接受其宽带路由器产品而称之为路由器,这是一种专门为宽带接入用户提供共享访问的多物理端口NAT转换产品。我们都知道代理服务器软件同样是采用NAT转换技术,但是宽带路由器是专门为宽带线路所特殊设计,采用独立的处理器芯片和软件技术来实现NAT转换,所以与传统的使用代理服务器软件共享上网,宽带路由器具有很多不可比拟的优势。
  
  这里我们几次提到NAT转换技术,其实这项技术就是宽带路由器最基本,最核心的技术,其共享上网原理采用的就是NAT转换技术。下面我们为大家介绍NAT转换技术。
  
  NAT是英文全称Network Address Translation,也就是网络地址转换,这种技术在网络中主要是为了解决公网IP地址短缺,NAT的工作原理是将内部私有网络地址转换成合法的公网地址,从而可以访问互联网。
  
  在TCP/IP协议中,我们需要了解两种IP地址,一个是可以直接访问Internet的公网IP地址,另一种是我们组建局域网时最常用到的私有IP地址。如192.168.0.1的IP地址,这个地址就是一个私有地址,它在全球网络中不具唯一性,可以在全球任何一个地方的网络中使用,而公网IP地址在全球网络中是唯一的,它就像是全球各大城市里的街道及门牌号码一样,主要是起标识不同网络的作用。在互联网中,正是因为有这样的公网IP地址,我们的通信才可以得以实现。
  
  但是由于公网IP地址资源的日益消耗,我们不可能在一个网络中申请到很多个可以在互联网上直接通信的公有IP地址。这时,我们就会使用到NAT地址转换技术,它可以将局域网中的如192.168.0.x的私有地址转换为可以在Internet使用的IP地址。从而达到访问Internet的目的。
  
  在NAT的工作模式中,会涉及到四个IP地址:
  Inside Local IP address: 指定于内部网络的主机地址,全局唯一,但为私有地址。
  Inside Global IP address: 代表一个或更多内部IP到外部世界的合法IP。
  Outside Global IP address: 外部网络主机的合法IP。
  Outside Local IP address: 外部网络的主机地址,看起来是内部网络的,私有地址。
  
 
  点击看大图


  
  通过上面这个连接示意图,我们基本上可以了解到这四个地址在网络中的位置了。我们来为大家举例说明NAT是如何实现的:在Adan的这个局域网络中,有一个内部的私有地址192.168.0.x,而这个网络仅有一个出口,这就是名字叫做adan的路由器。这个路由器上有一个内部的全局地址218.246.29.18,这个地址可以是由电信运营商提供的静态IP地址也可是以动态获得的,总之这个全局地址使用的是合法的公用IP地址。
  
  当内部主机需要访问internet时,内部主机会发送数据包到默认网关,也就是这台具有公网IP地址的路由器上,这时数据包所携带的源地址是私有IP地址192.168.0.x,当收到这个数据包时,路由器会检查自己的NAT地址转换表,当找到相应的条目时,就会用218.246.29.18这个地址来替换掉数据包内的私有IP地址。数据包就会使用218.246.29.18的地址来访问外部网络了!
  
  好了,通过以上的了解,我们对NAT技术有一个初步的认识,下面我们就为大家讲解宽带路由器共享上网的原理。
  
  常用的四口宽带路由器的端口示意图
  

 
  路由器的端口示意图
  


  一般宽带路由器会有WAN口和LAN口,WAN口用来连接宽带线路,这个端口使用由电信运营商静态或动态提供的公网IP地址,而LAN口用来连接局域网内的PC。这些PC使用的是由DHCP协议动态分配或者手动分配的私有IP地址。其实这两个地址对应的就是上面讲到的NAT技术的Inside Local IP address和Inside Global IP address这两个地址。
  


  点击看大图


  
  一般我们局域网中的PC在设置IP地址时会有一个默认网关的选项,这个选项是指当PC向外部网络发送数据包的时候需要默认指向的主机,在这个环境中,也就是我们所说的宽带路由器的内部网络IP地址,一般都是192.168.0.1。
  
  当局域网中的用户A需要发送一个数据包到外部网络的时候,这台机器会发送一个请求到默认网关。当这个数据包到达宽带路由器的时候,宽带路由器会进行折解数据包的过程,提取出这个数据包的头部源IP地址信息,然后对照NAT地址映射表中的条目,找到相应的条目,这时就会有一个转换过程,宽带路由器会根据设置将电信运营商提供的公有IP地址代替我们的内部网络地址,用这个地址重新封装我们的数据包。这时,这个数据包就会使用这个公网IP地址来通过internet进行传输。
  
  在对方网络收到这个数据包的时候,折解出来的源IP地址就是这个公网的IP地址,对方便可以根据这个地址做出相应的回应,而这个回应所使用的目的IP地址便是这个公网IP地址。通过使用这个IP地址,回应包就会发送到我们的宽带路由器,这时宽带路由器会再进行一个转换,将目的地址转换为内部网络地址,这样数据包就可以到达我们局域网内的主机了

 

  
  选择宽带路由器还是代理服务器软件
  
  从以上我们可以看出,宽带路由器使用的是NAT技术,如果完全从速度上考虑,使用一台PC做代理服务器实际上要比宽带路由器的NAT转发性能要强。这里很多读者就会问,我们为什么不用代理服务器实现网络的共享,这样不就可以不需要投入成本再去购买宽带路由器了呢?这里我们就再为大家再解答一下这个问题。
  
  1、 宽带路由器能提供更多的功能
  
  现在市场上所销售的宽带路由器除了NAT转换功能以外,还集成了其他很多安全、可管理等功能,例如家长管理功能,DHCP动态地址分配功能。而代理服务器在这些功能上会逊色一些。所以在一些仅仅是为了满足共享上网需要的家庭用户,我们可以使用代理服务器软件,而在一些SOHO及其他需求较高的环境下,我们还是推荐使用宽带路由器。比如现在电信运营商很多都采用MAC地址绑定到IP地址的方法来阻止用户共享使用网络,如果是使用代理服务器软件时想要突破这种限制,是很难做到的,而宽带路由器则可以提供MAC地址克隆功能,轻松的突破这种限制来共享上网。
  
  2、 代理服务器需要一台主机为网络提供共享服务
  
  这是代理服务器一个很大的弊病,因为代理服务器需要一台主机为我们的网络提供共享服务,当代理服务器关机时,局域网内的主机就不能获得共享服务,而作宽带路由器共享上网方式,局域网的任何一台主机开关机都不会影响内部网络的上网需求。这个其实是宽带路由器很大的一个优势。
  
  3、 两台以上PC共享上网时宽带路由器首当其冲。
  
  两台以上的PC机共享上网时,如果使用代理服务器软件,我们需要投入一台交换机或者集线器设备,一般市场上八口交换机的价格是60元左右,而现在很多宽带路由器的价格也不到百元,而且将交换模块集成到了宽带路由器当中,笔者认为还是投资宽带路由器比较合适。
  
  从以上三点我们可以看出,我们选择宽带路由器是因为其共享上网方便、适合多种宽带线路,可以获得更多的功能。所以现在一般在家庭和SOHO组建小型网络共享上网时,我们还是建议大家买个百元左右的宽带路由器。
  
  总结:
  
  以上我们为大家介绍了宽带路由器共享上网的原理及基于这种原理我们是选择宽带路由器和代理服务器软件。通过这篇文章,大家应该对宽带路由器的共享原理有所了解,并且对正在筹备组建家庭网络和SOHO网络的用户会一定帮助。