前些日子,組長要我實現一個功能,將告警郵件中的不能訪問的生產機器ip+端口轉化為辦公環境可以訪問的域名(已經通過端口映射配置)。報警程序是用go語言編寫的,如果直接將go語言配置文件中的ip+端口變成域名的話,程序就不能正常運行了,可linux的hosts文件不支持直接將域名解析到端口映射的級別(順便說一句windows好像可以,即hostname可以在windows的hosts文件中解析為1.2.3.4:1234這種形式)。
站在用戶的角度思考問題,與客戶深入溝通,找到畢節網站設計與畢節網站推廣的解決方案,憑借多年的經驗,讓設計與互聯網技術結合,創造個性化、用戶體驗好的作品,建站類型包括:成都做網站、成都網站設計、企業官網、英文網站、手機端網站、網站推廣、主機域名、網頁空間、企業郵箱。業務覆蓋畢節地區。
于是大概想的這種策略:
1.將linux機器上的/etc/hosts中添加域名到ipA的配置;
2.想辦法將ipA對80端口的訪問重新定向到ipA的指定端口(比如520)。
第一步好做,但是第二步呢?用Apache端口映射功能?還要在裝個apache web server;于是想到了linux自帶的iptables。
很多搭建過rac、dg、hadoop這類需要多臺機器協同工作的程序的朋友應該都接觸過iptables,而且通常都是iptables -F,清空管理規則,達到關閉防火墻的效果。其實防火墻只能說是iptables的一部分功能,感覺更準確的說iptables是一個網絡管理工具,不僅能夠將機器接收到的網絡數據丟棄或者接受,還可以進行其他操作比如轉發、記錄日志等等。
iptables的大體結構就像下面這的圖展示的(圖片來自互聯網)
主要這么看這張圖:
1.iptables的規則可以在五個地方(這里專業叫法叫做鏈)起作用:路由規則之前(prerouting)、轉發過程中(forward)、路由規則之后(postrouting)、程序處理之前(input)、程序處理之后(output);
2.iptables主要有這三種功能(這里可以叫做三張表,畢竟規則就像數據庫中的記錄記錄在數據表一樣記錄在這):地址轉化(nat)、包過濾(filter)、修改包(mangle)(raw用的不多,不是很懂,在網上看了一下好像是優先級高,可以避免nat等規則匹配提高效率)。
以perrouting為例,在這里可以通過iptables的一系列規則匹配,對發送過來的數據包進行修改或者地址轉化;以forward為例,在經過路由表匹配發現目標機器不是這臺機器的時候,可以對數據包修改或者過濾其他的就不重復說明了。
下面說說iptables的語法(圖片來自互聯網)
大體語法是這樣的
iptables -t 指明哪張表 -(A追加,I插入等等) 鏈名 匹配規則 特定操作(redirect、drop、accept等等)
以上面的需求來看,現在我想在訪問80端口的時候,將訪問重新定向到520端口。那么就可以在prerouting的時候,將訪問本機80端口的數據包變成訪問本機520端口的數據包
于是以root用戶執行如下命令
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRET --to-port 520
這樣就達到想要的效果,即在go語言中配置域名,但是仍然能夠訪問正確的ip+端口。
名稱欄目:iptables網絡管理器
文章鏈接:http://m.newbst.com/article40/gdeoeo.html
成都網站建設公司_創新互聯,為您提供面包屑導航、網站設計公司、商城網站、關鍵詞優化、網站排名、定制網站
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯