我正在尝试从 LAN 外部连接到 SQL Server,因此我在防火墙中打开了端口 1433(默认 SQL Server 端口)。在服务器端,我正在使用 Wireshark 进行监听,我可以从 ip X 监听 ping(通过 icmp 或 ip 地址过滤),但无法监听 1433 或其他端口上的 telnet(通过 ip 或 tcp / 1433 过滤)。网络管理员也无法通过防火墙看到我的 tcp 流量。
谁能帮我?
谢谢。
答案1
(第二次编辑:如果服务器 LAN 路由器端的网络管理员看不到任何流向路由器的流量,那么显然流量在其他地方被阻止了:可能在客户端的 LAN 中(您的客户端是否也在 NAT 后面?)或者介于两者之间的任何地方。无论如何,我认为 VPN 隧道是解决您的问题的最佳方法)
(编辑:请记住,向互联网开放数据库的端口通常不是最好的策略,最好建立 VPN 或至少过滤端口以仅允许访问它的 IP,例如您的网络服务器的 IP)
你是怎么绑定端口的?不是打开的问题,而是将路由器的入站连接绑定到端口X(例如1433),绑定到服务器局域网IP的端口1433。
此外,中间网络也有可能在流量到达路由器之前就将其阻塞。尝试将路由器中的连接端口更改为 80(如果可用)或任何其他通常不会被阻塞的端口。
您的流量被阻止的其他可能原因可能是流量被阻止(流量可能在任何/所有端口受到协议限制,也请检查)在 LAN 的路由器中或在 LAN 外的客户端和路由器之间的任何地方,在这种情况下没有太多可做的事情,但您仍然可以设置 VPN 隧道来模拟本地连接,具体取决于您的路由器对它的支持(或者您也可以在服务器上进行设置:检查http://openvpn.net/)。
还要检查服务器是否阻止来自路由器 IP 地址的连接(有时会发生这种情况,但我认为您应该能够在 wireshark 上看到这一点)
还http://progrium.com/localtunnel/提供免费且非常容易设置的服务,通过随机生成的子域链接将您的服务器临时暴露给互联网,这似乎不太安全,但仍然比在没有过滤的情况下打开/重定向路由器中的端口更安全......
答案2
这可能是一个完全不同的问题,但今天我发现,也许您没有正确配置 my.cnf mysql 配置文件,以将 mysqld 服务器绑定到服务器的 LAN ip 地址,而不是本地环回地址,这是默认设置。您的 my.cnf 文件(通常位于 /etc 或 /etc/mysql 或 /var/mysql)应如下所示:
[mysqld]
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 1433
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
language = /usr/share/mysql/English
bind-address = 192.168.1.21 #this is the server's LAN ip address!!
...
.....
.......
希望这对您有所帮助,以防您仍然无法解决问题。
答案3
经过一些测试后,我意识到数据包在我们的防火墙和目的地之间丢失了,因为大学源网络阻止了端口 1433 的流量。
谢谢!