[英]Node.js websocket server seems confused about it's ip
注意: 我已經在啟用和禁用防火牆的情況下對此進行了測試。 這是所有遠程服務器到服務器的代碼(沒有瀏覽器)。 我在centos7上使用ws 。
我在我的優質網站(good.com,其IP為77.77.777.7)上使用https.server
websocket執行.listen(8000,'good.com')
並成功允許good.com的客戶和bad.com的客戶與new ws(wss://good.com:8000)
連接new ws(wss://good.com:8000)
在我的good.com服務器代碼中,我得到了ips
77.77.777.7 connected
66.66.666.6 connected
在good.com的終端中輸入
netstat ltn
tcp 0 0 77.77.777.7:8001 0.0.0.0:* LISTEN
預計會發生!
但是,然后我的行為異常的網站(bad.com的IP為66.66.666.6)具有相同的代碼。 bad.com會執行.listen(8000,'bad.com')
而任何客戶端都會執行new ws(wss://bad.com:8000)
在我的bad.com服務器代碼中,我得到了ips
127.0.0.1 connected
...當good.com要求打開bad.com的網絡套接字的請求超時時! 所以我在bad.com的終端中輸入
netstat ltn
tcp 0 0 127.0.0.1:8001 0.0.0.0:* LISTEN
如果我強制bad.com的監聽為.listen(8000,'66.66.666.6')
然后good.com超時,而bad.com出現Error: connect ECONNREFUSED 127.0.0.1:8000
或者,如果我強制bad.com的監聽為.listen(8000,'0.0.0.0')
然后,當bad.com的websocket連接時,good.com超時,但是,在我的bad.com服務器代碼中,我得到了ips
127.0.0.1 connected
和壞的.coms netstat ltn
顯示
tcp 0 0 0.0.0.0:8001 0.0.0.0:* LISTEN
最后,如果我收聽時沒有任何ip .listen(8000)
那么good.com的客戶端會超時,但是bad.com的客戶端會以ip連接
::ffff:127.0.0.1 connected
和壞的.coms netstat ltn
顯示
tcp6 0 0 :::8001 :::* LISTEN
我認為可能正在發生
在Apache中可能未正確配置的某件事告訴bad.com“您的名稱是127.0.0.1本地主機,而不是66.66.666.6”。
或某種node.js設置文件(?)更喜歡在localhost而不是ip下運行應用程序。
我認為此問題與以下問題無關: 為什么只能從127.0.0.1/localhost訪問Node.js應用程序?
兩個站點的正確代碼是listen(8000,'0.0.0.0')
! 問題是在好站點上禁用了POODLE攻擊,因此壞站點無法連接
在/etc/httpd/conf.d/ssl.conf中
我SSLProtocol all -SSLv2 -SSLv3
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.