Solaris10NAT配置攻略

网络整理 - 06-30

  一NAT 基础知识

   NAT定义

  NAT英文全称是Network Address Translation网络地址转换它是一个IETF(Internet Engineering Task Force Internet工程任务组)标准允许一个整体机构以一个公用IP(Internet Protocol)地址出现在Internet上顾名思义它是一种把内部私有网络地址(IP地址)翻译成合法网络IP地址的技术图给出了NAT的一个简单实现

  

  

   NAT技术的提出

  IP地址耗尽促成了CIDR的开发但CIDR开发的主要目的是为了有效的使用现有的internet地址而同时根据RFC (IP Network Address Translator)开发的NAT却可以在多重的互联网子网中使用相同的IP用来减少注册IP地址的使用 NAT技术使得一个私有网络可以通过互联网注册IP连接到外部世界位于内部网络和外部网络中的NAT路由器在发送数据包之前负责把内部IP翻译成外部合法地址内部网络的主机不可能同时于外部网络通信所以只有一部分内部地址需要翻译

  数据包中如果包含有目的IP 地址一旦内部Intranet 的IP 地址被截获那么内部网络资源就会暴露并可以对其实施攻击为了更好地提高内部网络安全性可以采用网络地址转换技术另外IP 地址的不足使许多用户使用私有EP 地址来搭建网络私有网络中的IP 地址应遵循RFC 中为私有网络分配的地址其地址范围为

  

  

       
  
  


    
    而使用私有地址不能直接与Internet 互联为了使这样的网络能够访问Internet可以采用地址转换解决这一问题网络地址转换(NAT) 实现将一个(或一组)IP 地址转换成另一个或一组iP 地址即将内网的IP 地址或者外网的IP 地址转换由于网络地址的缺乏和出于安全等因素的考虑许多内部网络使用私有IP 地址建立起来在与internet 互连时通过带有NAT 功能的路由器或防火墙实现私有IP 与合法IP 地址的转换对外表现为合法的IP 地址

   NAT工作原理

  NAT的基本工作原理是当私有网主机和公共网主机通信的IP包经过NAT网关时将IP包中的源IP或目的IP在私有IP和NAT的公共IP之间进行转换通过NAT路由器的所有出分组都把分组中的源地址更换为全球NAT地址通过NAT路由器的所有入分组都把分组中的目的地址(这个NAT路由器的全球地址)更换为适当的专用地址如图所示给出了地址转换的示例

  

  图 NAT工作原理图

   NAT的实现方法和分类

  NAT 功能通常被集成到路由器防火墙ISDN路由器或者单独的NAT设备中比如Cisco路由器中已经加入这一功能网络管理员只需在路由器的IOS中设 置NAT功能就可以实现对内部网络的屏蔽其他如Linux中的IP伪装(IP Masquerade)Solaris中的ipfilter或Windows的Sygate软件和Windows 都包含了这一功能NAT分类

  () 源NAT(Source NATSNAT)修改数据包的源地址源NAT改变第一个数据包的来源地址它永远会在数据包发送到网络之前完成数据包伪装就是一具SNAT的例子

  () 目的NAT(Destination NATDNAT)修改数据包的目的地址Destination NAT刚好与SNAT相反它是改变第一个数据懈的目的地地址如平衡负载端口转发和透明代理就是属于DNAT

   NAT的转换表

  NAT路由器怎样知道从Internet来的入分组的目的地址呢?可能有几百个或几千个专用IP地址每一个都属于一个特定主机如果NAT路由器有一个转换表问题就解决了最简单的形式是一个转换表只有两列专用地址和外部地址(分组的目的地址)当这个路由器对出分组的源地址进行转换时它也记下来目的地址———这个分组要去的地方当响应从这个目的地址返回时路由器就使用这个分组的源地址(作为外部地址)来找出这个分组的专用地址图给出了这个概念应当注意改变的(被转换的)地址用灰色表示

  

  

  图 NAT的转换表

  NAT的优点和缺陷

  NAT方案在一定程度上减缓了IP地址耗尽的周期和路由表规模越来越大的问题提供了一种非常方便的方式来解决私有网络与Internet的互连问题

  NAT的优点

  终端用户可以透明地访问Internet

  利用NAT可以做到对外部网络隐藏内部网络的体系结构从外部网络无法知道究竟是哪台主机发送或接收数据从另一个角度它也是一个缺点

  为已建成的私有网络方便地建立与Internet的连接而不必去修改每台主机的地址以及内部路由器的配置

  *在实现NAT时可以加入一些服务器代理和包过滤的功能可以获得很好的安全性及其它性能而不用增加管理的开销

  以极少的全局地址实现一个较大型的私有网络与Internet的互连

  但NAT方案含有很多消极特征决定了它只能是一个临时的解决方案包括

  如果网络规模增大访问Internet的主机增多地址对应表的规模必然会越来越大这将导致效率的降低

  它会增加错误寻址的可能性

  它隐藏了发送报文的主机的有关信息使得外部网络难于对它们进行管理例如若内部网络中某台主机在Internet上违反安全规则Inter—net就无法查处元凶

  由于NAT要修改相应的IP地址这使得不能对包含IP地址或有关IP地址信息的内容(如

  TCP报文头的校验和)进行加密降低了安全性

  l那些使用到IP地址的高层应用将受到限制除非NAT有可能修改其中包含的IP地址信息即便如此对这些高层应用还是有所限制如不能加密等

  *ICMPSNMPDNS等等各种网络上使用的协议在进行地址翻译时所带来的问题难予考虑周全

  二NAT在Solaris 下的实现原理

  NAT在Solaris 下的实现原理也是使用防火墙工具IPFilter是目前比较流行的包过滤防火墙软件它目前拥有多种平台的版本安装配置相对比较简单可以用它来构建功能强大的软件防火墙下面就其的安装以及一些典型的配置作一下说明IPFfilter 的作者是 Darren Reed 先生他是一位致力于开源软件开发的高级程序员目前工作于 SUN 公司IP Filter 软件可以提供网络地址转换(NAT)或者防火墙服务简单的说就是一个软件的防火墙并且这个软件是开源免费的当前的版本是目前支持 FreeBSDNetBSDSolaris Open SolarisAIX 等操作系统平台IPFilter是它是一个在引导时配置的可加载到内核的模块这使得它十分安全因为已不能由用户应用程序篡改我用Solaris 来作为实验的平台介绍一下IP FilterIP Filter过滤器会执行一系列步骤图说明处理包的步骤以及过滤如何与 TCP/IP 协议栈集成在一起

  

  图 处理数据包的步骤

  数据包在Solaris内的处理顺序包括下列步骤

   网络地址转换 (Network Address Translation NAT) 将专用 IP 地址转换为不同的公共地址或者将多个专用地址的别名指定为单个公共地址当组织具有现有的网络并需要访问 Internet 时通过 NAT该组织可解决 IP 地址用尽的问题

   IP 记帐可以分别设置输入规则和输出规则从而记录所通过的字节数每次与规则匹配时都会将包的字节计数添加到该规则中并允许收集层叠统计信息

   片段高速缓存检查如果当前流量中的下一个包是片段而且允许前一个包通过则也将允许包片段通过从而绕过状态表和规则检查

   包状态检查如果规则中包括 keep state则会自动传递或阻止指定会话中的所有包具体取决于规则指明了 pass 还是 block

   防火墙检查可以分别设置输入规则和输出规则确定是否允许包通过 Solaris IP 过滤器传入内核的 TCP/IP 例程或者传出到网络上

   组通过分组可以按树的形式编写规则集

   功能功能是指要执行的操作可能的功能包括 blockpassliteral 和 send ICMP response

   快速路由快速路由指示 Solaris IP 过滤器不将包传入 UNIX IP 栈进行路由从而导致 TTL 递减

   IP 验证已验证的包仅通过防火墙循环一次来防止双重处理

  三Solaris NAT配置实战

  在 Solaris 上不需要再安裝 IP Filter 了Solaris 已經內建了 IP Filter所以只要做一些設定就可以使用在舊版本的 Solaris系統上是需要自行下載(~avalon/ )和安裝 IP Filter 的

  了解nat规则

  IP Filter过滤器规则集很多这里笔者介绍和nat相关的规则

  查看活动的 NAT 规则

  

      # ipnat l
  List of active MAP/Redirect filters:
  map dmfe / > /
  List of active sessions:

    如何删除 NAT 规则

  以下示例显示如何删除当前 NAT 规则中的项

  

      # ipnat l
  List of active MAP/Redirect filters:
  map dmfe / > /
  List of active sessions:
  # ipnat C
   entries flushed from NAT list
  # ipnat l
  List of active MAP/Redirect filters:
  List of active sessions:


    
    如何将规则附加到 NAT 规则

  使用以下方法之一将规则附加到活动规则集

  在命令行上使用 ipnat f 命令将规则附加到 NAT 规则集

  

  

# echo map dmfe / > / | ipnat f 


    
    以下示例显示如何从命令行将规则添加到 NAT 规则集

  

  

      # ipnat l
  List of active MAP/Redirect filters:
  List of active sessions:
  # echo map dmfe / > / | ipnat f 
  # ipnat l
  List of active MAP/Redirect filters:
  map dmfe / > /
  List of active sessions:

启动IP转发

  NAT需要使用兩張網卡才能正常使用首先查看网卡使用ifconfig –a 命令如图

  

  图 查看网卡接口

  这里笔者使用的两块网卡分别是elx mxfe

  IP forwarding即IP转发在我们单位的日常工作中人们往往由于分配的IP地址不在一个网段而不能相互访问给员工之间的数据交换带来不便虽然可以利用第三层交换技术VLAN来实现数据交换但那需要更换现有的部分网络设备那么利用现有的网络设备通过大量的实践和探索我们找到了解决此问题的方法即利用IP转发功能来实现不同网段的数据交换IP转发就是在一个路由器中如果IP包的地址与路由器的地址表有相符的地址时把这个包卸下来发给相应的主机否则将其转发到别的路由器的过程首先查看目前ip转发情况使用routeadm 命令如图

  

  

  图 查看目前ip转发情况

  说明不带选项的 routeadm 命令可报告IP转发和路由选择守护进程的状态下面使用命令启动IP转发
    

  

routeadm u e ipvforwarding


    
    另外也可以使用smf命令

  

# svcadm enabled ipvforwarding

  下面重新使用routeadm 命令查看情况如图
   

  

  

  图 IP转发已经启动

  当你把 IP forwarding 启动后你就需要設定 NAT (的規則NAT 規則在檔案 /etc/ipf/nf 裡面 
    
   

  

      map elx / > / proxy port ftp ftp/tcp
  map elx / > / portmap tcp/udp auto
  map elx / > /

    修改/etc/ipf/pfilap 文件此文件包含主机上网络接口卡 (network interface card NIC) 的名称缺省情况下这些名称已被注释掉对传输要过滤的网络通信流量的设备名称取消注释
    
   

  

      vi /etc/ipf/pfilap
  # IP Filter pfil autopush setup
  # See the autopush(M) manpage for more information
  # Format of the entries in this file is:
  #major minor lastminor modules
  #iprb   pfil
  #elxl   pfil
  #eg   pfil
  #bge   pfil
  #nf   pfil
  elx   pfil
  #mxfe   pfil
  #el   pfil
  #ipdptp   pfil
  #lane   pfil
  pcn   pfil
  #pcelx   pfil
  #spwr   pfil


    
    启动服务使用命令svcadm enable svc:/network/ipfilter:default

  使pfilap配置文件生效

  

autopush f /etc/ipf/pfilap


    
    说明此步骤只需要做一次以后更改防火墙规则就不需要再做

  重新引导计算机使用命令reboot

  如果不希望重新启动计算机也可以使用命令

  

      ifconfig elx unplumb
  ifconfig elx plumb dhcp start

    
    这里假设elx是通过DHCP获得的ip地址