我有以下三个设备:
ikuai 10.0.0.1 主软路由
openwrt 10.0.0.222 旁路由 网关指向 10.0.0.1
dietpi ( Linux 主机) ip:10.0.0.6 网关指向 10.0.0.222
我在 ikuai 上面做了动态解析有公网 ip:xxx.cn
dietpi 的 520 端口有一个服务,我通过 ikuai 映射到 520 外网端口,但是网关指向 op ,数据经过 openwrt ,我之前在 op 自定义防火墙输入了以下规则:
iptables -t nat -I PREROUTING -p tcp -m multiport --sports 520 -j RETURN
之前是生效的,刚用没多久就访问不了显示不可达。
但是我将 dietpi 重新指向 10.0.0.1 ikuai 是正常的。
请问访问旁路由下设备的正确的映射方式应该是怎样的?
请教下各位
1
RayGZJ OP 其中 op 使用的版本为:
ImmortalWrt 18.06-k5.4-SNAPSHOT r12339-8b50c1df21 (2023-05-03) / LuCI openwrt-18.06-k5.4 branch (git-22.312.35760-7afcfb2) |
2
tty228 2023-05-26 11:59:43 +08:00
https://github.com/tty228/luci-app-serverchan/blob/d04c70632e251050b65ec6b20c040ff3e6fa5cf9/root/usr/share/serverchan/serverchan#L1323
除了转发,还需要重写源 IP ,不然会被大多数防火墙当做无效数据包丢弃 iptables -t nat -I POSTROUTING -p tcp -d 10.0.0.6 --dport 520 -j SNAT --to-source 10.0.0.222 |
3
tty228 2023-05-26 12:24:49 +08:00
吃完饭重新看了一下帖子,好像场景和我想象中不一样,不确定上面的规则能不能用
手上的 OpenWrt 都升级 nftables 了没法测试 →_→ |
4
tty228 2023-05-26 12:29:53 +08:00
如果上面的规则不能用的话,大概是要在主路由上添加规则:
iptables -t nat -A POSTROUTING -p tcp -d 10.0.0.6 --dport 520 -j SNAT --to-source 10.0.0.1 不过爱快没用过不知道能不能设置相关的选项,不嫌麻烦的话,可以转发 520 端口到 OpenWrt ,再由 OpenWrt 转发到 Linux 主机 |
5
RayGZJ OP |
6
RayGZJ OP |
7
putaosi 2023-05-26 13:51:27 +08:00 via iPhone
用我的方案,放弃旁路由用法
|
8
mbooyn 2023-05-26 13:55:50 +08:00
openwrt 做旁路由时,如果需要科学的主机将网关、DNS 指向 Openwrt 旁路由后直接在主路由将需要转发的端口设置为主机无法转发成功,需要先主路由转发到旁路由,旁路由再二次端口转发至主机
|
9
Rysle 2023-05-26 14:22:28 +08:00 via Android
你这些设备都在同一个局域网的话,主路由应该能和网段内的任意设备互访的,不管这些设备的网关设置成什么。因为这时候是通过 ARP 找到对方,而不是网关。
|
10
sexoutsex2011 2023-05-26 14:48:52 +08:00
@Rysle +1
我也这个拓扑,端口映射后,外网访问内网设备没问题的 |
11
RayGZJ OP |
13
sexoutsex2011 2023-05-28 22:33:08 +08:00 via iPhone
@RayGZJ 有富强的,不需要
|
14
RayGZJ OP @sexoutsex2011 你是什么版本的 op
|
15
thereone 2023-06-01 23:33:08 +08:00
最好的方法是旁路由不要做 NAT ,你上面的问题根因很简单端口映射没做全
外网访问-->爱快:520--旁路由(NAT)--设备:520 这里看对于爱快是不知道你的设备的,哪怕是在同一个局域网。 假设你的爱快直接映射设备的 520 端口,你看路径外部进来是 爱快->设备:520 内部路径 设备:520->旁路由 IP(NAT)旁路由 IP-爱快 看到没有 ip 连接不一致导致你的 TCP 连接建立不起来。原因都在这里。 正确方式旁路由(NAT)模式 爱快映射:520-->旁路由:520-->旁路由:520-->映射设备 IP:520 爱快端口映射 旁路由端口映射 正确的是有两次端口映射的过程的。 更好的旁路由方法,最好关闭旁路由的防火墙删除所有区域,防火墙选项全部放行 这样你的旁路由就真的只做路由功能,唯一会变的就是经过了旁路由你的原始数据的源 mac 地址会变成旁路由的 mac 地址 IP 地址不会变动所以对于爱快来说设备地址是可见的。 于是上面的端口映射就可以按照正常的思路做 在爱快上面直接映射设备的地址就行了 |
16
thereone 2023-06-01 23:38:56 +08:00
@Rysle 互访是可以出爱快就不是了,爱快访问设备可以 arp 局域网内的话。当外部访问进来可以直接找到设备 问题是设备回应的数据包在旁路由会把 设备的 ip 转换成旁路由的 ip 这样源 ip 地址变了爱快能让 tcp 建立连接?爱快找 A A 把东西给 B B 在给爱快,爱快表示不是 A 给的我不收 于是连接就建立不起来了。
|
17
mohumohu 2023-06-03 02:23:31 +08:00
旁路由做 nat 又多了一层 nat 确实不是很好的办法。如果是为了科学,可以用这个类似的方案,不需要改网关: https://github.com/kkkgo/PaoPaoGateWay
|
18
RayGZJ OP @thereone #15 感谢回复,防火墙规则每次都要加不同端口,按照你的说法可否直接在 op 设置端口全映射( fullcone )并删除防火墙所有规则?
另请教:旁路由可否这样理解,所有在局域网内网关指向旁路由的,都经过 op 的 NAT 转换,而 ikuai 并不能直接访问旁路由下的设备。例如 ikuai 主网 ip 为 10.0.0.1 ,旁路由 10.0.0.6 。 同局域网内,设备 A 网关指向 ikuai ,设备 B 网关指向 op ,不考虑外网访问的前提下,通过局域网内地址 10.0.0.x ,设备 A 可否访问设备 B 在 op 未设置防火墙规则的端口? |