技术解析

Linux 问题请教。局域网内多个不同 ip+相同端口都指向了同一个服务
0
2021-07-06 08:22:35
idczone

局域网( 10.10.10.0/24 )内

  • 软路由是中心网关,ip 是 10.10.10.1,有 qbittorrent 服务,监听在 8080 端口。
  • 一台旧的 thinkpad 笔记本跑了一些服务。ip 是 10.10.10.3,也有 qbittorrent 服务,监听在 8080 端口。
  • fx N1,ip 是 10.10.10.4,通过 docker 安装了 phpmyadmin 。现在这个容器在宿主机上的监听端口也是 8080 。(没想到没想到,fx 是违 jin 词,打出来提示“抱歉,能不能不要在这里讨论这个”)

问题来了,我访问 10.10.10.1:8080 、10.10.10.3:8080 、10.10.10.4:8080 都指向了 10.10.10.1:8080 这个页面,登录进去也是软路由上 qbit 做种的数据???这是为什么啊……

后来我把 thinkpad 机器上的 qbittorrent 监听端口改成了 8082,访问 10.10.10.3:8082 终于成功(是这台机器上的做种数据了)。但是访问 10.10.10.3:8080 依然成功,且指向 10.10.10.1:8080

诡异的事情,求助大佬们


  • 软路由( 10.10.10.1 )上
[email protected]:~# lsof -i:8080
COMMAND    PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
qbittorre 9152 ptpt   54u  IPv6  21614      0t0  TCP *:8080 (LISTEN)


[email protected]:~# netstat -anp |grep 8080
tcp        0      0 :::8080                 :::*                    LISTEN      9152/qbittorrent-no
tcp        0      0 ::ffff:10.10.10.1:8080  ::ffff:10.10.10.168:56367 ESTABLISHED 9152/qbittorrent-no
tcp        0      0 ::ffff:10.10.10.1:8080  ::ffff:10.10.10.168:56363 TIME_WAIT   -
tcp        0      0 ::ffff:10.10.10.1:8080  ::ffff:10.10.10.168:56374 ESTABLISHED 9152/qbittorrent-no
tcp        0      0 ::ffff:10.10.10.1:8080  ::ffff:10.10.10.168:56330 ESTABLISHED 9152/qbittorrent-no
tcp        0      0 ::ffff:10.10.10.1:8080  ::ffff:10.10.10.168:56355 ESTABLISHED 9152/qbittorrent-no
tcp        0      0 ::ffff:10.10.10.1:8080  ::ffff:10.10.10.168:56361 TIME_WAIT   -
tcp        0      0 ::ffff:10.10.10.1:8080  ::ffff:10.10.10.168:56359 TIME_WAIT   -

  • thinkpad ( 10.10.10.3 )上
[email protected]:~# lsof -i:8080

[email protected]:~# lsof -i:8082
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
qbittorre 864   dk   26u  IPv6  25624      0t0  TCP *:8082 (LISTEN)

[email protected]:~# netstat -anp |grep 8080

[email protected]:~# netstat -anp |grep 8082
tcp6       0      0 :::8082                 :::*                    LISTEN      864/qbittorrent-nox

  • fx N1 ( 10.10.10.4 )上
[email protected]:/# lsof -i:8080
COMMAND    PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
docker-pr 5867 root    4u  IPv6 885545      0t0  TCP *:http-alt (LISTEN)

[email protected]:/# netstat -anp |grep 8080
tcp6       0      0 :::8080                 :::*                    LISTEN      5867/docker-proxy

查了一下 nginx 和 dnsmasq 的配置,也没有发现线索。
其他的话,想不出来运行的程序中可能还有造成这个情况的了

感觉问题在软路由上,等大佬

谢谢大佬回复。
等我晚上回去把 nginx 的配置和 dnsmasq 的配置贴上来。

* 一般情况下以太网中同网段通信的时候流量是不经过路由器的。比如说 10.10.10.3 要发数据包给 10.10.10.4,那么 3 先会发送 ARP 查询的广播包来查询 IP 10.10.10.4 对应的 MAC 地址,然后直接通过 MAC 地址通信(这里描述不是很严谨,数据包只是通过路由器转发,而不会被路由)。(有误请纠正)
* 检查一下软路由的 iptables 。
* 在软路由上用 tcpdump 抓包看看。

检查软路由 firewall 配置,感觉上是你给.1 添加过端口转发规则并且误把 LAN zone 包含进来了

感谢指点
关于第一点,应该是这样。计算机网络中学到的就是,10.10.10.0/24 和 10.10.11.0/24 是两个不同的 network,不同的网络才会使路由器的路由功能参与到其中工作。而同网段的设备间通过 arp 地址解析协议,ip 和 mac 地址之间进行转换,只会用到路由器的 package 转发功能。
第二点和第三点不是很会用。tcpdump 用过一次 哈哈。总之非常醍醐灌顶的回复。感谢
---
就第一点,
我现在 macbook ( 10.10.10.168 ) 访问 N1 的 phpmyadmin 服务( 10.10.10.4:8080 ),首先问局域网内谁拥有 10.10.10.4 这个 ip 地址,然后就找对应 mac 地址……难道就找错了人?
我忘了提及一点,10.10.10.3 和 10.10.10.4 这两台机器在 openwrt 中设置了静态地址绑定。
```
cat /etc/config/dhcp
config dnsmasq
option domainneeded '1'
option localise_queries '1'
option rebind_protection '1'
option rebind_localhost '1'
option local '/lan/'
option domain 'lan'
option expandhosts '1'
option authoritative '1'
option readethers '1'
option leasefile '/tmp/dhcp.leases'
option nonwildcard '1'
option localservice '1'
option filter_aaaa '1'
option port '53'
list server '127.0.0.1/> option resolvfile '/tmp/resolv.conf.auto'
config dhcp 'lan'
option interface 'lan'
option start '100'
option limit '150'
option leasetime '12h'
option ra_slaac '1'
list ra_flags 'managed-config'
list ra_flags 'other-config'
config dhcp 'wan'
option interface 'wan'
option ignore '1'
config odhcpd 'odhcpd'
option maindhcp '0'
option leasefile '/tmp/hosts/odhcpd'
option leasetrigger '/usr/sbin/odhcpd-update'
option loglevel '4'
config srvhost
option srv '_vlmcs._tcp'
option target 'dkRouter'
option port '1688'
option class '0'
option weight '100'
config host
option name 't400'
option dns '1'
option mac '00:1c:25:a2:54:c6'
option ip '10.10.10.3'
option leasetime 'infinite'
```

config host
option name 't400'
option dns '1'
option mac '00:1c:25:a2:54:c6'
option ip '10.10.10.3'
option leasetime 'infinite'
可以看到 mac 地址 00:1c:25:a2:54:c6 和 ip 地址 10.10.10.3 做了永久绑定,leasetime 是 infinite 。
fx n1 同理,也做了绑定

又有另外一个现象存在。thinkpad 和 n1 上对应服务我换了一个端口(比如从 8080 换成 8082 )就直接可以访问了。就 8080 有这个现象

很明显,大概率就是软路由上的 iptables 配置了转发规则,把目的端口为 8080 的所有数据包都转发给了 10.10.10.1,直接查软路由上 iptables 的配置,尤其是所有表的 FORWARD 链

刚刚远程访问了下家里 openwrt 软路由,检查了下 firewall 应该没有相关配置。端口转发也是空的
![20210702174534.png]( https://cdn.jsdelivr.net/gh/hellodk34/[email&/>![20210702174619.png]( https://cdn.jsdelivr.net/gh/hellodk34/[email&/>![20210702174654.png]( https://cdn.jsdelivr.net/gh/hellodk34/[email&/>![20210702174711.png]( https://cdn.jsdelivr.net/gh/hellodk34/[email protected]/img/20210702174711.png)


很惊喜,防火墙页面搜到了这两条
![20210702175120.png]( https://cdn.jsdelivr.net/gh/hellodk34/[email&/>![20210702175140.png]( https://cdn.jsdelivr.net/gh/hellodk34/[email protected]/img/20210702175140.png)

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服