客戶端無法連線資料庫的小問題
最近碰到了一個比較奇怪的資料庫連線問題。問題的起因是做一個資料整合的時候,把伺服器B的防火牆資訊都拷貝到了伺服器A,遷移的過程都很順利,是一套開發測試環境,遷移完成之後,從應用的反饋來說都沒有發現問題,過了幾天有個開發的同事找到我說,她現在連線資料庫的時候總是有超時的錯誤。之前連線伺服器B是沒有問題的,想讓我幫她看看。
對於這個問題,最直接的思路就是防火牆了,確認客戶端IP,埠庫,資料庫例項名都沒有問題,但是她那邊的反饋就是怎麼都連線不了。而且比較奇怪的是和她一個組的另外一個同事連線就沒有問題,所以就想如果跨網段實在訪問不了,應該是得找IT的同事來解決了吧,是不是有什麼特定的規則限制,最開始也沒有怎麼上心,但是等她再次找到我時,感覺這個問題確實有些奇怪。
為了進一步驗證,我專門抽了一些時間來了解開發同學的這個連線問題,最後為了進一步確認,我們開了遠端協助,我可以看到她那邊的連線情況。
基本情況如下:
tnsping 顯示操作超時
使用telnet連線22號埠,顯示連線失敗,目前開了22號的埠
使用ping 伺服器,顯示正常
所以這個問題看起來就比較奇怪,而且有些讓人捉摸不透,在伺服器端再三確認了防火牆的設定。可以看到防火牆是開通了1521,22和1528的埠的。
# iptables -nvL|grep 10.12.1.12
374 39102 ACCEPT tcp -- eth0 * 10.12.1.12 0.0.0.0/0 multiport dports 1528
0 0 ACCEPT tcp -- eth0 * 10.12.1.12 0.0.0.0/0 multiport dports 22
0 0 ACCEPT tcp -- eth0 * 10.12.1.12 0.0.0.0/0 multiport dports 1521
但是現在情況是tnsping和telnet都是失敗的。
帶著一絲嘗試,重新賦予了1521埠的許可權,再次檢視也確認開通了,這個時候繼續嘗試連線就沒有問題了。
# iptables -nvL|grep 10.12.1.12
5 299 ACCEPT tcp -- eth0 * 10.12.1.12 0.0.0.0/0 multiport dports 1521,1522
374 39102 ACCEPT tcp -- eth0 * 10.12.1.12 0.0.0.0/0 multiport dports 1528
0 0 ACCEPT tcp -- eth0 * 10.12.1.12 0.0.0.0/0 multiport dports 22
0 0 ACCEPT tcp -- eth0 * 10.12.1.12 0.0.0.0/0 multiport dports 1521
這個問題雖然解決了,但是問題原因還是沒有找到,於是今天繼續檢視。終於在同事的幫助下找到了原因。在/etc/sysconfig/iptables裡面的內容和記憶體中的內容是同步的。得到的檔案內容結果有這麼一段。
-A INPUT -s 10.10.xx.61/32 -i eth0 -j ACCEPT
-A INPUT -s 10.10.xx.60/32 -i eth0 -j ACCEPT
-A INPUT -s 192.168.xx.232/32 -i eth0 -j ACCEPT
-A INPUT -s 192.168.xx.228/32 -i eth0 -j ACCEPT
-A INPUT -i eth0 -p icmp -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i eth0 -p icmp -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i eth1 -j DROP
-A INPUT -i eth0 -j DROP
-A INPUT -s 10.12.xx.99/32 -i eth0 -p tcp -m multiport --dports 1521 -j ACCEPT
-A INPUT -s 10.12.1.12/32 -i eth0 -p tcp -m multiport --dports 1521 -j ACCEPT
-A INPUT -s 10.127.xxx.82/32 -i eth0 -p tcp -m multiport --dports 10050 -j ACCEPT
-A INPUT -s 10.127.xxx.82/32 -i eth0 -p tcp -m multiport --dports 1521 -j ACCEPT
當然亮點的還是
-A INPUT -s 10.12.1.12/32 -i eth0 -p tcp -m multiport --dports 1521 -j ACCEPT 這一行上面的內容
-A INPUT -i eth0 -j DROP 這一行的內容代表的含義是不允許eth0的網路卡訪問,在防火牆設定裡面還是存在這樣一種依賴,自上向下,規則越嚴格,越要放在最上面。
所以之一行之後的連線都被限制了。當然通過iptables -nvL也確實看到後面的哪些IP確實都沒有任何的流量。
問題到了這裡就很清楚了,當然這也是對防火牆的操作不夠規範導致的。可以把防火牆中的內容轉化為iptables的命令,避免直接拷貝檔案內容這種簡單粗暴的方式。
對於這個問題,最直接的思路就是防火牆了,確認客戶端IP,埠庫,資料庫例項名都沒有問題,但是她那邊的反饋就是怎麼都連線不了。而且比較奇怪的是和她一個組的另外一個同事連線就沒有問題,所以就想如果跨網段實在訪問不了,應該是得找IT的同事來解決了吧,是不是有什麼特定的規則限制,最開始也沒有怎麼上心,但是等她再次找到我時,感覺這個問題確實有些奇怪。
為了進一步驗證,我專門抽了一些時間來了解開發同學的這個連線問題,最後為了進一步確認,我們開了遠端協助,我可以看到她那邊的連線情況。
基本情況如下:
tnsping 顯示操作超時
使用telnet連線22號埠,顯示連線失敗,目前開了22號的埠
使用ping 伺服器,顯示正常
所以這個問題看起來就比較奇怪,而且有些讓人捉摸不透,在伺服器端再三確認了防火牆的設定。可以看到防火牆是開通了1521,22和1528的埠的。
# iptables -nvL|grep 10.12.1.12
374 39102 ACCEPT tcp -- eth0 * 10.12.1.12 0.0.0.0/0 multiport dports 1528
0 0 ACCEPT tcp -- eth0 * 10.12.1.12 0.0.0.0/0 multiport dports 22
0 0 ACCEPT tcp -- eth0 * 10.12.1.12 0.0.0.0/0 multiport dports 1521
但是現在情況是tnsping和telnet都是失敗的。
帶著一絲嘗試,重新賦予了1521埠的許可權,再次檢視也確認開通了,這個時候繼續嘗試連線就沒有問題了。
# iptables -nvL|grep 10.12.1.12
5 299 ACCEPT tcp -- eth0 * 10.12.1.12 0.0.0.0/0 multiport dports 1521,1522
374 39102 ACCEPT tcp -- eth0 * 10.12.1.12 0.0.0.0/0 multiport dports 1528
0 0 ACCEPT tcp -- eth0 * 10.12.1.12 0.0.0.0/0 multiport dports 22
0 0 ACCEPT tcp -- eth0 * 10.12.1.12 0.0.0.0/0 multiport dports 1521
這個問題雖然解決了,但是問題原因還是沒有找到,於是今天繼續檢視。終於在同事的幫助下找到了原因。在/etc/sysconfig/iptables裡面的內容和記憶體中的內容是同步的。得到的檔案內容結果有這麼一段。
-A INPUT -s 10.10.xx.61/32 -i eth0 -j ACCEPT
-A INPUT -s 10.10.xx.60/32 -i eth0 -j ACCEPT
-A INPUT -s 192.168.xx.232/32 -i eth0 -j ACCEPT
-A INPUT -s 192.168.xx.228/32 -i eth0 -j ACCEPT
-A INPUT -i eth0 -p icmp -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i eth0 -p icmp -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i eth1 -j DROP
-A INPUT -i eth0 -j DROP
-A INPUT -s 10.12.xx.99/32 -i eth0 -p tcp -m multiport --dports 1521 -j ACCEPT
-A INPUT -s 10.12.1.12/32 -i eth0 -p tcp -m multiport --dports 1521 -j ACCEPT
-A INPUT -s 10.127.xxx.82/32 -i eth0 -p tcp -m multiport --dports 10050 -j ACCEPT
-A INPUT -s 10.127.xxx.82/32 -i eth0 -p tcp -m multiport --dports 1521 -j ACCEPT
當然亮點的還是
-A INPUT -s 10.12.1.12/32 -i eth0 -p tcp -m multiport --dports 1521 -j ACCEPT 這一行上面的內容
-A INPUT -i eth0 -j DROP 這一行的內容代表的含義是不允許eth0的網路卡訪問,在防火牆設定裡面還是存在這樣一種依賴,自上向下,規則越嚴格,越要放在最上面。
所以之一行之後的連線都被限制了。當然通過iptables -nvL也確實看到後面的哪些IP確實都沒有任何的流量。
問題到了這裡就很清楚了,當然這也是對防火牆的操作不夠規範導致的。可以把防火牆中的內容轉化為iptables的命令,避免直接拷貝檔案內容這種簡單粗暴的方式。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23718752/viewspace-2072047/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 客戶端連線資料庫的方法客戶端資料庫
- PLSQL Developer 客戶端沒有TNS監聽,無法連線資料庫SQLDeveloper客戶端資料庫
- 配置ORACLE 客戶端連線到資料庫Oracle客戶端資料庫
- PL/SQL developer 遠端連線資料庫 客戶端配置SQLDeveloper資料庫客戶端
- 顯示連線Oracle資料庫的客戶端IP地址Oracle資料庫客戶端
- IDEA無法連線docker中的資料庫的問題IdeaDocker資料庫
- 客戶端連不上資料庫客戶端資料庫
- 關於go和資料庫連線,客戶端以及驅動的疑問?Go資料庫客戶端
- 解決Oracle 11gR2 RAC 無法在客戶端通過scanIP連線資料庫Oracle客戶端資料庫
- mysqldump資料匯出問題和客戶端授權後連線失敗問題MySql客戶端
- SQLyog客戶端無法連線MySQL伺服器案例分析客戶端MySql伺服器
- 解決oracle 客戶端混亂造成OBIEE Client Administration不能連線資料庫問題Oracle客戶端client資料庫
- 解決Oracle 11g R2 RAC 無法在客戶端通過scanIP連線資料庫Oracle客戶端資料庫
- 如何配置oracle客戶端連線10g rac 資料庫Oracle客戶端資料庫
- 遠端客戶端連線資料庫時提示TNS-12541: TNS: 無監聽程式客戶端資料庫
- impala客戶端連線客戶端
- Redis客戶端連線Redis客戶端
- Oracle備庫無法連線主庫的問題分析Oracle
- WAMP無法連線mysql資料庫MySql資料庫
- MMNL absent ,資料庫無法連線資料庫
- 客戶端通過SCAN TNS無法連線ORA-12545客戶端
- 應用使用JNDI,資料庫無法連線,導致的程序無法啟動問題處理資料庫
- 寶塔皮膚無法遠端連線資料庫的解決方法資料庫
- 監控資料庫連線遇到的一個小問題資料庫
- SQL Server 2005無法遠端連線的問題SQLServer
- 客戶端無法同步時間伺服器問題處理客戶端伺服器
- 虛擬平臺客戶端無法登陸問題記錄客戶端
- 客戶端連不上資料庫,如何來排錯客戶端資料庫
- jive的資料庫連線配置問題資料庫
- mysql、redis 客戶端連線池MySqlRedis客戶端
- vncserver建立與客戶端連線VNCServer客戶端
- MMMNL absent錯誤 ,資料庫無法連線資料庫
- laradock 資料庫連線問題資料庫
- 請問,關於資料庫連線的問題。資料庫
- oracle 客戶端如何連線到oracle 11gR2資料庫(DNS SCAN IP)Oracle客戶端資料庫DNS
- Winform客戶端引用WCF客戶端後,部分類無法正常使用ORM客戶端
- 宿主機/客戶端無法連線虛擬機器/主機Oracle11g客戶端虛擬機Oracle
- hibernate資料庫連線池的問題資料庫