【发布时间】:2014-08-13 18:45:18
【问题描述】:
我一直在努力解决我认为是网络问题的问题,但没有取得太大进展。我想看看是否有人对解决方案或可能的步骤有一些想法,可以为我提供更多信息以达成解决方案。
环境 我有一个移动 Web 应用程序(angular.js),它在连接到弹簧引导后端(非集群单实例开发盒)的条形码扫描枪(intermec ck71)上的 html 5 浏览器(专有浏览器)上运行。我编写了移动 web 应用程序,但已经承担了 spring boot 后端的所有权(第一次使用 springboot)。我在一个公司办公室,我不拥有网络,所以我不完全了解事物的布局。
问题 我无法让移动网络应用程序通过 https 连接到办公室无线上的我们的开发盒
已采取的步骤 由于开发已经完成,我们最近将我们的团队开发框切换到了 https。在 https 之前,移动应用程序已正确加载,但现在仅在移动浏览器上显示一个旋转的轮子,然后在大约一分钟后超时。
我做的第一步是在本地加载运行 https 的服务器,并检查我是否可以让扫描枪连接(确实如此)。
然后我尝试在我的台式计算机上从开发盒加载移动网络应用程序(这也有效)。
因此,问题似乎与使用 https 的办公室无线网络上的移动枪有关。我让网络团队确保端口 443 和端口 8443 是打开的(他们看到它们被阻止并为我打开)。
我重试了连接,但仍然没有成功。我在服务器上运行了一个 tcpdump,并在失败的调用中看到了以下日志
从这个日志看来,服务器 (172.18.222.121) 正在通过发送数据包 12 (FIN, ACK) 来关闭连接
我在服务器的 tomcat 实例中添加了一些日志记录并看到以下内容
[pid 22505] accept(41, {sa_family=AF_INET, sin_port=htons(1037), sin_addr=inet_addr("172.31.12.157")}, [16]) = 46
[pid 22505] setsockopt(46, SOL_SOCKET, SO_LINGER, {onoff=0, linger=0}, 8) = 0
[pid 22505] setsockopt(46, SOL_TCP, TCP_NODELAY, [1], 4) = 0
但我仍然没有看到任何关于主动告诉 conncetion 关闭的信息。我的下一个想法是该盒子可能将 IP 范围列入白名单/黑名单,但根据维护服务器的团队,没有 IP 规则、防火墙或任何会干扰盒子上网络流量的东西。
所以我把这个带到网络团队来展示流量,他们告诉我这不是网络问题,因为初始流量正在通过,真正的问题是 FIN 数据包。我把这些信息交给了服务器团队,他们告诉我,他们在盒子上没有任何东西会导致发送 FIN 数据包,这很可能是网络问题。我认为这很可能是服务器问题,因为这是我可以访问的内容,其他所有人都认为该部分运行正常。我决定创建一个新的 SSL 证书,因为我在连接时在桌面浏览器上收到了不受信任的消息。我创建了这个新证书,然后将其添加到移动扫描枪上的受信任根目录中。我试图在枪上再次连接,但没有效果。
接下来,我联系了移动枪供应商,看看是否有任何关于枪的信息可供我进行故障排除。在与他们进行了一些故障排除后,他们说他们无法在他们这边重现,因为它在我这边工作,除了在那个网络上连接,这可能是一个网络问题。
我回到服务器并在 tomcat 阀门上添加了日志记录,以查看是否可以获取任何其他信息。当我查看阀门生成的日志时,我会获得任何成功连接的条目,但是当我无法连接时,什么都没有显示。我的连接器看起来像这样只是为了完整性。
连接器代码:
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreType="PKCS12"
keystoreFile="/home/devadmin/.ssh/keystore.p12"
keystorePass="password" />
还有阀门:
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log." suffix=".txt"
pattern="%a %H %p %U %h %l %u %t "%r" %s %b %{xxx}i" />
结论 所以基本上我可以让应用程序加载到除了这个网络之外的任何地方,这让我相信它与网络相关。然而,网络团队表示它与网络无关,因为正在传输初始数据包,并且问题在于服务器发送的 FIN 数据包。我已经用尽了我对环境的了解......毕竟我是一名移动开发人员:) 我仍然觉得它与网络相关,但没有任何东西可以说明为什么要发送 FIN 数据包。关于要检查的事情或可能导致问题的任何想法?
【问题讨论】:
标签: spring tomcat networking ssl spring-boot