之前在Linux上用普通使用者部署了一個Tomcat,然後將其server.xml中的埠配置為80埠,用普通使用者執行就提示繫結埠失敗(permission denied),google了一下,原來是Linux下,1024埠以下的,普通使用者是無法使用的,只能通過Root使用者來使用,這就造成一個問題,瀏覽器預設請求的埠是80,所以不需要使用者在瀏覽器位址列的地址後面加入埠,要是你自己的tomcat是8080埠,為了能正常訪問,使用者就不得不在地址後面新增上8080,這樣就不行了,有什麼方法可以解決這件事麼?
用Linux的iptables來進行埠的轉發,首先粗略來了解一下ipatbels:
iptables是Linux系統上的IP 資訊包過濾系統,你就把它看成一個防火牆,可以對進出的資料包進行過濾。
iptabels以供有四張表和五條鏈:
4個表:filter,nat,mangle,raw,預設表是filter(沒有指定表的時候就是filter表)。表的處理優先順序:raw>mangle>nat>filter。
filter:一般的過濾功能
nat:用於nat功能(埠對映,地址對映等)
mangle:用於對特定資料包的修改
raw:有限級最高,設定raw時一般是為了不再讓iptables做資料包的連結跟蹤處理,提高效能
5個鏈:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING。
PREROUTING:資料包進入路由表之前
INPUT:通過路由表後目的地為本機
FORWARDING:通過路由表後,目的地不為本機
OUTPUT:由本機產生,向外轉發
POSTROUTIONG:傳送到網路卡介面之前。
然後檢視iptables中已有的規則:
iptables -L [-t 表名],如下圖:
然後往nat表中新增一個埠轉發,將80埠轉發到8080埠之上
iptables -t nat -A PREROUTING -p tcp –dport 80 -j REDIRECT –to-port 8080
-t nat : 指出我要操作什麼表.(不寫就表示filter.預設是filter)
-A PREROUTING : A 新增的意思.表示我要在PREROUTING 中新增一個規則
–dport 80 : 如果請求80埠.
–to-port 8080 : 那麼就轉到8080埠.