• 青石
    2019-03-19
    问题1:Linux的NAT时给予内核的连接跟踪模块实现,保留了源IP、源端口、目的IP、目的端口之间的关系,多个内网IP地址的端口相同,但是IP不同,再nf_conntrack中对应不同的记录,所以MASQUERADE可以正常工作。

    问题2:NAT方式所有流量都要经过NAT服务器,所以NAT服务器本身的软中断导致CPU负载、网络流量、文件句柄、端口号上限、nf_conntrack table full都可能是性能瓶颈。
    
     10
  • 我来也
    2019-02-25
    [D41打卡]
    在已有的项目经验中,还未涉及到过NAT.
    倒是本地的虚拟机环境下,或者路由器上,会看到nat相关选项.

    问题一:当多个内网 IP 地址的端口号相同时,MASQUERADE 还可以正常工作吗?
    我觉得是可以正常工作的,要不然就不会允许设置ip地址段了.😁[纯属猜测哈]
    在路由器上做端口映射时,一个外网端口只能对应一个内网的IP.
    但是反方向,nat在转换源地址时,应该会记录原来的连接信息吧.要不然收到包该给谁发呢.

    问题二:如果内网 IP 地址数量或请求数比较多,这种方式有没有什么隐患呢?
    根据之前的经验,在请求数过多时,会导致CPU软中断上升.
    再谷歌了下,有看到说:
    iptables的conntrack表满了导致访问网站很慢.[https://my.oschina.net/jean/blog/189935]
        ```kernel 用 ip_conntrack 模块来记录 iptables 网络包的状态,并保存到 table 里(这个 table 在内存里),如果网络状况繁忙,比如高连接,高并发连接等会导致逐步占用这个 table 可用空间。```

    优化Linux NAT网关[https://tech.youzan.com/linux_nat/]
        ```net.netfilter.nfconntrackbuckets 这个参数,默认有点小,连接数多了以后,势必造成“哈希冲突”增加,“哈希处理”性能下降。( 是这样吗?)```

    展开

    作者回复: 👍两个回答都是正确的,第二个还不完整,可以再考虑深入一点(提示:还有其他很多内核资源限制)

    
     5
  • 腾达
    2019-02-25
    大伙儿都掉队了吗?有深度的问题留言越来越少,有价值的问题回答也少了。

    作者回复: 嗯,有深度的留言还是前面多一些

    
     2
  • Darrykinger.com
    2019-09-06
    http://www.apelearn.com/study_v2/chapter16.html#id3 这个链接是我初次接触linux的时候学习的课程,对小白蛮友好
    
     1
  • wwj
    2019-02-28
    nat的三种类型有什么本质的区别、和链接追踪的联系有是什么

    作者回复: 主要是管理方式的区别,比如静态肯定比动态管理要简单的多;跟连接跟踪没有直接关系(只是Linux使用了连接跟踪)。

    
     1
  • ninuxer
    2019-02-27
    打卡day43
    工作场景没用到nat,基本都是基于4层或7层的反代
    针对第一个问题,是可以的,第二个问题不可以,我认为是有连接追踪表,文件数量,端口数量的限制

    作者回复: 嗯

    
     1
  • Maxwell
    2019-02-25
    vmware中虚拟机网络选择NAT模式后,IP地址经常变动,有什么方法解决么?

    作者回复: VM里面可以配置固定IP,或者也可以换其他模式

    
     1
  • HunterYuan
    2020-02-03
    对于问题1:可以工作,因为NAT转换是通过状态连接表的,状态连接表中会记录正向数据的状态的五元组和返现数据的五元组,通过查找此状态连接进行逆向转换(例如SNAT的反向转换),建立一一对应的关系。有了这些表示就可以进行完全转换,对于不同内网IP的相同端口数据包,进行MASQUERADE时,会随机选择一个出接口的IP,若此时不同内网IP访问的目的IP通过路由,都是从MASQUERADE设备的同一个口出去,那么他们做SNAT时会使用相同的IP,为了达到一一对应区别不同的内网IP,此时选择一个未被使用的端口进行SAPT,这样反向的数据访问相同的外网IP,通过不同目的端口,找到相应内网IP。
    对于问题2,若是请求数量比较多,对于问题一中需要进行SAPT的被占用端口数将是其瓶颈,还需要考虑状态连接的总数最大值,是否为瓶颈。
    对于两个问题,这是我的理解,若有错误,希望老师指正,不要因为我的错误回答,误导队友的理解。谢谢老师,不吝赐教。
    展开
    
    
  • Darrykinger.com
    2019-09-06
    以前在学习linux的时候,自己搭建过linux的下的nginx的负载均衡, 内网的处理后的结果转发,记得好想负载均衡和高可用,具体哪一个忘记了,工作的时候用过一次,将内网服务器处理请求后转发给那个可以上外网的服务器,然后返回给外网。。。本节有有好几个陌生的名词。。
    
    
  • Darrykinger.com
    2019-09-06
    1)iptalbes的三个表

    filter 这个表主要用于过滤包的,是系统预设的表,这个表也是阿铭用的最多的。内建三个链INPUT、OUTPUT以及FORWARD。INPUT作用于进入本机的包;OUTPUT作用于本机送出的包;FORWARD作用于那些跟本机无关的包。

    nat 主要用处是网络地址转换,也有三个链。PREROUTING 链的作用是在包刚刚到达防火墙时改变它的目的地址,如果需要的话。OUTPUT链改变本地产生的包的目的地址。POSTROUTING链在包就要离开防火墙之前改变其源地址。该表阿铭用的不多,但有时候会用到。

    mangle 这个表主要是用于给数据包打标记,然后根据标记去操作哪些包。这个表几乎不怎么用。除非你想成为一个高级网络工程师,否则你就没有必要花费很多心思在它上面。
    展开
    
    
  • 陳先森
    2019-04-29
    第一个问题是可以的,外网端口映射内网端口是一对多。就跟之前老师留言的一样,服务端对端口没有65535个端口限制但是客户端有。
    第二个问题会有隐患,请求数量多的时候会导致软路由服务器的资源和性能下降,甚至延时和超时都有可能以至于达到系统资源的瓶颈系统的软连接数达到瓶颈或者无法正常工作

    作者回复: 👍

    
    
  • Geek_96e358
    2019-04-13
    问题1:
    可以, MASQUERADE 主要用内部多个IP公用一个公网访问访问外部地址,发起连接的是本机的一个随机端口,并且是用在公网IP不固定情况下,比如拨号场景;
    问题2:
     会有性能问题,比如访问缓慢。客户端过多,并且连接过多,iptables conntrack表会满,并发生空间溢出
    
    
  • 如果
    2019-04-09
    DAY41,打卡
    
    
  • honnkyou
    2019-03-18
    "再来看 DNAT,显然,DNAT 需要在 nat 表的 PREROUTING 或者 OUTPUT 链中配置,其中, PREROUTING 链更常用一些(因为它还可以用于转发的包)。"
    DNAT不是转换到达包的目的地址吗?也可以在OUTPUT链中配置吗?

    作者回复: 嗯嗯,可以的,OUTPUT用于从本机发出的包

    
    
  • 曾经的十字镐
    2019-03-01
    我们有部分业务需要向外同步数据,但又必须保证内网服务器的安全,所以我就使用了nat网络,单纯知道外网ip是无法攻击的

    作者回复: 并不是这样的,通过NAT还是可以访问内部服务的,如果服务本身设计有问题,还是一样受到攻击

    
    
  • 加盐铁论
    2019-02-27
    打卡,加油💪!
    
    
  • 小庄.Jerry
    2019-02-27
    最近我们的一个客户,遇到问题2的问题了。该公司很多用户同时加入我们的会议系统,一般来说,客户会访问我们部署在当地数据中心的服务器,结果很多用户访问到我们数据美国数据中心的服务器了,导致糟糕的体验。
    我们的网络team给的解决方案:禁用了我们服务器的tcp_tw_recycle。
    看了man tcp的介绍,对于NAT网络中,要求禁掉tcp_tw_recycle。但是对于个中的原理还不是很明白,希望老师可以帮忙解释下

    作者回复: tcp_tw_recycle本身的实现就有问题,一定要禁止掉,并且在新的内核(4.1以后)里也被直接删除了

    
    
  • xfan
    2019-02-27
    终于搞明白了iptables原理和写法

    作者回复: 👍

    
    
  • 唯美
    2019-02-26
    项目中还没有用到,学习中
    
    
  • 李逍遥
    2019-02-26
    有个疑问, 看了访问baidu.com的例子,发包和收报都是需要NAT的,那是不是只配置SNAT或DNAT,就不能正常访问外网或被访问了呢?

    作者回复: 不是的,内核有连接跟踪,知道每个请求的来源和目的

    
    
我们在线,来聊聊吧