这是我的设置(无论如何,相关部分):
我已为所有相关端口设置了端口转发规则(在 Linksys 中),并且我已多次重启该路由器,每次都希望这能成为让它正常工作的魔法。我尝试删除端口转发规则,然后重新添加。仍然不行。
从笔记本电脑上,我可以通过端口 :80 和 :8080 访问 NAS(QNAP)以及 Windows 7 机器上的反恐精英服务器。所以我知道这些转发规则有效(更重要的是,客户端桥接的 dd-wrt 不会干扰它们)。
我可以通过以下方式访问 MySQL 服务器:
- 通过 NAS 上运行的 phpMyAdmin 对用户进行授权
- 通过 Windows 7 计算机上的本地客户端对用户进行授权
尽管我已将 3306 转发到 192.168.1.101(并且我已多次检查服务器的配置端口;它是 3306),但我无法从笔记本电脑访问 MySQL 服务器。尝试通过以下方式连接时似乎超时:
mysql -h 192.168.2.103 -u gnucash_admin
当我尝试时,出现 2003 错误:
mysql -h 192.168.2.103
nmap -sT 192.168.2.103
根本没有返回 3306 的任何结果。
附加信息:
主办方在笔记本电脑上:
192.168.2.103 主页.假域名.loc
主办方在 Windows 7 上:
192.168.1.101 主页.假域名.loc
注意:我没有实际的域名或任何名称服务器、LDAP 等。所有操作均通过 hosts 文件完成。尝试上述操作时,我已尝试通过 IP 和名称进行操作。
更新
从笔记本电脑,我无法通过以下方式连接:
telnet 192.168.2.103 3306
我能够通过 ssh 端口转发(通过隧道连接到 192.168.1.x 子网上的另一台机器)从笔记本电脑登录到 mysql db。
更新
因此,我在 NAS 和路由器之间连接了一个集线器,并将我的 Raspberry Pi 连接到集线器(因为在 RPi 上完成所有操作时,一切都会更酷)。然后我通过 ssh 进入 RPi 运行:
tcpdump -nS dst port 3306
我可以看到其他流量流向数据库,但当我运行时(从笔记本电脑):
mysql -h 192.168.2.103 -u gnucash_admin -p
我在 RPi 上看不到任何东西。因此,我重新运行了 nmap 扫描(nmap -sT -p3306 192.168.2.103
),这次运行了 tcpdump,同样,我在 RPi 上什么也没看到。
因此,问题似乎变成了:为什么端口 3306 被过滤(转发规则已经设置),而其他流量却被正确转发?
我注意到的另一个奇怪之处是,我在 tcpdump 中看到的其他数据库流量(目标端口 3306)的源端口为 51883。我不是 TCP 专家,所以这对我来说似乎很奇怪。源端口与此问题有关系吗?
有人看到我遗漏了什么吗?
答案1
因此,在放弃了这个之后(我最终创建了一个脚本来启动 ssh 隧道,启动程序,然后在程序结束时关闭隧道),今晚我在我的路由器上发现了问题。
我很沮丧,因为没有明显的理由说明为什么 3306 不能正确转发。原因是我已将其转发到其他地方。我的网络相当复杂(只显示了一小部分),并且我通过端口转发公开了许多内部服务。有线 Linksys 只有几个用于转发规则的插槽,因此为了解决这个问题,我转发了范围。IMAP 和 Glassfish 在同一台服务器上,因此我将 143-4848 转发到他们的服务器,但 MySQL(3306)在另一台服务器上。<拍额头>