V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
MinonHeart
V2EX  ›  问与答

网络拓扑及两层 NAT 的疑问

  •  
  •   MinonHeart · 2023-01-14 11:13:16 +08:00 · 1936 次点击
    这是一个创建于 439 天前的主题,其中的信息可能已经有所发展或是发生改变。

    网络拓扑

    弱电箱
    |--------------------------------------------|
    |                                            |                       
    |   Modem1 ----> Router1(PPPoE+DHCP+NAT) ----|---> AP1 ----> Device1
    |                   |                        |
    |-------------------|------------------------|
                        |
                        |---------------> Device2
    

    Modem1 和 Router1 都在弱电箱中,部分终端设备会通过墙内线连接 Router1 ,因此 Modem1 和 Router1 需要保持不变。

    网络代理

    现在把 AP1 设备替换为网络代理(带大家都懂的一些功能,是个多网口设备)

    方案及问题

    方案 1:把 AP1 替换为无线路由设备 R2

    1. Device2 无法通过 R2 获得代理功能
    2. Device1 会经过两层 NAT

    方案 2:把 AP1 替换为透明网关设备 G2

    1. Device1 和 Device2 都会经过两层 NAT

    其他

    方案 1 和 2 都会有两层 NAT 的问题,怎么搞?或者有其他更好的方案吗?

    22 条回复    2023-01-16 10:09:51 +08:00
    cpstar
        1
    cpstar  
       2023-01-14 11:32:29 +08:00
    你的 AP 不就是 AP ,又不是无线路由器,现状也不存在二次 NAT 的问题啊。

    现状有啥问题?
    intoext
        2
    intoext  
       2023-01-14 11:45:31 +08:00
    两层 NAT 算啥,几层 NAT 都不影响常规使用。 再说本来运营商那边还有一次 NAT 呢? 难道你路由器上 DHCP 到的地址是真 IP ?
    MinonHeart
        3
    MinonHeart  
    OP
       2023-01-14 11:50:43 +08:00
    @cpstar 现在的 AP 没有代理功能
    MinonHeart
        4
    MinonHeart  
    OP
       2023-01-14 11:51:41 +08:00
    @intoext 是的。不过 NAT 能少一层是一层
    xxfye
        5
    xxfye  
       2023-01-14 14:20:03 +08:00
    @MinonHeart 你的网络代理必然是网关,可以不做 NAT ,也要多一次转发。旁路由了解一下。
    cpstar
        6
    cpstar  
       2023-01-14 14:49:31 +08:00
    AP 就是 AP ,代理的功能那也是应该在 router1 上实现的,如果不是全局代理,那就上旁路由,dhcp 按 mac 分配适当的网关地址。最简单的扁平化,不应该增加更多层次的设备。
    smallfount
        7
    smallfount  
       2023-01-14 14:55:01 +08:00   ❤️ 1
    ....又没人规定你挂个路由就要 NAT 了...直接转发不就好了。。。
    sealinfree
        8
    sealinfree  
       2023-01-14 18:26:37 +08:00
    不知道你用的什么 router ,是否有 bridge 功能,做个桥接二层全部互通,可以成为单层 Nat
    garibellee
        9
    garibellee  
       2023-01-14 20:06:58 +08:00
    dns 分流
    MinonHeart
        10
    MinonHeart  
    OP
       2023-01-14 22:06:52 +08:00
    @xxfye
    @smallfount
    指 IP 转发嘛( echo '1' > /proc/sys/net/ipv4/ip_forward )?
    代理工具默认开启了转发,我再改会有冲突吧。
    MinonHeart
        11
    MinonHeart  
    OP
       2023-01-14 22:08:11 +08:00
    @cpstar Router1 不能装代理。dhcp 按 mac 分配适当的网关地址,这个有什么资料可以参考下嘛
    MinonHeart
        12
    MinonHeart  
    OP
       2023-01-14 22:10:31 +08:00
    @sealinfree Router 和替换 AP 的设备桥接?这样拨号是不是变成 AP 位置的设备了?
    MinonHeart
        13
    MinonHeart  
    OP
       2023-01-14 22:10:56 +08:00
    @garibellee 有资料可以参考下嘛
    smallfount
        14
    smallfount  
       2023-01-14 22:40:06 +08:00   ❤️ 1
    @MinonHeart 你完全没理解网络 2 层转发的做法。。。
    你这个拓扑我啥都不用动。。就单独挂一个旁路由或者虚拟机,IP 跟你所有内网 IP 同一段,网关配置为你 router1.
    剩下的就是把需要 FQ 的网关都指向旁路由就解决所有问题了。。。
    完全没任何操作难点。。。就一个纯 2 层的转发而已。。。至于你 FQ 怎么牵引流量那是 3 层的事情了。。
    跟 NAT 一毛线关系的没有。。因为根本用不上
    jacy
        15
    jacy  
       2023-01-14 23:24:27 +08:00   ❤️ 1
    AP1 设备替换为网络代理,这个多网口设备的 lan 桥接到 Router1 ,这个多网口设备的 wan 口 ip 做网关和 DNS (旁路由)
    sealinfree
        16
    sealinfree  
       2023-01-15 00:57:17 +08:00   ❤️ 1
    @MinonHeart 还是由 Router 负责拨号,所有内网端口加入到同一个 bridge 中,可启用生成树协议避免打环,但是建议不用。这样 AP1 和 Device2 都在同一个二层内,再把 Device1 连接 AP1 的端口在 AP1 上加入 bridge 中,三个设备都处于同一个二层内,自然就不需要二次 Nat 了,可以直接通过 arp 请求互通了
    nothingistrue
        17
    nothingistrue  
       2023-01-15 10:08:14 +08:00   ❤️ 1
    无线 AP 在第二层数据链路层;所有代理,最低只到第四层传输层; NAT 比较复杂,这是脱离 OSI 7 层模型之外的,他是解决 IP 问题的,应当属于第三层传输层,但因为不是标准实现实际上会影响很多层。路由器也很复杂,它是物理层,但它是不是单一物理层设备,它是第三层 IP 协议的物理层,它也是第二层无线 AP 协议、LAN 协议的物理层,它也是直接物理层的交换机 /集线器。

    你的图,重新画吧,看你下面的回复,实际场景,跟你的图,是驴头不对马嘴。你现在是不是有 Modem1 、Router1 (只有 LAN ,没开代理),Router2 (无线路由器,跟 Router1 桥接,也就是你现在图上的 AP1 ),想总体加上代理。这玩意其实没那么复杂,只动 Router1 就行了,要么直接动 Router1 为其加上代理功能,要么给 Router1 加个树莓派旁路由(这时候 Router1 就降格成交换机了,路由功能都交给旁路有处理了)让旁路由搞代理。

    不过,最后还是建议一下,透明代理有两个必要条件,Linux 基本操作能力,基本的网络编程能力,没这两项知识就不要搞了。
    MinonHeart
        18
    MinonHeart  
    OP
       2023-01-15 12:48:49 +08:00
    @smallfount
    @jacy
    @sealinfree
    谢谢老哥们,搞定了,不过 DNS 还是使用 Router1 。这样全网流量都会经过代理设备,有没有方法只让部分设备经过(比如通过 MAC Addr 过滤下)?

    另外配置完,路由第一跳始终超时,正常吗?

    ```
    > tracert baidu.com

    通过最多 30 个跃点跟踪
    baidu.com [39.156.66.10] 的路由:

    1 * * * 请求超时。
    2 1 ms 1 ms 1 ms 192.168.1.1
    3 6 ms 4 ms 6 ms 100.81.0.1
    ```

    @nothingistrue 谢谢,讲的很明白
    systemcall
        19
    systemcall  
       2023-01-15 18:21:51 +08:00
    Router1 能不能修改路由表?能不能修改自身的上游 DNS 服务器?
    如果可以的话,就把 Router1 加几条路由规则,让 192.18.0.0/16 的流量路由到 AP1 ,上游 DNS 也指向 AP1
    AP1 上开 Fake-ip 模式的代理,DNS 的话就要用可以实现分流的 DNS 服务器,有一些 DNS 软件是可以实现的,OpenClash 和 Clash 本身最近也支持了类似的功能,不过很弱。Clash 的话,可以通过 Fake-IP Filter 来做
    这样的话,理想情况下可以实现国内网站直接通过 Router1 建立连接,IPv4 只经过一次 NAT ,IPv6 直连;国外网站通过解析到 Fake-IP 来与 AP1 建立连接,节点支持的情况下是可以使用 IPv6 的,如果要实现对纯 IP 的连接进行代理要手写路由表
    garibellee
        20
    garibellee  
       2023-01-15 21:13:41 +08:00
    @MinonHeart 内网得有环境搭建 dns 服务器 我用的是 pve-debain mosdons+v2ray 实现分流,https://github.com/IrineSistiana/mosdns ,抄我师傅成熟方案哈哈
    garibellee
        21
    garibellee  
       2023-01-15 21:14:37 +08:00
    @garibellee 需要科学的直接改 dns 就行
    SgtPepper
        22
    SgtPepper  
       2023-01-16 10:09:51 +08:00
    router1 改成 R2 就行了 router1 不要了
    你 R2 既然都能代理,那 DHCP NAT PPPOE 应当不在话下
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2543 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 293ms · UTC 15:58 · PVG 23:58 · LAX 08:58 · JFK 11:58
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.