![无法使用域名访问服务器,收到 TCP 标志 RST](https://linux22.com/image/550202/%E6%97%A0%E6%B3%95%E4%BD%BF%E7%94%A8%E5%9F%9F%E5%90%8D%E8%AE%BF%E9%97%AE%E6%9C%8D%E5%8A%A1%E5%99%A8%EF%BC%8C%E6%94%B6%E5%88%B0%20TCP%20%E6%A0%87%E5%BF%97%20RST.png)
我有一个 http 服务器为互联网提供服务,所以我在路由器中配置了端口转发。用户访问公司外的服务器(URL:_http://mydomain.com:80/)没问题。但如果用户在公司内部,使用上述 URL 访问服务器是行不通的。访问服务器的唯一方法是使用内部 IP,例如 _http://192.168.1.213:80/。
网络地图图片:http://i56.tinypic.com/20i8dmr.jpg
我在telnet mydomin.com 80时使用wireshark捕获tcp数据包,结果是无法连接到服务器。
wireshark捕获的数据包图片:http://i51.tinypic.com/zsl8ox.png
wireshark抓包中2-3表示域名解析成功。4表示我的电脑(192.168.1.37)使用服务器外层ip(116.232.154.50)访问服务器。7表示端口转发成功,回复ip为服务器内层ip(192.168.1.213)。8表示连接被重置(TCP Flag RST)。
有人知道这是什么原因吗?
答案1
您的端口转发很可能只监听公共接口(互联网端)上的请求。您可以根据路由器的品牌配置监听两端。
因此,我们需要更多信息来进一步帮助您。
答案2
解决此问题的常用方法是使用 split-dns。您需要配置 DNS 服务器,使其根据查询来源为服务器名称返回不同的 IP 地址。具体如何操作取决于您使用的 DNS 服务器,但这是一种常见设置。
因此在你的网络内部:
服务器名称.company.com -> 192.68.1.213
但对于外部查询:
服务器名称.company.com -> 116.232.154.50