一個Oracle監聽問題的網路排查
今天在梳理一套環境的時候,發現了一個奇怪的問題,應用端連線正常,但是服務端卻有些問題。
假設服務端的IP地址為10.129.128.57
使用tnsping本機的服務,竟然丟擲了監聽的問題。
$ tnsping s2gamebbs
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = s2gamebbs.test.com)(PORT = 1528)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = gamebbs)))
TNS-12541: TNS:no listener
是監聽沒啟動嗎,檢視監聽程式存在,確實是啟動了,但是檢視監聽狀態卻丟擲了錯誤
LSNRCTL> status listener_1528
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=s2gamebbs.test.com)(PORT=1528)))
TNS-12541: TNS:no listener
TNS-12560: TNS:protocol adapter error
TNS-00511: No listener
Linux Error: 111: Connection refused
這個問題立馬勾起了我的興趣,我使用域名解析的方式檢視是沒有問題的。
$ ping `hostname`
PING s2gamebbs.cyou.com (10.129.128.57) 56(84) bytes of data.
64 bytes from s2gamebbs.cyou.com (10.129.128.57): icmp_seq=1 ttl=64 time=0.059 ms
。。。
^C
但是ping伺服器的IP是有問題的。
# ping 10.129.128.57
PING 10.129.128.57 (10.129.128.57) 56(84) bytes of data.
From 10.129.128.57 icmp_seq=1 Destination Port Unreachable
From 10.129.128.57 icmp_seq=2 Destination Port Unreachable
如此一來,這個問題就有趣了,我對比了如下的幾種測試場景。
# telnet 10.129.128.57 1528
Trying 10.129.128.57...
telnet: connect to address 10.129.128.57: Connection refused
# telnet 127.0.0.1 1528
Trying 127.0.0.1...
telnet: connect to address 127.0.0.1: Connection refused
# telnet `hostname` 1528
Trying 10.129.128.57...
telnet: connect to address 10.129.128.57: Connection refused
同時做了strace除錯,也沒有看到明顯的問題,於是我懷疑是網路層面解析的問題,/etc/hosts的檔案看了很多遍沒有問題,那就只有網路層面,比如防火牆了,我開始琢磨防火牆裡的配置。 看到了下面的一段:
-A INPUT -s 10.10.75.59/32 -j ACCEPT
-A INPUT -p udp -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-port-unreachable
其中最後的一句是關鍵,如果倒數兩句的順序調整一下,上面的錯誤就會完全不一樣。
這個引數其實的設定其實也是一種安全策略,如果能夠掃描到我們的埠,但是卻沒法得知我們的網路訪問是否在防火牆控制下,當然這個地方的設定傷害到“自己人”了。所以暫不需要。
去掉折後,重新啟動防火牆,問題就得到了解決。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23718752/viewspace-2143749/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle dblink監聽問題Oracle
- 6、oracle網路(監聽)Oracle
- 如何排查網路問題-開發眼裡的網路
- 使用 nsenter 排查容器網路問題
- 網路問題排查必備利器:Pingmesh
- Oracle啟動兩個監聽Oracle
- [專題]網路 IO 高階篇:一次有趣的 Docker 網路問題排查原創Docker
- 網路監聽技術
- 兩個流程鏈路問題的排查和總結
- 一個網路IP地址衝突的問題
- 一次Oracle監聽無法動態註冊處理過程排查分析Oracle
- JMS監聽Oracle AQOracle
- oracle靜態監聽Oracle
- 安卓監聽網路變化安卓
- 記錄springboot專案裡關於session的一個問題(session監聽器失效)Spring BootSession
- oracle 12c 資料庫例項監聽無法註冊問題一例Oracle資料庫
- [20180417]監聽與時區問題.txt
- CentOS7 配置靜態IP 及網路問題排查CentOS
- [貝聊科技]一個頁面阻塞問題的排查過程
- kafka監聽出現的問題,解決和剖析Kafka
- Android多程式之Binder解綁監聽的問題Android
- 不要再說你不會了——網路效能問題排查思路
- 論如何監聽一個物件的變化物件
- oracle 最全的監聽、tnsnames.ora格式Oracle
- [一個網際網路思想信徒]:今天突破69個聽眾
- Oracle 監聽異常處理Oracle
- Oracle 監聽投毒COST解決Oracle
- Oracle 建立非1521埠監聽Oracle
- oracle一個listener偵聽多個例項的配置Oracle
- 記一次排查CPU高的問題
- 一次容器MySQL的效能問題排查MySql
- 講一個linux服務啟動報錯問題排查Linux
- oracle 資料庫lsnrctl監聽的日誌路徑和trace檔案Oracle資料庫
- 記錄一次問題排查
- 記一次oom問題排查OOM
- Linux中如何排查網路?常見的網路排查指令都有哪些?Linux
- 編寫一個通用的事件監聽函式事件函式
- Python網路抓取的三個常見問題Python
- 如何防止網路監聽?防範措施有哪些?