應(yīng)用場(chǎng)景
很多情況下,我們?cè)趌inux服務(wù)器上安裝了tomcat或者nginx之類的軟件.
當(dāng)我們想用80端口的時(shí)候,如果不用root用戶啟動(dòng)就會(huì)報(bào)錯(cuò).
這是因?yàn)?對(duì)于linux系統(tǒng)而言,1024以下的端口,普通用戶是無(wú)法使用的.
網(wǎng)上關(guān)于這方面的解決方案有兩種,一種呢就是什么給文件root權(quán)限.
還有一種就是做端口的跳轉(zhuǎn).我覺得可能端口跳轉(zhuǎn)可能比較安全吧.就著重介紹一下怎么配置.
IPTABLES
在這里我們主要做的是本機(jī)的端口跳轉(zhuǎn),我主要說(shuō)下如何設(shè)置以及刪除.
關(guān)于iptables的詳細(xì)信息,可以參考網(wǎng)上很多資料.
添加一個(gè)端口的映射
現(xiàn)在我們要做一件事情,假設(shè)我們的linux上安裝了tomcat.默認(rèn)訪問(wèn)端口是8080.
現(xiàn)在我想做到當(dāng)用戶訪問(wèn)80端口的時(shí)候就能訪問(wèn)到tomcat了.
只需要在root用戶下執(zhí)行命令
iptables -t nat -A PREROUTING -p tcp –dport 80 -j REDIRECT –to-port 8080
-t nat : 指出我要操作什么表.(不寫就表示filter.默認(rèn)是filter)
-A PREROUTING : A 添加的意思.表示我要在PREROUTING 中添加一個(gè)規(guī)則
–dport 80 : 如果請(qǐng)求80端口.
–to-port 8080 : 那么就轉(zhuǎn)到8080端口.
測(cè)試如下 :
如何刪除規(guī)則
從上面我們可以看出,我們是在 nat表的PREROUTING 中添加的規(guī)則.
所以我們就要去nat表的PREROUTING 中刪除這個(gè)規(guī)則.
iptables -t nat -L -nv --line-numbers
這個(gè)命令的作用是,列出nat表中的規(guī)則,并且給個(gè)num.
然后我們就可以利用這個(gè)id刪除這個(gè)規(guī)則了.
如果你不寫-t nat 那么默認(rèn)查找的就是filter表.那么就無(wú)法查找規(guī)則.
利用這個(gè)語(yǔ)句就可以刪除這個(gè)規(guī)則了.
-t nat : 表示我要操作這個(gè)表,不指明就是filter.
-D : 表示執(zhí)行刪除操作
PREROUTING : 表示nat表中哪一個(gè)鏈. 后面數(shù)字1 就是上圖中的num
總結(jié)
我做了下面幾個(gè)實(shí)驗(yàn),nginx占用80端口.tomcat占用8080端口.
開啟nginx,tomcat
1. 如果開啟了轉(zhuǎn)跳,那么就訪問(wèn)不到nginx了.因?yàn)樵L問(wèn)80端口的時(shí)候一下跳到8080端口去了.
2 關(guān)閉端口跳轉(zhuǎn),就能訪問(wèn)到nginx了.
3 從上可以看出,端口跳轉(zhuǎn)不會(huì)占用端口.
4 如果添加規(guī)則訪問(wèn)沒有達(dá)到想要的效果,清楚瀏覽器緩存就可以了.
5 以上所有操作重啟以后全部消失.如果要保留操作,請(qǐng)執(zhí)行 service iptables restart
好了,以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。