IPV6開啟狀態下,tomcat監聽IPV4埠
今天被人問了一個“奇怪”的問題,說本地服務開啟,自己能訪問,別人訪問不了,遇到這種問題,一般是防火牆規則導致的,所以我先建議關閉了防火牆,結果還是不能正常訪問,於是又想起了mysql在開啟IPV6的時候,如果想監聽IPV4埠需要在配置檔案中單獨配置,問題終於解決。
第一,檢視本地的監聽【windows下】:
C:\Users\Long80A>netstat -an | findstr 80
TCP 10.250.2.190:49328 202.39.170.15:8080 ESTABLISHED
TCP 10.250.2.190:51572 202.226.89.167:80 CLOSE_WAIT
TCP 10.250.2.190:54734 202.79.157.251:80 ESTABLISHED
TCP 10.250.2.190:54881 202.176.31.204:80 CLOSE_WAIT
TCP 10.250.2.190:55219 202.60.153.98:80 ESTABLISHED
TCP 10.250.2.190:55803 202.28.226.40:80 CLOSE_WAIT
TCP 10.250.2.190:55854 202.188.46.24:80 TIME_WAIT
TCP 10.250.2.190:55855 202.188.46.24:80 TIME_WAIT
TCP [::]:80 [::]:0 LISTENING
TCP [::]:8009 [::]:0 LISTENING
監聽的TCP [::]:80 [::]:0 LISTENING顯示監聽了IPV6格式的埠。
【檢視本地是否開啟了IPV6,ipconfig /all,如果此命令中有本地連結 IPv6 地址. . . . . . . . : fe80::d423:34af:7a7c:c995%10,說明已經開啟了IPV6】
第二,修改tomcat的配置檔案:
找到:
<Connector port="80" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" />
修改為:
<Connector port="80" maxHttpHeaderSize="8192" address="0.0.0.0"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" />
第三,重啟tomcat檢視監聽:
C:\Users\Long80A>netstat -an | findstr 80
TCP 0.0.0.0:80 0.0.0.0:0 LISTENING
第四,新增一個允許訪問80埠的防火牆規則
開始-控制面板-防火牆-高階設定-入站規則-新建規則,選擇埠,TCP,80,然後一直下一步。
第五,從其他機器就能正常訪問了
curl -I http://10.250.2.190
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Content-Type: text/html;charset=ISO-8859-1
Transfer-Encoding: chunked
Date: Wed, 20 Nov 2013 02:48:33 GMT