奇怪的問題:telnet無法連接另一臺server的正常的開放端口

問題描述:

    有一臺server(稱爲A)作爲memcache服務器開放了11211端口,但是另一臺server(稱爲B)無法調用A的memcache,顯示無法連接。

排查:

  1. 先在B上用telnet 嘗試連接連接A的11211端口,超時。

  2. 換用另外的機器來telnet A 的11211端口,正常。

  3. 用B去telnet另一臺機器的開放端口,也正常。

  4. 用B telnet A的其他端口,例如 22,也不正常。

  5. 用A telnet B的開放端口,也正常。

所以,看來問題成了只有B telnet A的時候有問題。

後來想到在A上抓包看看,分別用B telnet A 和 用另一臺能telnet通A的機器telnet A,觀察兩者在A上抓包的結果,發現結果果然不一樣

B telnet A 時:

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/6E/E2/wKiom1WKfxLB1HZdAAGDRkCDRgo056.jpg" title="QQ圖片20150624180040.jpg" alt="wKiom1WKfxLB1HZdAAGDRkCDRgo056.jpg" />

其他機器telnet A時:

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/6E/E2/wKiom1WKf6biTALkAAEpE7Tmw6Q942.jpg" title="QQ圖片20150624181111111.jpg" alt="wKiom1WKf6biTALkAAEpE7Tmw6Q942.jpg" />

可以看到B的telnet請求已經到達了A,但是A沒有像正常情況下給予B相應,所以B就會顯示超時。

雖然知道了問題出在哪,可是還是沒思路,最後懷疑到內核的網絡相關配置,即   /etc/sysctl.conf 的先關配置,對比了一下B和其他機子的該文件,發現B的配置裏少了幾行配置

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/6E/E2/wKiom1WKgLSy_9PDAAZSNFXr6EI537.jpg" title="QQ圖片20177777777.jpg" alt="wKiom1WKgLSy_9PDAAZSNFXr6EI537.jpg" />

然後在B的/etc/sysctl.conf里加上了這些配置,sysctl -p使生效,再嘗試telnet A,竟然成功了。


說了這麼多,雖然問題解決了,但是以本人當前的技能水平,還是不能精確的知道是哪個配置項起到了關鍵的作用,故而還是有點小鬱悶。

還得博學啊!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章