linux下出現connect failed: Permission denied錯誤的解決辦法

    有兩臺linux服務器,一臺ubuntu13,一臺fedora20,我想用iperf命令測試下兩臺機器之間的帶寬。兩臺機器已經經過配置保證可以相互ping通。試着在ubuntu上運行iperf客戶,fedora上運行iperf服務器,但是每當ubuntu運行iperf後都會顯示:connect failed: Permission denied。
    開始以爲是地址什麼的寫錯了,但是檢查n遍後發現地址沒有錯。同時如果在ubuntu上同時運行客戶和服務器就沒有問題,可見這個問題跟iperf命令本身包括寫法都是沒有關係的。之後我決定抓個包看看。抓包的結果讓我很是驚訝,問題其實不在ubuntu而在fedora,因爲fedora已經收到了ubuntu發來的tcp請求包,但是fedora回覆ubuntu說destination unreachable:unreachable prohibited。很顯然是fedora把ubuntu的包給拒絕了,而拒絕的理由是目的地址禁止使用。看來應該是fedora上的防火牆在作怪。
    於是我決定想辦法關閉fedora防火牆。我先是關閉了selinux,又嘗試關閉iptables,但是執行service iptables stop後卻提示關閉失敗。我也懶得找原因了,就乾脆直接iptables -F清空規則,話說這fedora20下的默認iptables規則可真不少。之後試了還是不行。我就想是不是iptables沒有真正關閉。之後到網上查了後發現fedora20下除了iptables之外還有一個專門的防火牆服務叫做firewalld,它是一個“動態的防火牆服務”,與iptables的關係可以用一下官網上的話來描述:
If you want to use your own static firewall rules with the iptables and ip6tables services, install iptables-services and disable firewalld and enable iptables and ip6tables
    看出來了吧,firewalld的配置和iptables是相互獨立的,所以我之前使勁關閉iptables自然也是沒有用的。發現這點後趕緊關了這個萬惡的firewalld,果然iperf工作了。
    這次的經驗是,網上的很多解決問題的經驗方法是可取的,只是網友的環境可能與你的環境不同,所以網友的步驟到你這也可能需要更改。所以切忌照搬網友的步驟然後出錯就直接否定網上的方法,而應該嘗試根據自己的環境修正網上的步驟,如果最後實在不行再嘗試別的方法。
發佈了47 篇原創文章 · 獲贊 20 · 訪問量 108萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章