為了架設ss在vultr上買了一個日本的vps 用的是centos7的系統 防火牆是 firewall 搗鼓了兩天 在這裡總結一下。
如果小夥伴也準備在vultr上買vps 在註冊是 可以使用這個優惠連線 http://www.vultr.com/?ref=6972993-3B 會的到 20$ 的優惠 也就可以免費使用4個月
如果你的系統上沒有安裝使用命令安裝
#yum install firewalld //安裝firewalld 防火牆
開啟服務
# systemctl start firewalld.service
關閉防火牆
# systemctl stop firewalld.service
開機自動啟動
# systemctl enable firewalld.service
關閉開機制動啟動
# systemctl disable firewalld.service
檢視狀態
#systemctl status firewalld
得到到的結果如果是
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2016-09-05 02:34:07 UTC; 15min ago
Main PID: 3447 (firewalld)
CGroup: /system.slice/firewalld.service
└─3447 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid
Sep 05 02:34:07 vultr.guest systemd[1]: Starting firewalld - dynamic firewall daemon...
Sep 05 02:34:07 vultr.guest systemd[1]: Started firewalld - dynamic firewall daemon.
這樣的說明沒有問題
設定 firwall
使用firewall-cmd 命令
檢視狀態
#firewall-cmd --state //running 表示執行
獲取活動的區域
#firewall-cmd --get-active-zones
<zone1>: <interface1> <interface2> ..<zone2>: <interface3> ..
獲取所有支援的服務
#firewall-cmd --get-service
每個服務以空格分隔 例如:
RH-Satellite-6 amanda-client bacula bacula-client dhcp dhcpv6 dhcpv6-client dns freeipa-ldap freeipa-ldaps freeipa-replication ftp high-availability http https imaps ipp ipp-client ipsec iscsi-target kerberos kpasswd ldap ldaps libvirt libvirt-tls mdns mountd ms-wbt mysql nfs ntp openvpn pmcd pmproxy pmwebapi pmwebapis pop3s postgresql proxy-dhcp radius rpc-bind rsyncd samba samba-client smtp ssh telnet tftp tftp-client transmission-client vdsm vnc-server wbem-http
獲取永久選項所支援的服務 就是重啟後也支出的
#firewall-cmd --get-service --permanent //在 0.3.0 之前的 FirewallD版本中, panic 選項是 –enable-panic 與 –disable-panic
#firewall-cmd --panic-on //在 0.3.0 之前的 FirewallD版本中, panic 選項是 –enable-panic 與 –disable-panic
關閉應急模式
#firewall-cmd --panic-off
檢視應急模式的狀態
#firewall-cmd --query-panic
在不改變狀態的條件下重新載入防火牆:
#firewall-cmd --reload
防火牆預定義的服務配置檔案是xml檔案 目錄在 /usr/lib/firewalld/services/
在 /etc/firewalld/services/ 這個目錄中也有配置檔案 但是/etc/firewalld/services/目錄 優先於 /usr/lib/firewalld/services/ 目錄
修改配置檔案後 使用命令重新載入
#firewall-cmd --reload
啟用某個服務
# firewall-cmd --zone=public --add-service=https //臨時 # firewall-cmd --permanent --zone=public --add-service=https //永久
開啟某個埠
#firewall-cmd --permanent --zone=public --add-port=8080-8081/tcp //永久 #firewall-cmd --zone=public --add-port=8080-8081/tcp //臨時
使用命令載入設定
#firewall-cmd --reload
檢視開啟的埠和服務
#firewall-cmd --permanent --zone=public --list-services //服務空格隔開 例如 dhcpv6-client https ss
#firewall-cmd --permanent --zone=public --list-ports //埠空格隔開 例如 8080-8081/tcp 8388/tcp 80/tcp
在每次修改 埠和服務後 /etc/firewalld/zones/public.xml 檔案就會被修改 所以也可以在檔案中之間修改 然後重新載入
設定某個ip 訪問某個服務
#firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="192.168.0.4/24" service name="http" accept"
ip 192.168.0.4/24 訪問 http
設定後 public.xml 就會出現變化
刪除上面設定的規則
#firewall-cmd --permanent --zone=public --remove-rich-rule="rule family="ipv4" source address="192.168.0.4/24" service name="http" accept"
啟動服務
#systemctl start firewalld.service //開啟服務
#systemctl enable firewalld.service //開機制動啟動
#systemctl stop firewalld.service //關閉服務
#systemctl disable firewalld.service //禁止開機啟動
埠轉發
先開啟允許偽裝IP
firewall-cmd --query-masquerade # 檢查是否允許偽裝IP firewall-cmd --add-masquerade # 允許防火牆偽裝IP firewall-cmd --remove-masquerade# 禁止防火牆偽裝IP
設定轉發
然後轉發 tcp 22 埠至 3753
# firewall-cmd --zone=public --add-forward-port=port=22:proto=tcp:toport=3753
轉發 22 埠資料至另一個 ip 的相同埠上
# firewall-cmd --zone=public --add-forward-port=port=22:proto=tcp:toaddr=192.168.1.100
轉發 22 埠資料至另一 ip 的 2055 埠上
# firewall-cmd --zone=public --add-forward-port=port=22:proto=tcp:toport=2055:toaddr=192.168.1.100