Linux IPTABLES埠轉發

洞拐洞拐發表於2016-10-12

  之前在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埠. 

  

  

相關文章