文章目錄
MAC 封鎖存取特定 IP
這個需求源自連不到某個共用服務時的 exception handle 測試,一般來說直接將 mac 斷網就可以模擬,但想要測試的服務被包在一段流程中,斷網會讓該流程一開始就 fail 沒辦法驗證這次的需求,因此在沒辦法直接斷開,又想測試某個服務無法使用的情境,造就了這個需求:在 mac 上封鎖針對某個 ip 的所有 request
基本環境說明
- macOS Catalina 10.15.7
設定方式
修改 PF firewall 設定檔
sudo vi /etc/pf.conf
加上想要 block 的 ip 規則
語法
block drop out quick proto {tcp or udp} from {source} to {target ip} [port {port}]
範例
封鎖透過 tcp 存取特定 ip 所有 port
block drop out quick proto tcp from any to 192.168.1.109
封鎖透過 tcp 存取特定 ip 特定 port
block drop out quick proto tcp from any to 192.168.1.109 port 8500
重新載入修改後的 PF firewall 設定
sudo pfctl -f /etc/pf.conf
啟用修改的 PF firewall 設定
sudo pfctl -e
如果需要停用 PF firewall
sudo pfctl -d
實際效果
設定前:正常存取
設定後:無法存取
心得
現在回頭看流程好簡單喔XD 只是看到這個需求時還是愣了一下,雖然 pf 不是第一次碰,但 macOS 的設定相對於 Linux 還是有些差異,遇過幾次不能直接套用,給我留下了陰影 哈
參考資訊
文章作者 Yowko Tsai
上次更新 2020-11-13
授權合約
本部落格 (Yowko's Notes) 所有的文章內容(包含圖片),任何轉載行為,必須通知並獲本部落格作者 (Yowko Tsai) 的同意始得轉載,且轉載皆須註明出處與作者。
Yowko's Notes 由 Yowko Tsai 製作,以創用CC 姓名標示-非商業性-相同方式分享 3.0 台灣 授權條款 釋出。