2019年2月13日 星期三

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

NAT 伺服器


CentOS Linux 7 以 firewalld 指令設定防火牆規則教學


  架設 NAT 需要有兩個網路孔,一個負責 WAN,一個負責 LAN,先修改網卡的 zone 分別為   External (WAN) 跟 Internal (LAN),我的 ens18 負責 WAN,ens19 負責 LAN。
nmcli c mod ens19 connection.zone internal
nmcli c mod ens22 connection.zone external
nmcli c mod ens18 connection.zone public

然後確認一下有沒有成功
firewall-cmd --get-active-zone

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

firewall-cmd --zone=external --add-masquerade --permanent
firewall-cmd --zone=public --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

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

通過 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 --zone=public --add-forward-port=port=22:proto=tcp:toport=22:toaddr=192.168.0.31

firewall-cmd --list-all --zone=public

允許封包轉送
firewall-cmd --direct --add-rule ipv4 nat POSTROUTING 0 -o ens22 -j MASQUERADE
firewall-cmd --direct --add-rule ipv4 filter FORWARD 0 -i ens19 -o ens22 -j ACCEPT
firewall-cmd --direct --add-rule ipv4 filter FORWARD 0 -i ens22 -o ens19 -m state --state RELATED,ESTABLISHED -j ACCEPT
firewall-cmd --reload

firewall-cmd --direct --add-rule ipv4 nat POSTROUTING 0 -o ens18 -j MASQUERADE
firewall-cmd --direct --add-rule ipv4 filter FORWARD 0 -i ens19 -o ens18 -j ACCEPT
firewall-cmd --direct --add-rule ipv4 filter FORWARD 0 -i ens18 -o ens19 -m state --state RELATED,ESTABLISHED -j ACCEPT

firewall-cmd --reload

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

沒有留言:

張貼留言