NAT 配置

更新时间:
2024-03-14
下载文档

NAT 配置

概述

NAT(Network Address Translation)又称为网络地址转换,用于实现私有网络和公有网络之间的互访。

NAT 是将 IP 数据报报头中的 IP 地址转换为另一个 IP 地址的过程。在实际应用中,NAT 主要用于实现私有网络访问外部网络的功能。这种通过使用少量的公有 IP 地址映射多数的私有 IP 地址的方式,可以在一定程度上缓解 IP 地址空间枯竭的压力。

私有网络地址是指内部网络或主机的 IP 地址,公有网络地址是指在互联网上全球唯一的 IP 地址。IANA(Internet AssignedNumber Authority)规定将下列的 IP 地址保留用作私网地址,不在 Internet 上被分配。

  • A 类私有地址:10.0.0.0~10.255.255.255;
  • B 类私有地址:172.16.0.0~172.31.255.255;
  • C 类私有地址:192.168.0.0~192.168.255.255。

如果选择上述三个范围之外的其他网段作为内部网络地址,则当与其他网络互通时有可能造成混乱。

NAT 转换机制

转换流程

路由器中维护着一张地址端口对应表,所有经过路由器并且需要进行地址转换的报文,都会通过这个对应表做相应的修改,进行<私有地址+端口>与<公有地址+端口>之间的转换。

转换过程如下所示:

  • 内部网络主机向外发送报文时,路由器将报文的源 IP 地址和端口替换为路由器的外部网络地址和端口。

  • 当外部的报文进入内部网络时,路由器会查找地址端口对应表,将报文的目的地址和端口进行转换,转换为真正的目的地址。

内部用户访问外部服务器的流程如下:

  • 用户向服务器发送源地址为 1.1.1.1:5000、目的地址为 2.2.2.2:5000 的报文。
  • 用户发至服务器的报文,在经过路由器的时候,经过地址转换,报文的源地址由 1.1.1.1:5000 改变为 2.2.2.1:2000。
  • 服务器收到用户的报文后,向用户回送报文,报文的源地址为 2.2.2.2:5000,目的地址为 2.2.2.1:2000。
  • 服务器发至用户的报文,在经过路由器的时候,经过地址转换,目的地址由 2.2.2.1:2000 改变为 1.1.1.1:5000。

上述的地址转换过程对终端(用户和服务器)来说是透明的。对外部服务器而言,它认为客户的 IP 地址就是 2.2.2.1,而并不知道有 1.1.1.1 这个地址。因此,NAT “隐藏”了私有网络的拓扑。

地址池

在内部网络的主机访问外部网络的时候,当内部网络的主机非常多,外部 IP 地址却只有一个时,地址转换可能就会显得效率比较低。解决这个问题需要一个私有网络拥有多个外部地址。

SylixOS 中实现的 NAT 使用地址池的方式来解决上面的问题,地址池就是一些合法 IP 地址(公有网络 IP 地址)的集合。用户可根据自己拥有的合法 IP 地址的多少、内部网络主机的多少、以及实际应用情况,配置合适的 IP 地址池。当主机从内部网络访问外部网络时,将会从地址池中挑选一个 IP 地址做为转换后的报文源地址。

NAT 机制优缺点

NAT 地址转换使内部的大量主机可以使用少量公网 IP 地址就可以访问外部网络资源,并且为内部主机提供了“隐私”保护,但是地址转换也存在了以下缺点:

  • 涉及 IP 地址的数据报文不能被加密,否则无法对数据报文进行地址转换。在应用层协议中,如果报文中有地址或端口需要转换,则报文不能被加密。例如,不能使用加密的FTP连接,否则 FTP 的 port 命令不能被正确转换。
  • 网络调试变得更加困难。比如,某一台内部网络的主机试图攻击其他网络,则很难指出究竟是哪一台机器是恶意的,因为主机的 IP 地址被屏蔽了。

NAT 命令

在 SylixOS 系统中,通常使用 nat 命令来配置 NAT,打开Shell界面,使用 help nat 命令可以查看 nat 的具体使用方法

[root@sylixos:/root]# help nat
start or stop NAT network.
eg. nat wl2 en1 (start NAT network use wl2 as LAN, en1 as WAN)
    nat stop    (stop NAT network)
nat [stop] | {[LAN Iface] [WAN Iface]}
[root@sylixos:/root]# 
  • 开启 NAT 模式,将 en1 作为 LAN 口,en2 作为 WAN 口。

    [root@sylixos:/root]# nat en1 ne2
    NAT network started, [LAN: en1] [WAN: ne2]
    [root@sylixos:/root]# 
    
  • 查看 NAT 配置信息。

    [root@sylixos:/root]# nats
    NAT networking alias setting >>
    
         ALIAS        LOCAL START     LOCAL END
    --------------- --------------- ---------------
    
    NAT networking direct map setting >>
    
     ASS PORT  LOCAL PORT    LOCAL IP      IP CNT   PROTO
    ---------- ---------- --------------- -------- -------
    
    NAT networking summary >>
        LAN: en1 
        WAN: ne2 
        Total Ass-node: 2048
        Used  Ass-node: 0
        IP Fragment: TCP-Disable UDP-Disable ICMP-Disable
    [root@sylixos:/root]# 
    
  • 关闭 NAT 模式。

    [root@sylixos:/root]# nat stop
    NAT network stoped.
    [root@sylixos:/root]# nats
    NAT networking alias setting >>
    
         ALIAS        LOCAL START     LOCAL END
    --------------- --------------- ---------------
    
    NAT networking direct map setting >>
    
     ASS PORT  LOCAL PORT    LOCAL IP      IP CNT   PROTO
    ---------- ---------- --------------- -------- -------
    
    NAT networking summary >>
        NAT networking off!
        IP Fragment: TCP-Disable UDP-Disable ICMP-Disable
    [root@sylixos:/root]# 
    
文档内容是否对您有所帮助?
有帮助
没帮助