网络拓扑及两层 NAT 的疑问

2023-01-14 11:13:16 +08:00
 MinonHeart

网络拓扑

弱电箱
|--------------------------------------------|
|                                            |                       
|   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 的问题,怎么搞?或者有其他更好的方案吗?

2336 次点击
所在节点    问与答
22 条回复
cpstar
2023-01-14 11:32:29 +08:00
你的 AP 不就是 AP ,又不是无线路由器,现状也不存在二次 NAT 的问题啊。

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

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

不过,最后还是建议一下,透明代理有两个必要条件,Linux 基本操作能力,基本的网络编程能力,没这两项知识就不要搞了。
MinonHeart
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
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
2023-01-15 21:13:41 +08:00
@MinonHeart 内网得有环境搭建 dns 服务器 我用的是 pve-debain mosdons+v2ray 实现分流,https://github.com/IrineSistiana/mosdns ,抄我师傅成熟方案哈哈

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/908863

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX