ubuntu下通過ufw配置nat 【轉】

 轉自 http://rainbird.blog.51cto.com/211214/394403

      ufw是ubuntu下默認自帶的一個超級好用的防火牆.有了它以後,你可以輕鬆配置出來很強悍的防火牆,而不用再記複雜的iptables語法(當然了 它只是個簡化命令,底層依然是調用的iptables.).它的語法雖然簡單易用,但是筆者在用它配置nat映射的時候,卻發現沒有相關的語法.網上搜索 竟也沒有相關的中文資料.對比官方文檔,幾經摸索終於弄明白了ufw怎麼配置nat不敢獨享,特記錄如下:
      1.修改ufw文件,允許接收轉發的包
      vi /etc/default/ufw
      DEFAULT_FORWARD_POLICY="ACCEPT"
      2.修改sysctl.conf啓用內核轉發(取消註釋)
      vi /etc/ufw/sysctl.conf
      net/ipv4/ip_forward=1
      3.修改before.rules,添加相應的nat配置,直接添加到文件末尾的COMMIT下面就可以了.
      vi /etc/ufw/before.rules
      *nat
      :PREROUTING - [0:0]
      :POSTROUTING - [0:0]
      -A PREROUTING -i eth0 -p tcp --dport 22 -j DNAT --to-destination 192.168.1.100:22
      -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE
      COMMIT
      這個地方要注意的就是必需同時添加PREROUTING和POSTROUTING.這也是通過ufw配置nat時的難點所在!筆者很長一段時間都浪費在反 復修改PREROUTING上.後來仔細一想,有進來的包也必需有出去的包nat才能成行吧,於是試着添加POSTROUTING,結果就通了!這個地方 還有一點應該就是rules文件的語法吧.
      *nat
      :PREROUTING - [0:0]
      :POSTROUTING - [0:0]
      #這個地方加自定義語句
      COMMIT
      之前也是很長一段時間,都在原有的COMMIT里加東西,測試,也是浪費了挺長的時間纔看明白,語法.
      4.重啓ufw
      ufw disable&&ufw enable or ufw reload
      順路提醒一下,如果是遠程連接進去配置ufw會提示:
      Command may disrupt existing ssh connections. Proceed with operation (y|n)?
      所以如果你之前沒有允許ssh的連接,不建議遠程調整防火牆的(把自己攔外面了,可沒人管喲~).
      5.查看nat映射(還是用的iptables,ufw裏看不到)

root@localhost:/etc/ufw# iptables -L -t nat
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination        
DNAT       tcp  --  anywhere             anywhere            tcp dpt:22 to:192.168.1.100:22

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination        
MASQUERADE  all  --  localhost/24         anywhere           

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination 

      這裏要注意的地方就是手動添加的nat,在重啓ufw時,不會自動清理掉,所以每次重啓ufw前,你會要手動清除nat映射:iptables -F -t nat.

root@localhost:/etc/ufw# ufw disable
Firewall stopped and disabled on system startup
root@localhost:/etc/ufw# ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup
root@localhost:/etc/ufw# iptables -L -t nat
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         
DNAT       tcp  --  anywhere             anywhere            tcp dpt:22 to:192.168.1.100:22
DNAT       tcp  --  anywhere             anywhere            tcp dpt:22 to:192.168.1.100:22

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         
MASQUERADE  all  --  localhost/24         anywhere            
MASQUERADE  all  --  localhost/24         anywhere            

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination   

      就這麼多了,ufw配置nat,你會了嗎?

本文出自 “rainbird” 博客,請務必保留此出處http://rainbird.blog.51cto.com/211214/394403

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章