[CentOS] 在 CentOS 7 使用 firewalld 架設 NAT

  架設 NAT 在之前大多使用 iptable 來實現,雖然在 CentOS 7 可以把 firewalld 關掉繼續使用 iptable,但是…我開始學 CentOS 的時候就已經是 7 了XD,我反而不會用 iptable Q_Q。

NAT 伺服器

  架設 NAT 需要有兩個網路孔,一個負責 WAN,一個負責 LAN,先修改網卡的 zone 分別為   External (WAN) 跟 Internal (LAN),我的 ens33 負責 WAN,ens34 負責 LAN。

# nmcli c mod ens34 connection.zone internal
# nmcli c mod ens33 connection.zone external

 

然後確認一下有沒有成功

# firewall-cmd --get-active-zone

WAN 設定 IP masquerad,其實我不太懂這是什麼意思,似乎是 IP 偽裝。


# firewall-cmd --zone=external --add-masquerade --permanent
# firewall-cmd --zone=internal --add-masquerade --permanent
# firewall-cmd --reload

檢查一下 ip fordwarding 是否啟用,如果啟用的話結果為 1


# cat /proc/sys/net/ipv4/ip_forward

 

Port fordwarding

通過 WAN 的 port 22/tcp 轉發到 WAN 本身的  port 9487/tcp


# firewall-cmd --zone=external --add-forward-port=port=22:proto=tcp:toport=9487
# firewall-cmd --list-all --zone=external

 

通過 WAN 的 port 22/tcp 轉發到 192.168.0.31

# firewall-cmd --zone=external --add-forward-port=port=22:proto=tcp:toport=22:toaddr=192.168.0.31
# firewall-cmd --list-all --zone=external

允許封包轉送


# firewall-cmd --direct --add-rule ipv4 nat POSTROUTING 0 -o ens33 -j MASQUERADE
# firewall-cmd --direct --add-rule ipv4 filter FORWARD 0 -i ens34 -o ens33 -j ACCEPT
# firewall-cmd --direct --add-rule ipv4 filter FORWARD 0 -i ens33 -o ens34 -m state --state RELATED,ESTABLISHED -j ACCEPT
# firewall-cmd --reload

重新讀取防火牆設定後,NAT 就完成了,之後可以在上面安裝 dhcp,這樣就不用手動設定 IP 了。

Ref : Firewalld : IP Masquerade

關於 富源

一名台東大學資訊工程學系的學生,這個網站用來紀錄一些不常用,但很重要、會忘記的事情。我的興趣是寫一些實用向的程式,例如 Python 爬蟲之類的東西... 歡迎各位交流!

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *