精华内容
下载资源
问答
  • ubuntu 设置 NAT 转发

    2016-04-17 23:13:00
    最简单方法,可以把板子接到局域网内,我们的笔记本通过局域网交换机连接到板子,可是,这样要很多修改 IP 的操作;通常情况下,这时,你还需要一台小交换机和几根网线在你桌子上。很麻烦对不对? 这里提供了一个...

    针对需求

    嵌入式开发中,经常使用板子和笔记本通过网线直连,如果需要板子连接到外网,就比较尴尬。

    最简单方法,可以把板子接到局域网内,我们的笔记本通过局域网交换机连接到板子,可是,这样要很多修改 IP 的操作;通常情况下,这时,你还需要一台小交换机和几根网线在你桌子上。很麻烦对不对?

    这里提供了一个替代方法:可以配置笔记本 IPV4 转发,笔记本用 Wi-Fi 来连接到网络,然后,板子与笔记本有线连接的情况下,板子可以通过笔记本连接到外网。

    大致如下图:

     

    开发板修改

    1. 修改开发板 /etc/network/interface 文件,主要将 gateway 改为笔记本 IP。

    2. 重新插拔网线让配置生效。(可以ifdown后ifup,插拔网线更快些 :)

     

    笔记本(ubuntu,均需本机 root 权限):

    1. 使能本机的 ip_forward :  echo 1 > /proc/sys/net/ipv4/ip_forward

    2. 设置 iptables 规则:

    •  清除所有规则: iptables -F
    • 因为清除了所有,所以需要先允许 INPUT: iptables -P INPUT ACCEPT
    • 还需要允许 FORDWARD: iptables -P FORWARD ACCEPT
    • 允许 NAT 转发所有包到 wlan0:iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE

     

    可以使用下面两条指令来查看配置是否有效:

    1. 如果 ip_forward 是打开的,则输出 1: cat /proc/sys/net/ipv4/ip_forward

    2. iptables -nvL 看有哪些规则

     

    如果是只有一个网口的台式机,没办法,那你还是乖乖的找交换机和网线去吧~!

     

    搞了个脚本,免得每次手动敲:

    #!/usr/bin/env bash
    
    if [ -z $1 ]; then
        echo "usage: forward_to [eth0|wlan0]"
        exit 1
    fi
    
    if [ $(id -u) -ne 0 ]; then
        echo "Re-running script under sudo..."
        sudo "$0" "$@"
        exit 1
    fi
    
    echo 1 > /proc/sys/net/ipv4/ip_forward
    
    iptables -F
    iptables -P INPUT ACCEPT
    iptables -P FORWARD ACCEPT
    iptables -t nat -A POSTROUTING -o $1 -j MASQUERADE
    
    #dhcpd eth0 -pf /var/run/dhcp-server/dhcpd.pid

     

    展开全文
  • NAT的基本原理并不复杂,但是在...由于NAT是IP转发流程中的一个环节,具体的实现势必和软硬件密切相关。为了尽可能提高设备转发和报文处理的性能,软件数据结构和处理流程会应根据设备硬件的特点进行设计。本节我们...

    NAT的基本原理并不复杂,但是在落实到具体的软件实现中,还是有很多的细节值得玩味的。

    NAT的基本原理并不复杂,只是在网关设备上维护私网地址(端口)到公网地址(端口)的映射关系,通过修改流经网关的IP报文头部实现地址转换。由于NAT是IP转发流程中的一个环节,具体的实现势必和软硬件密切相关。为了尽可能提高设备转发和报文处理的性能,软件数据结构和处理流程会应根据设备硬件的特点进行设计。本节我们就把讨论焦点放在ComwareV5平台单核CPU与多核CPU的NAT实现细节上,同时介绍交换机产品支持NAT的方法。

    1单核还是多核?

    由于NAT的业务处理包括对于网络层、传输层甚至应用层的处理,普通的ASIC和交换芯片很难实现,因此一般的NAT实现都是通过CPU或NP来完成的。目前主流的实现方案包括单核CPU、多核CPU和NP三种。以下以Comware v5平台为例,分别介绍在单核CPU硬件平台和多核CPU硬件平台上NAT实现方式的异同点。

    1.1单核CPU硬件平台

    单核CPU一般用于中低端设备。对于Comware v5平台,NAT的业务处理使用专门的NAT会话来实现,同时针对NAT Server、ASPF、ALG等进行一系列特殊处理。

    1.1.1普通NAT处理

    当不涉及ALG等特殊场景时,单核CPU方式的NAT使用NAT会话表来记录会话信息,下面是在PAT或Easy IP方式下,一个从18.1.0.1发起,目的地为18.2.0.1的HTTP连接建立的NAT会话:

    Protocol GlobalAddr Port InsideAddr Port DestAddr Port

    TCP 18.2.255.254 12288 18.1.0.1 1912 18.2.0.1 80

    status:111 TTL:00:00:10 Left:00:00:06 VPN:---

    同样一个连接,如果使用No-PAT方式的NAT,会话信息如下:

    Protocol GlobalAddr Port InsideAddr Port DestAddr Port

    - 18.2.1.1 --- 18.1.0.1 --- --- ---

    status:NOPAT TTL:00:04:00 Left:00:04:00 VPN:---

    TCP 18.2.1.1 1934 18.1.0.1 1934 18.2.0.1 80

    status:NOPAT TTL:00:00:10 Left:00:00:04 VPN:---

    No-PAT方式下的会话其实是由一个主会话和多个子会话组成的。在该方式下,NAT模块依旧要根据子会话对端口进行判断,确定返回的报文的端口和发出的报文匹配,才进行NAT转换,防止满足第一条SESSION条件的报文(仅需要二元组匹配)从外网轻松穿越NAT。这样在NO PAT的转换方式下,同样保证了只能由内网主动发起连接,提供了更可靠的安全性。

    1.1.2ALG的处理

    多数协议在经过NAT网关时只需要使用普通的NAT转换处理,但是对于一些特殊协议如FTP、RTSP、SIP等,由于这些协议在应用层中携带了IP地址或端口等信息,因此需要ALG的帮助才能正常穿越NAT网关。

    以FTP协议为例,PORT模式的FTP在经过NAT时需要ALG的处理,因此NAT网关需要关注用户的每一个FTP命令,并识别需要进行ALG处理的命令,进行相应的ALG处理:

    *May 28 10:54:30:820 2011 MSR50 NAT/7/debug:

    Ftp Packet To Svr (Vlan-interface102-out :) Find a Ftp PORT CMD

    *May 28 10:54:30:821 2011 MSR50 NAT/7/debug:

    Ftp Packet To Svr (Vlan-interface102-out :) Process the PORT command 18.1.0.1:1976

    以上内容是通过打开设备调试开关跟踪到的信息。由此可以看出,NAT网关识别了FTP PORT命令,并进行了ALG的处理,那么究竟进行了哪些ALG的处理呢?

    当数据通道连接建立完毕后,NAT的会话表如下:

    Protocol GlobalAddr Port InsideAddr Port DestAddr Port

    - 18.2.1.1 --- 18.1.0.1 --- --- ---

    status:NOPAT TTL:00:04:00 Left:00:04:00 VPN:---

    TCP 18.2.1.1 1998 18.1.0.1 1998 18.2.0.1 21

    status:NOPAT TTL:00:05:00 Left:00:04:57 VPN:---

    TCP 18.2.1.1 2002 18.1.0.1 2002 18.2.0.1 20

    status:NOPAT TTL:00:05:00 Left:00:04:57 VPN:---

    TCP 18.2.1.1 2002 18.1.0.1 2002 --- ---

    status:NOPAT TTL:--- Left:--- VPN:---

    此处关注最后一个标红的会话,其目的地址和目的端口都为空,表示任何一个外网的IP地址都可以使用任意源端口来连接这个2002端口。这个会话正是为了适应FTP的“第三方连接”特性而设计的,是NAT ALG工作的结果。

    从上面内容可以看出,对于单核CPU的NAT,ALG工作的效果是直接体现在NAT会话中的。

    1.1.3和ASPF的共存

    ASPF(Application Specific Packet Filter)是一种基于应用层状态的包过滤方法。ASPF能够检查应用层协议信息,如报文的协议类型和端口号等信息,并且监控基于连接的应用层协议状态。每一个连接状态信息都将被ASPF维护,并用于动态地决定数据包是否被允许通过防火墙进入内部网络,以阻止恶意的入侵。同时,ASPF能够检测传输层协议信息(即TCP/UDP检测),根据源、目的IP地址及端口号决定TCP或UDP报文是否可以通过防火墙进入内部网络。

    对于单核产品,当在设备上配置了应用层协议检测后,ASPF可以检测每一个应用层的会话,并创建一个状态表项和一个临时访问控制列表(Temporary Access Control List,TACL),对于多通道协议,后续还会创建数据通道的TACL:

    (1)状态表项在ASPF检测到第一个向外发送的报文时创建,用于维护一次会话中某一时刻会话所处的状态,并检测会话状态的转换是否正确。

    (2)临时访问控制列表的表项在创建状态表项的同时创建,会话结束后删除,它相当于一个扩展ACL的Permit项。TACL主要用于匹配一个会话中的所有返回的报文,为某一应用返回的报文在防火墙的外部接口上建立一个临时的返回通道。

    ASPF一般用于阻止外网发起到内网的连接,对于普通的内网访问外网的NAT并没有影响,但是对于PORT模式的FTP,由于数据连接是从外部服务器发起的,因此还是存在影响的。

    图1NAT/ASPF并存

    如上图,NAT和ASPF并存,当使用PORT模式的FTP时,ASPF实际上进行了特殊处理,放过了入方向的数据连接:

    *May 28 11:29:10:620 2011 MSR50 ASPF/7/FTP: Session 0xB36CE80 - state = 33, token = 32, string 'PORT', value 3

    *May 28 11:29:10:620 2011 MSR50 ASPF/7/FTP: Session 0xB36CE80 - state = 33, token = 44, string '8', value 8

    *May 28 11:29:10:620 2011 MSR50 ASPF/7/FTP: Session 0xB36CE80 - state = 33, token = 13, string '77', value 77

    //捕获了PORT命令和命令中的端口

    *May 28 11:29:10:620 2011 MSR50 ASPF/7/EVENT: Source address :18.2.0.1 port number:(1:65535) destination address :18.1.0.1 port number:(2125:2125)

    *May 28 11:29:10:621 2011 MSR50 ASPF/7/OBJ_CREATE: Create session entry 0xB36BA40 address 18.2.0.1 bucket 2131

    //为服务器的地址建立ASPF会话

    *May 28 11:29:10:621 2011 MSR50 ASPF/7/OBJ_CREATE: Create the temporary ACL entry 0x7D67D00 originator 18.2.0.1(1:65535) destination 18.1.0.1(2125:2125) bucket 2131

    //为入方向数据连接建立TACL

    *May 28 11:29:10:621 2011 MSR50 ASPF/7/FTP: Session 0xB36CE80 - state = 34, token = 32, string '200', value 3

    *May 28 11:29:10:621 2011 MSR50 ASPF/7/FTP: Session 0xB36BA40 - process the PORT command 18.2.0.1:0

    *May 28 11:29:10:623 2011 MSR50 ASPF/7/FTP: Session 0xB36CE80 - state = 33, token = 32, string 'LIST', value 255

    *May 28 11:29:10:773 2011 MSR50 ASPF/7/FTP: Session 0xB36CE80 - state = 33, token = 32, string '150', value 254

    *May 28 11:29:10:873 2011 MSR50 ASPF/7/EVENT: Source address :18.2.0.1 port number:(20:20) destination address :18.1.0.1 port number:(2125:2125)

    *May 28 11:29:10:973 2011 MSR50 ASPF/7/OBJ_CREATE: Create the temporary ACL entry 0xB5CEAA0 originator 18.1.0.1(2125:2125) destination 18.2.0.1(20:20) bucket 2149

    //为出方向数据连接建立TACL

    *May 28 11:29:11:123 2011 MSR50 ASPF/7/OBJ_DELETE: Delete the temporary ACL entry 0xB5CEAA0 originator 18.1.0.1(2125:2125) destination 18.2.0.1(20:20) bucket 2149

    *May 28 11:29:11:274 2011 MSR50 ASPF/7/OBJ_DELETE: Delete session entry 0xB36BA40 address 18.2.0.1 bucket 2151

    //删除入方向TACL和会话

    *May 28 11:29:11:424 2011 MSR50 ASPF/7/OBJ_DELETE: Delete the temporary ACL entry 0x7D67D00 originator 18.2.0.1(20:20) destination 18.1.0.1(2125:2125) bucket 2151

    //删除出方向TACL

    1.1.4NAT Server

    NAT Server实际上是反方向的NAT,需要用户进行静态配置。需要注意的是,对于单核CPU设备,经过NAT Server的流量不会再另外创建NAT会话。

    对于NAT Server来说,如果和ASPF共存,需要在ASPF的入方向包过滤引用的ACL中将NAT Server对应的IP/端口放开,如下图:

    图2NAT Server和ASPF

    在接口的入方向,ASPF是先于NAT对报文进行处理的,因此ASPF的入方向包过滤引用的ACL应进行如下的配置,NAT Server才能正常工作:[d1]

    #

    acl number 3001

    rule 0 permit icmp

    rule 1 permit tcp destination 18.1.0.1 0 destination-port eq ftp

    rule 5 deny ip

    #

    同样,NAT Server对于特殊的应用层协议也需要ALG的支持,对于Passive模式的FTP客户端,在访问NAT Server时需要ALG处理:

    *May 28 12:19:06:505 2011 MSR50 NAT/7/debug:

    Ftp Packet To Client (Vlan-interface102-out :)Find a Ftp Entering PASV CMD

    *May 28 12:19:06:605 2011 MSR50 NAT/7/debug:

    Ftp Packet To Client (Vlan-interface102-out :) Process the PASV command 18.1.0.1:2330

    回过头来看NAT会话:

    Protocol GlobalAddr Port InsideAddr Port DestAddr Port

    TCP 18.2.255.254 2343 18.1.0.1 2343 18.2.0.1 3590

    status:241 TTL:00:05:00 Left:00:03:48 VPN:---

    TCP 18.2.255.254 2343 18.1.0.1 2343 --- ---

    status:8241 TTL:--- Left:--- VPN:---

    同样,最下面一条会话也是为了支持FTP的“第三方连接”功能。

    那么,当NAT Server/ASPF/ALG共存,会出现哪些问题呢?

    如图2,当接口配置如下时,Passive模式的FTP客户端,数据连接建立失败:

    #

    interface Vlan-interface102

    ip address 18.2.255.254 255.255.0.0

    nat outbound 2000

    nat server 1 protocol tcp global current-interface ftp inside 18.1.0.1 ftp

    firewall packet-filter 3001 inbound

    firewall aspf 1 outbound

    #

    FTP数据连接是从客户端发起的TCP连接,因此被入方向的packet filter过滤掉了,只要在ACL3001中增加对应的配置即可。但是对于Passive模式的FTP数据连接来说,源端口和目的端口都不是固定的,无法进行ACL的配置。

    解决问题的方法是另外配置一条入方向的ASPF:

    #

    interface Vlan-interface102

    ip address 18.2.255.254 255.255.0.0

    nat outbound 2000

    nat server 1 protocol tcp globalcurrent-interface[d2]ftp inside 18.1.0.1 ftp

    firewall packet-filter 3001 inbound

    firewall aspf 1 inbound

    firewall aspf 1 outbound

    #

    入方向的ASPF对FTP协议进行了检测,并放行了数据连接:

    *May 28 12:40:05:171 2011 MSR50 ASPF/7/FTP: Session 0xB346CC0 - state = 33, token = 32, string 'PASV', value 4

    //检测到PASV命令

    *May 28 12:40:05:321 2011 MSR50 ASPF/7/FTP: Session 0xB346CC0 - state = 35, token = 32, string '227', value 4

    *May 28 12:40:05:422 2011 MSR50 ASPF/7/FTP: Session 0xB346CC0 - state = 35, token = 44, string '9', value 9

    *May 28 12:40:05:522 2011 MSR50 ASPF/7/FTP: Session 0xB346CC0 - state = 35, token = 41, string '115', value 115

    *May 28 12:40:05:672 2011 MSR50 ASPF/7/EVENT: Source address :18.2.0.1 port number:(1:65535) destination address :18.1.0.1 port number:(2419:2419)

    *May 28 12:40:05:772 2011 MSR50 ASPF/7/OBJ_CREATE: Create session entry 0xB346A80 address 18.2.0.1 bucket 2425

    *May 28 12:40:05:922 2011 MSR50 ASPF/7/FTP: Session 0xB346A80 - process the reply to the PASV command 18.1.0.1:2419

    //开始处理对PASV命令的应答消息

    *May 28 12:40:06:022 2011 MSR50 ASPF/7/OBJ_CREATE: Create the temporary ACL entry 0x9226360 originator 18.2.0.1(1:65535) destination 18.1.0.1(2419:2419) bucket 2425

    //针对数据连接的端口创建入方向TACL

    *May 28 12:40:06:122 2011 MSR50 ASPF/7/EVENT: Source address :18.2.0.1 port number:(3621:3621) destination address :18.1.0.1 port number:(2419:2419)

    *May 28 12:40:06:273 2011 MSR50 ASPF/7/OBJ_CREATE: Create the temporary ACL entry 0x9226420 originator 18.1.0.1(2419:2419) destination 18.2.0.1(3621:3621) bucket 6044

    //针对数据连接的端口创建出方向TACL

    *May 28 12:40:06:373 2011 MSR50 ASPF/7/FTP: Session 0xB346CC0 - state = 33, token = 32, string 'LIST', value 255

    *May 28 12:40:06:473 2011 MSR50 ASPF/7/FTP: Session 0xB346CC0 - state = 33, token = 32, string '125', value 254

    *May 28 12:40:06:623 2011 MSR50 ASPF/7/FTP: Session 0xB346CC0 - state = 33, token = 32, string '226', value 254

    *May 28 12:40:09:531 2011 MSR50 ASPF/7/OBJ_DELETE: Delete the temporary ACL entry 0x9226420 originator 18.1.0.1(2419:2419) destination 18.2.0.1(3621:3621) bucket 6044

    //传输结束后删除出方向TACL

    *May 28 12:40:09:531 2011 MSR50 ASPF/7/OBJ_DELETE: Delete session entry 0xB346A80 address 18.2.0.1 bucket 6046

    *May 28 12:40:09:531 2011 MSR50 ASPF/7/OBJ_DELETE: Delete the temporary ACL entry 0x9226360 originator 18.2.0.1(3621:3621) destination 18.1.0.1(2419:2419) bucket 6046

    //传输结束后删除入方向TACL

    1.1.5静态NAT

    单核CPU设备支持一对一和网段对网段的静态NAT,被静态NAT绑定的内网地址可以通过对应的外网地址从外网直接进行访问,对于ALG的需求和普通的NAT Outbound以及NAT Server并没有区别。

    静态NAT处理的流量要创建NAT会话,会话有些类似No-PAT的NAT:

    Protocol GlobalAddr Port InsideAddr Port DestAddr Port

    - 18.2.1.1 0 18.1.0.1 0 --- ---

    status:800 TTL:00:05:00 Left:00:04:57 VPN:---

    TCP 18.2.1.1 3477 18.1.0.1 3477 18.2.0.1 21

    status:60008 TTL:00:05:00 Left:00:04:58 VPN:---

    需要注意的是,静态NAT由于能够保证地址一一对应,因此不再做端口的转换。

    1.2多核CPU硬件平台

    多核CPU被视为一种有效提升软转发性能的手段,使用范围越来越广。Comware v5的NAT功能针对多核硬件平台的实现和针对单核硬件平台的实现有很大的不同。

    1.2.1会话管理

    在Comware v5平台中,会话管理是多核CPU设备所特有的功能。会话管理是为了实现NAT、ASPF、攻击检测及防范等基于会话进行处理的业务而抽象出来的公共模块。会话管理把传输层报文之间的交互关系抽象为会话,并根据发起方或响应方的报文信息对会话进行状态更新和超时老化。

    会话管理支持多个特性分别对同一个报文进行处理,实现的主要功能包括:

    Ø报文到会话的快速匹配;

    Ø传输层协议状态的管理;

    Ø报文应用层协议类型的识别;

    Ø支持会话按照协议状态或应用层协议类型进行老化;

    Ø支持指定会话维持永久连接;

    Ø会话的传输层协议报文校验和检查;

    Ø为需要进行端口协商的应用层协议提供特殊的报文匹配;

    Ø支持对ICMP差错控制报文的解析以及根据解析结果进行会话的匹配。

    对于NAT来说,在多核CPU设备上没有独享的会话表,而是和ASPF等协议使用共同的会话表。这种实现大大简化了多种应用在一个接口上并存情况下的互操作。

    经NAT处理的普通流量创建的会话表如下:

    Initiator:

    Source IP/Port : 18.1.0.1/2545

    Dest IP/Port : 18.2.0.1/80

    VPN-Instance/VLAN ID/VLL ID:

    Responder:

    Source IP/Port : 18.2.0.1/80

    Dest IP/Port : 18.2.255.254/1026

    VPN-Instance/VLAN ID/VLL ID:

    Pro: TCP(6) App: HTTP State: TCP-EST

    Start time: 2011-05-28 13:07:25 TTL: 3587s

    Received packet(s)(Init): 27 packet(s) 1465 byte(s)

    Received packet(s)(Reply): 36 packet(s) 48751 byte(s)

    上表中已经明确列出了流量的发起方(Initiator)的源和目的地址和响应方(Responder)的源和目的地址,因为经过了NAT的处理,所以二者并不完全对称。会话表比单核CPU设备的NAT会话表包含更多的信息,也更为直观。

    1.2.2ALG的处理

    提到多核CPU设备的ALG,不得不谈的就是关联表。

    对于单核CPU设备来讲,ALG处理无法共享代码,同样一个FTP ALG,NAT需要对其进行特殊处理,ASPF也要对其进行特殊处理,大家各自维护一套代码,效率低下且不利于维护管理。

    正如会话表统领了NAT会话表、ASPF会话表等表项一样,关联表被用来处理一切和ALG有关的问题。

    和“单核CPU硬件处理平台ALG的处理”一节同样的场景,NAT网关为多核CPU设备,当ALG检测到客户端的PORT命令时,会创建关联表:

    *May 28 13:18:38:400 2011 SR66 ALG/7/ALG_DBG: -Slot=2; Alg debug info:

    Receive a FTP PORT CMD packet.

    *May 28 13:18:38:400 2011 SR66 ALG/7/ALG_DBG: -Slot=2; Alg debug info:

    From VPN : 0,Pro : TCP

    Direction : OUT

    ( 18.1.0.1: 2616 ) ----> ( 18.2.255.254: 1039 )

    *May 28 13:18:38:454 2011 SR66 SESSION/7/RELATION: -Slot=2;

    LocalTuple3: 18.1.0.1/2616 : GlobalTuple3:18.2.255.254/1039 (TCP)

    Create module call

    关联表信息如下:

    Local IP/Port Global IP/Port MatchMode

    18.1.0.1/2616 18.2.255.254/1039 Global

    App: FTP-data Pro: TCP TTL: 300s AllowConn 1

    关联表中各字段的含义如下:

    字段

    描述

    Local IP/Port

    内网IP地址/端口号

    Global IP/Port

    外网IP地址/端口号

    MatchMode

    会话表向关联表匹配模式,包括:Local、Global、Either

    lLocal表示新建会话的源IP/源端口与关联表的Local IP/Port匹配

    lGlobal表示新建会话的目的IP/目的端口与关联表的Global IP/Port匹配

    lEither表示新建会话的信息与关联表的Local IP/Port或Global IP/Port匹配

    App

    应用层协议类型,包括:FTP、MSN、QQ等

    Pro

    传输层协议类型,包括:TCP、UDP

    TTL

    关联表的剩余存活时间,单位为秒

    AllowConn

    关联表允许创建的会话数

    表1关联表中各字段的含义说明

    上面的关联表被用来匹配服务器发起的FTP数据连接,对于FTP协议来说,一个PORT命令只能对应一个数据连接,因此关联表中“AllowConn”字段的值为1,当数据连接建立成功后,关联表的连接数满,被删除:

    *May 28 13:18:38:464 2011 SR66 SESSION/7/RELATION: -Slot=2;

    LocalTuple3: 18.1.0.1/2616 : GlobalTuple3:18.2.255.254/1039 (TCP)

    Delete child full

    *May 28 13:18:38:464 2011 SR66 SESSION/7/RELATION: -Slot=2;

    LocalTuple3: 18.1.0.1/2616 : GlobalTuple3:18.2.255.254/1039 (TCP)

    Delete module call / child full

    总之,对于多核CPU的NAT,ALG主要通过关联表进行工作。

    1.2.3和ASPF的共存

    多核CPU设备的ASPF和单核CPU设备不同,不存在TACL的概念。ASPF的应用层协议检测功能由会话管理及ALG功能协作实现。ASPF将检测到的应用层会话的首报文与配置的策略进行匹配,匹配的结果交由会话管理用来建立会话信息数据库以及维护会话状态。之后,ASPF根据会话管理返回的会话状态信息决定后续报文的处理方式。

    因此,一般来说多核CPU设备的NAT和ASPF之间是比较松散的耦合关系,二者通过会话管理联系。

    1.2.4NAT Server

    对于多核CPU设备,经过NAT Server的流量还是会创建会话,这一点与单核CPU处理不同。NAT Server对于特殊的应用层协议也需要ALG的支持,对于Passive模式的FTP客户端,在访问NAT Server时需要ALG处理:

    *May 28 14:05:06:350 2011 SR66 ALG/7/ALG_DBG: -Slot=2; Alg debug info:

    Receive a FTP PASV Response packet.

    *May 28 14:05:06:350 2011 SR66 ALG/7/ALG_DBG: -Slot=2; Alg debug info:

    From VPN : 0,Pro : TCP

    Direction : OUT

    ( 18.1.0.1: 2793 ) ----> ( 18.2.255.254: 2793 )

    1.2.5静态NAT

    和单核CPU设备一样,多核CPU设备也支持一对一和网段对网段的静态NAT,被静态NAT绑定的内网地址可以通过对应的外网地址从外网直接进行访问,对于ALG的需求和普通的NAT Outbound以及NAT Server并没有区别。

    静态NAT处理的流量要创建会话表。

    1.3单核架构和多核架构实现的区别

    从上面描述可见,单核架构的NAT实现和多核有很大的区别,主要表现在以下几个方面:

    会话表管理

    ALG处理

    NAT Server

    单核构架

    使用独立的NAT会话表

    处理结果在NAT会话中体现

    经过NAT Server流量不创建会话

    多核构架

    多个业务使用统一的会话表

    处理结果用关联表体现

    经过NAT Server流量创建会话

    表2单核NAT和多核NAT的区别

    2NAT插卡相关的转发实现

    对于中高端交换机产品来说,NAT功能需要专门的业务插卡来实现,如何将流量引入和引出插卡是转发流程的关键所在。

    2.1二三层转发方式

    这种方式是将NAT插卡视为一台独立的设备,交换机只做二层转发,报文在入VLAN A被转发到插卡的三层接口A,经插卡内部的三层转发到达三层接口B进行NAT处理,处理完毕后转发到交换机的VLAN B,最终二层转发到外网,外网返回的报文走相反的流程,如下图:

    [d3]

    图3二三层转发方式引流

    这种引流方式的原理和配置都比较简单,一般用于交换机和SecBlade插卡配合的场景,但是缺点也很明显,引流难以控制,所有流量都上插卡可能导致插卡负担过重,成为性能瓶颈。

    2.2重定向方式

    第二种引流的方式是通过重定向的方式将需要NAT处理的流量送上插卡进行处理,不需要NAT处理的流量由交换机直接转发。

    图4重定向方式引流

    这种引流方式克服了方法一的缺点,重定向方式的引流可以有效的控制上NAT插卡的流量,达到优化网络性能的目的。但是这种引流方式在配置方面还是比较繁琐,需要在NAT插卡和交换机两方面分别进行NAT的配置和引流的配置,由于引流配置的固定性,难以实现多块NAT板的备份功能。

    2.3OAA方式

    OAA方式的引流是NAT插卡通过ACFP协议获取交换机的端口信息,然后通过ACFP协议下发策略,将特定端口的特定流量引到插卡进行NAT处理,处理完毕送回交换机进行转发。

    图5OAA方式引流

    OAA方式引流的配置简单,大部分配置都在插卡上完成,交换机只需使能ACFP协议,另外,多块NAT插卡还可以下发相同规则但优先级不同的ACFP策略,实现NAT插卡之间的备份。

    3小结

    对于不同的硬件平台,转发方面的设计和实现必然会有所区别。针对单核CPU和多核CPU两种硬件构架,Comware v5平台设计了两种NAT实现,目的是为了更好的适配硬件平台,实现功能、性能和可维护性等方面的最优化。

    丰富的业务插卡是H3C公司中高端交换机的亮点之一,而多样化的引流方式,尤其是OAA的引流方式增强了NAT插卡的灵活性。


    [d1]增加了ASPF和NAT处理顺序的讲解

    [d2]该参数并没有问题,只是比i较老的版本不支持。

    [d3]已标明A和B


    展开全文
  • 通过设置NAT转发使Ubuntu Linux虚拟机连接互联网 提要:大家都知道使用虚拟机联网最简单的一个方法就是采用Bridged(桥接)方式连接网络, 从而虚拟网卡可以通过桥接宿主机的物理网卡来连接网络,这样做的好处是简单、...

    通过设置NAT转发使Ubuntu Linux虚拟机连接互联网

                                    

    提要:

    大家都知道使用虚拟机联网最简单的一个方法就是采用Bridged(桥接)方式连接网络, 从而虚拟网卡可以通过桥接宿主机的物理网卡来连接网络,这样做的好处是简单、直接。但是这时虚拟机也会占用一个宿主机所在局域网的IP,如果网内使用虚拟机的人数众多势必会对IP地址的分配造成一定压力,再者如果路由器开启了MAC防火墙并只允许指定MAC上网的话,那么你的虚拟机就会被关在墙外了。

    那么我们的目标是:宿主机能联网,虚拟机就要能联网,无疑NAT转发是你最好的选择,接下来我们来设置NAT转发。

    步骤:

    1.   进入硬件设置界面(“VM-Settings”)

     

    2.   将虚拟机联网方式改为NAT,点击OK完成

     

    3.   打开虚拟网络设置(“Edit-Virtual Network Editor”)

     

    4.   查看NAT的“Gateway IP address”,并记录(例如本机是192.168.153.2),如果“NAT Service”未运行请点击“Start”按钮使之运行,点击“确定”完成

     

    5.   切换到Ubuntu Linux系统,右键单击任务栏网络适配器图标 (因个人配置原因,位置可能不同),点击“编辑连接”

     

    6.   打开“网络连接”窗口后,在“有线”选项卡选中默认的“Auto eth0”,点击“编辑”

     

    7.   进入“Auto eth0”的编辑状态,此时点击“IPV4设置”,将IP地址获取的方法改为“手动”

     

    8.   在手动设置界面,点击“添加”按钮来添加一个IP地址

     

     

    9.   设计一个与NAT网关相同网段的IP地址(如:192.168.153.3,具体IP参考你的实际情况)作为Ubuntu系统的本地IP,将此IP连同子网掩码(255.255.255.0)、NAT网关IP192.168.153.2)一并填写,DNS服务器请填写运营商提供的DNS地址或本地DNS镜像的IP地址,点击“应用”。

     

    10. 此时需要输入Ubuntu登陆账户的密码来对此操作授权,点击“授权”完成

     

    11. 这样就设置完毕了,打开自带的Firefox浏览器测试一下吧(如果网络设置未更新,可回到步骤5重新启用联网)

     

    展开全文
  • 目的,模拟一个内网和外网,内网机器访问外网,并进行 地址转换。 采用Linux主机做网关,在其上配置两个网段、iptables的转发规则,并作为内网 DHCP 服务器。

    本次纯属记录,希望有所帮助。
    目的,模拟一个内网和外网,内网机器访问外网,并进行 地址转换。
    实验环境:
    已有一个 192.16.10.0/24 网段的局域网,该网络内拥有一台路由器,用于给网络中的设备分配IP地址。实验时,把该局域网当成外网。以下都以外网称呼。
    欲配置一个 192.168.1.0/24 的网段作为内网。
    有一台拥有两网卡的Linux主机,将该Linux主机做成网关,其分别连接两个网段,完成两网段间的网络地址的转换工作。以下以网关称呼。
    以下操作均在root用户下进行。

    1. 网卡配置和NAT转发

    第一步:配置 网关

    网关配置:系统 Ubuntu 18.04,内核版本 5.0.0,网卡1名称:enp1s0,网卡2名称:enx00e04c68066f
    (网卡2是一个USB转网卡,可使用ls /proc/sys/net/ipv4/confifconfig查看网卡名称)

    欲把该网关的 网卡 enp1s0 连接外网网段 192.16.10.0/24。网卡 enx00e04c68066f 连接 内网网段 192.168.1.0/24。
    其 interface 文件配置如下:
    vim /etc/network/interface

    # enp1s0 采用 DHCP,等待分配 ip
    auto enp1s0 
    iface enp1s0 inet dhcp
    
    # enx00e04c68066f 采用 静态 ip,其 ip 是 192.168.1.2
    auto enx00e04c68066f 
    iface enx00e04c68066f inet static
    address 192.168.1.2
    netmask 255.255.255.0
    # gateway 192.168.1.2 # 网关
    # dns-nameservers 114.114.114.144 # DNS
    # dns-nameservers 8.8.8.8
    
    # 本地回环地址,默认这样配置即可
    auto lo
    iface lo inet loopback
    

    说明,enp1s0 连接了外网,采用dhcp获得地址(由上述所说的路由器分配地址)。enx00e04c68066f 连接内网,采用了静态网络配置,把ip地址设定为 192.168.1.2。
    然后使用/etc/init.d/networking restart重启网络。为避免不必要的问题,建议重启系统。
    可使用ifconfig查看是否网络配置是否生效了。
    本人实验时,enp1s0 分配到ip地址为192.16.10.8.
    在这里插入图片描述

    第二步,网关 开启内核转发

    在网关上,要配置内核转发。
    此为永久生效方案,即重启后仍有效
    vim /etc/sysctl.conf
    大约在文件的第28行,将以下内容的注释去掉(或者新增一个)

    net.ipv4.ip_forward=1
    

    使内核转发立即生效:
    sysctl -p

    第三步:配置内网中机器

    将一台Linux主机PC1的网卡eth1连接到 enx00e04c68066f 网卡。将其作为内网机器。
    为其配置静态ip地址192.16.10.5。
    ifconfig eth1 192.16.10.5
    或者,像上面一样,通过修改 interface 文件实现静态网络配置。

    配置后,一定用使用 ping 等命令测试 PC1 与 网关的内网 ip 是否连通。如ping 192.168.1.2,两台机子上都要ping对方机器。

    然后加一条路由,告诉内网机器,发送给 192.16.10.0/24 的数据包,交给网关 192.168.1.2 处理。(确保能ping通之后,再加此路由)
    route add -net 192.16.10.0/24 gw 192.168.1.2

    route add -net 0.0.0.0 gw 192.168.1.2
    注:重启网络或系统之后路由需重配。
    或者在 interface 里面,加上默认网关(gateway字段),指向 网关的内网 ip 地址。

    注:使用route -n可查看当前的路由配置。使用route del -net 192.16.10.0/24 gw 192.168.1.2可删除上述配置的路由。

    如果是Windows系统,在“控制面板” -> “网络和Internet” -> “网络和共享中心” -> 左边“更改适配器设置” -> 双击要配置的指定网卡->弹出的界面上,选择“属性” -> 在“此连接使用下列项目’中,找到并双击“Internet 协议版本4(TCP/IPv4)” -> 选中 “使用下面的IP地址”,并填写相关参数(DNS服务器参数也可提供) -> 确定后关闭即可。

    第四步,配置 网关的 NAT 转发规则

    转发时,内网发出的数据包,其目的地址是 外网机器的ip,源地址是内网ip,应由 网关 将内网的 ip 地址 转换成 网关的 外网 ip,然后,再发送出去,故为源地址转换,SNAT。

    而外网返回回来的数据包,其源地址是外网机器的ip,目的地址是网关的外网 ip,应由 网关将 此 外网的 ip 地址,转成内网的 ip 地址,然后发送给内网中对应的机器,故为目的地址转换,DNAT。

    简要解释,如果数据包源地址是内网 ip ,外网机器 并不能识别这个 内网 ip 在哪里,因此没法返回消息,但 外网机器,可以识别该 网关的外网 ip,因而可以发送给网关,再由网关交给内网中实际的机器。因此 发出去之前,将 源 ip 改成 网关的外网 ip,返回时,要将 目的 ip 变为 内网实际机器的 ip。

    在网关上配置如下的 NAT 规则

    iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o enp1s0 -j MASQUERADE
    

    其指示,来自 192.168.1.0/24 (也可以不指定),并由 enp1s0 发出去 的数据包,应进行 NAT 转换。该 MASQUERADE 会自动进行 SNAT (似乎也会将返回数据包自动DNAT到内网机器上),有关于这个关键字的更多内容,可搜索“iptables -j MASQUERADE”了解。

    配置完之后,应在内网 机器 PC1 上,ping 192.16.10.2 查看是否能通信,以及,ping 外网其他 ip 地址查看是否能通信。例如,外网路由器的 ip 地址是 192.16.10.254,需ping 192.16.10.254。可在网关或外网机器上,使用wireshark等软件,抓包查看 发出来数据包的源ip地址 和 返回的数据包的目的ip地址,是否是那台网关的 外网ip地址。
    注:
    可使用 iptables -t nat -nL查看配置的规则。
    使用iptables -t nat -F 可清空规则。
    或使用下面的,指定删除上述规则。

    iptables -t nat -D POSTROUTING -s 192.168.1.0/24 -o enp1s0 -j MASQUERADE
    

    注:此规则,重启电脑后会失效,需重配。也可采用如iptables-save等命令自动重配,此处请自行搜索。

    到了这里,配置就完了,内网机器要使用浏览器上网的话,最好再在其上配置dns地址。

    2. 网关 配置 DHCP 服务器(可选)

    上述第三步,内网是采用了静态 ip 的形式进行了配置。也可以在 网关上 配置一个 DHCP 服务器,让其给内网中的机器,分配内网地址和网关地址,以及dns地址。
    此处使用 isc-dhcp-server 进行DHCP分配。
    以下操作在 网关 机器上进行。

    下载 DHCP 服务器 软件

    apt-get install isc-dhcp-server
    

    配置 DHCP 服务器 设置

    配置第一个文件
    vim /etc/default/isc-dhcp-server
    配置如下,应配置 网关 的 内网网卡作为 DHCP 服务器监听的网卡。
    有的版本可能没有v4和v6的区别,只有INTERFACES一条。

    INTERFACESv4="enx00e04c68066f"
    # 显然上面是指ipv4,这个是指ipv6
    INTERFACESv6="" 
    

    配置第二个文件
    vim /etc/dhcp/dhcpd.conf
    这个是配置ipv4的dhcp用的。如果需要配置ipv6的,同目录下,有个dhcpd6.conf是配置ipv6的dhcp用的。
    注:建议配置前备份这两个文件,本人删除后,重装软件等啥操作都试了,还是没有生成这两个文件,不得已在其他虚拟机上安装这个软件,拷贝了这两个文件过来。
    该文件配置如下:

    # option definitions common to all supported networks...
    option domain-name "example.org"; # 可以不改,不知道有什么用
    #option domain-name-servers ns1.example.org, ns2.example.org;
    option domain-name-servers 202.112.14.21,202.112.14.11; # 这个是DNS,也可填写如114.114.114.114,一般填两个
    
    # 下面两个是使用了默认值,应该和 DHCP 地址租期有关系
    default-lease-time 600; # 
    max-lease-time 7200;
    
    # The ddns-updates-style parameter controls whether or not the server will
    # attempt to do a DNS update when a lease is confirmed. We default to the
    # behavior of the version 2 packages ('none', since DHCP v2 didn't
    # have support for DDNS.) 
    ddns-update-style none; # 这个不知道干啥,默认吧
    
    # 下面这个就是个人 DHCP 网段配置了,可参照文件里面的示例写
    # 网段和掩码
    subnet 192.168.1.0 netmask 255.255.255.0 { 
    
    	# DHCP 分配的地址范围
    	range 192.168.1.2 192.168.1.100; 
    	
    	# 内网 网关的 ip 地址
    	option routers 192.168.1.2;  
    	
    	# 广播地址
    	option broadcast-address 192.168.1.255; 
    }
    

    请注意上面的字母还有分号啥的不要写错了。

    网关 网卡配置

    网关 的 内网网卡 enx00e04c68066f, 一般配置成上述 内网 网关 ip,即 192.168.1.2,采用静态配置。这部分的 interface 和上面是一样的。配置完后,建议/etc/init.d/networking restart重启网络。

    启动 DHCP 服务器

    使用 server isc-dhcp-server restart 重启 DHCP 服务器。如果出错,这里并不会报错。
    使用server isc-dhcp-server status 可以看到状态,如果成功启动,则应看到如下 active(running)等字眼。如下所示:
    在这里插入图片描述
    如果出错,这里会提供一点点报错信息,请仔细检查 上述两个配置中,是否错误输入了什么东西,例如单词拼写错误,空格输入成逗号,没有输入分号,网段输入错误,等等。(本人在这里,因为拼写错误,检查了良久)

    如果成功启动 输入netstat -aunp | grep dhcpd,应看到(单个或多个) dhcpd,如果失败了,则没有结果。或者是ps -ajx | grep dhcpd(至少会显示 grep 这条,但这个显然不是dhcpd的进程)。

    可使用 ifconfig 随时查看网卡状态。

    提醒,网关上记得加 iptables 的 NAT 规则。

    内网 主机网络配置

    这些操作在 内网中Linux机器 PC1 上进行
    需将 interface 文件中网卡 eth1 改成 DHCP 获取。
    vim /etc/network/interface

    # eth1 采用 DHCP,等待分配 ip
    auto eth1 
    iface eth1 inet dhcp
    
    # 本地回环地址,默认这样配置即可
    auto lo
    iface lo inet loopback
    

    然后,/etc/init.d/networking restart重启网络,或者重启电脑。
    因为 DHCP 服务器填有 网关地址,故这里可以不用配置路由。

    使用 ifconfig 查看是否分配到了ip地址。

    如果是Windows系统,在“控制面板” -> “网络和Internet” -> “网络和共享中心” -> 左边“更改适配器设置” -> 双击要配置的指定网卡->弹出的界面上,选择“属性” -> 在“此连接使用下列项目’中,找到并双击“Internet 协议版本4(TCP/IPv4)” -> 请选中 “自动获得IP地址” -> 确定后关闭即可。

    如果 ip 地址获取失败,建议重启网卡或电脑试试。

    关闭 DHCP服务器

    如果不需要了DHCP服务器,除了卸载软件,或者杀死相关进程,也可使用

    systemctl disable isc-dhcp-server
    systemctl stop isc-dhcp-server
    

    停掉 DHCP 服务。这时候,使用systemctl status isc-dhcp-serverservice isc-dhcp-server status看到将显示inactive(dead)(可能需要按Q键退出该模式回到终端)。这样开机之后,也不会启动该服务。

    显然,重新启用该服务的命令如下,启动后,一定要用service isc-dhcp-server status等命令查看是否启动成功。

    systemctl enable isc-dhcp-server
    systemctl restart isc-dhcp-server # 或者 service isc-dhcp-server restart
    

    3. 访问 内网(可选)

    在搭建好 内网 网关 之后,内网 中 主机,可以访问外网中主机,例如 在 192.168.1.5 的主机上,可以 ping 通 192.16.10.71 的主机。但反过来ping并不行。

    内网访问外网原理简述。
    内网中主机 192.168.1.5 ,虽然可能不知道192.16.10.254的主机在哪里,但根据路由表或默认网关,会自动发送给 内网的网关 192.168.1.2,这个网关 由于 同时连接了 内网(192.168.1.2)和外网(192.16.10.8),其根据自己的路由表或默认网关,就会发送到外网中相应的主机上,这个时候,因为做了NAT设置,因而数据包的源地址192.168.1.5,被修改成192.16.10.8,等返回时,返回包的目的地址是192.16.10.8,然后网关再自动NAT,将目的地址改成192.168.1.5,然后 内网中主机就收到返回包,就表现为ping通了。

    而外网不能访问内网,是因为 外网 主机(比如 192.16.10.71)不知道 内网主机(192.168.1.5)在哪里,然后它发给自己的默认网关,比如外网的路由器(192.16.10.254),但是这个路由器也不知道内网主机在哪里,因此就没办法通信。

    所以,想要从 外网的主机 访问到 内网的主机,一个比较简单的方法原理,就是指定 发往 192.168.1.5 的包,发给 那个同时连接了两个网段的网关即可。
    因为,在需要访问内网的那个外网主机(192.16.10.71)上或者是外网网段的路由器上,添加一条路由即可。例如:

    route add -net 192.168.1.0/24 gw 192.16.10.8 # linux 下写法
    # route add 192.168.1.0/24 192.16.10.8 # windows 下写法,需管理员权限运行 cmd
    

    其指示,发往 192.168.1.0/24 的数据包,发给 192.16.10.8 处理。
    注:因为这个内网网段是ip协议里的私有网段,如果是公有网段,那可能影响 主机上网。
    另注:抓包发现这个数据包里的ip地址并没有被NAT,不太懂(例如,我在192.16.10.71的主机上,ping 192.168.1.5时,返回的数据包并没有被 NAT)。
    这样,在 外网主机上,访问 内网主机时,直接填写内网主机的IP地址即可。
    注:此方法,重启后会失效。

    也有其他方式的访问内网实现,例如端口代理之类的。

    4. 参考链接

    ubuntu16.04配置网卡
    Linux网络的SNAT和DNAT
    IPtables中SNAT、DNAT和MASQUERADE的含义
    ubuntu16.04上安装配置DHCP服务的详细过程

    展开全文
  • VirtualBox NAT端口转发

    千次阅读 2012-12-01 18:53:16
    4.2.4 版本 VBoxManage modifyvm "Ubuntu" --natpf1 "guestssh,tcp,,2222,,22" vboxmanage 修改vm配置 虚拟机名(Ubuntu) nat_port_forwarding(第1个网卡) "端口转发名(guestssh),tcp,宿主机IP...最简单的方式:可以
  • 简单理解 NAT

    千次阅读 2019-12-15 00:31:23
    文章目录简单理解 NAT1. 简介2. 静态NAT(Static NAT)3. 动态NAT(Pooled NAT)4. 网络地址端口转换NAPT(Port-Level NAT)5. 一些问题 简单理解 NAT 写这篇文章仅供自己参考 =W= 1. 简介 NAT...
  • 这是我对 VirtualBox 自带帮助关于 NAT 设置部分的翻译,翻的不当处,请批评指正,我不是英语专业。未完,待续。转载我的文章,请注明出处,非常感谢。 1、 Network Address Translation (NAT) Network ...
  • 因masquerade设置起来更简单,所以很少有人谈及NAT转发。其实NAT设置并不复杂,实际应用中也会更灵活。 假如有两条线路,电信接入的网卡名为TEL,网通接入的网卡为CNC,内网分配的IP为192....
  • NAT 技术简单配置

    2020-08-06 19:19:52
    NAT产生的背景 由于IPv4地址不够用,IPv6没有广泛应用起来。 NAT的定义 NAT:网络地址转换技术(Network Address Translation) 网络地址转换,就是替换IP报文头部的地址信息。NAT通常部署在一个组织的网络出口位置...
  • NAT 详解

    万次阅读 多人点赞 2017-09-13 15:39:53
    NAT技术(一、二、三、四、五) 系列:https://blog.51cto.com/wwwcisco/category1.html CCNA学习笔记之NAT:http://sweetpotato.blog.51cto.com/533893/1392884 网络地址转换NAT原理及应用:...
  • NAT(地址转换技术)详解

    万次阅读 多人点赞 2018-03-17 16:31:35
    NAT产生背景 ip地址基础知识 NAT技术的工作原理和特点 静态NAT 动态NAT NAT重载(经常应用到实际中) NAT技术的优缺点 优点 缺点 NAT穿越技术 应用层网关(ALG) ALG的实际应用 NAT技术的未来 参考文献 ...
  • 本文一个简单的示例演示LVS的NAT模式的配置和测试。 使用的配置环境如下: Director server: 192.168.8.4(对外提供服务的IP),192.168.9.4 Real server1: 192.18.9.5 Real server2: 192.168.9.6 网络topology图...
  • 穿透NAT类型以及STUN、TURN简单介绍概述NAT的副作用以及解决方案NAT有4种不同的类型锥形和对称形NAT的区别STUN和TURN的简单介绍STUN Server主要做了两件事:TURN Server也主要做了两件事:三种转发情形 概述 NAT英文...
  • NATNAT穿透

    2014-01-28 16:53:21
    1 引言 ... 在这些配置中有不同类型的NAT 设备,而且不同的网络都可以用这些NAT 设备. 但是这些NAT 设备在peer-to-peer ( p2p, 对等网络)的应用和协议中引起了一些问题,例如在电话会议、 多人在
  • NAT简介

    千次阅读 2019-09-03 16:28:37
    NAT详解:基本原理、穿越技术(P2P打洞)、端口老化等 这是一篇介绍NAT技术要点的精华文章,来自华3通信官方资料库,文中对NAT技术原理的介绍很全面也很权威,对网络应用的应用层开发人员而言有很高的参考价值。 1. ...
  • NAT

    2007-01-09 15:04:00
    NAT英文全称是“Network Address Translation”,中文意思是“网络地址转换”,它是一个IETF(Internet Engineering Task Force, Internet工程任务组)标准,允许一个整体机构以一个公用IP(Internet Protocol)地址...
  • NAT概述

    2020-03-30 18:56:53
    原文链接:...1IPv4协议和NAT的由来 今天,无数快乐的互联网用户在尽情享受Internet带来的乐趣。他们浏览新闻,搜索资料,下载软件,广交新朋,分享信息,甚至于足...
  • NAT详解

    千次阅读 多人点赞 2017-09-19 09:38:31
    1. IPv4协议和NAT的由来 今天,无数快乐的互联网用户在尽情享受Internet带来的乐趣。他们浏览新闻,搜索资料,下载软件,广交新朋,分享信息,甚至于足不出户获取一切日用所需。企业利用互联网发布信息,传递...
  • NAT穿透

    2014-09-17 21:13:36
    简单地说,NAT就是在局域网内部使用私有地址(前面文章说到过每类IP地址都有私有地址),而当内部节点要与外部网络进行通讯时,就在网关(可以理解为 出口)处将内部地址替换成公用地址,从而在公网(internet)上正常使用....
  • NAT转换

    千次阅读 2017-01-12 19:36:13
    距离上一次总结“路由原理...“NAT转换”存在的直接的意义就是解决了IP地址不够用的现状。“局外人”会认为日常生活中我们每台电脑所用的IP地址是唯一的,因为只有这样才不会产生不必要的“冲突”。其实这是不准确的
  • NAT 心得

    千次阅读 2013-04-30 18:24:30
    前言:做了十几天的NAT穿越,网上的资料很多,一搜一堆,但也都是大抄小抄,基本上能自己写的也就那么几篇,但自己实现的时候总是不成功,原理并不难,为什么总是不成功呢,当时只纠结于我在实验室跟女朋友公司的...
  • UDP中四种不同的NAT类型及检测方法 考虑到UDP的无状态特性,目前针对其的NAT实现大致可分为Full Cone、Restricted Cone、Port Restricted Cone和Symmetric NAT四种。 值得指出的是,对于TCP协议而言,一般来说,...
  • NAT原理

    2014-04-01 20:23:40
    NAT原理简介  NAT英文全称是“Network Address Translation”,中文意思是“网络地址转换”,它是一个IETF(Internet Engineering Task Force, Internet工程任务组)标准,允许一个整体机构以一个公用IP(Internet...
  • 目前,对于UDPNAT穿透已经有一些通用的,有 效的解决方法,基于这些方法实现简单NAT检测和穿透 关键词 NAT穿透,P2P,对等网络,Qt 中图法分类号TP311 NAT Detection and NAT Penetration Based on Qt Yuhang Tang ...
  • iptables nat

    2016-05-16 13:58:46
    此篇主要讲述的是使用iptables配置NAT,所以这3种NAT的区别和应用场景就简单的说明一下   SNAT:源地址转换 目标地址不变,重新改写源地址,并在本机建立NAT表项,当数据返回时,根据NAT表将目的地址数据...
  • NAT技术详解

    2018-02-21 12:17:00
    1. IPv4协议和NAT的由来 今天,无数快乐的互联网用户在尽情享受Internet带来的乐趣。他们浏览新闻,搜索资料,下载软件,广交新朋,分享信息,甚至于足不出户获取一切日用所需。企业利用互联网发布信息,传递资料和...
  • NATNAT穿透介绍

    千次阅读 2013-12-06 13:42:24
    NATNAT穿透介绍 本文描述NAT和它带来的一些问题以及相应的解决方案。 NAT介绍 NAT(Network Address Translation)是一种机制,采用这种机制的设备通过改变一个包内的IP地址和端口,把一个域内的IP地址映射...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 24,069
精华内容 9,627
关键字:

最简单的nat转发