Tổ chức interface và firewall zone trên OpenWrt
Firewall OpenWrt áp policy theo zone, không chỉ theo port. Một zone có thể chứa một hoặc nhiều logical network interface; forwarding quyết định traffic được đi từ zone này sang zone khác.
1. Chuẩn bị
- Backup:
sysupgrade -b /tmp/firewall-network-backup.tar.gzcp /etc/config/firewall /tmp/firewall.beforecp /etc/config/network /tmp/network.before
- Xác định release và firewall backend:
ubus call system boarduci show firewalluci show network
OpenWrt mới thường dùng firewall4/nftables; hệ thống cũ có thể dùng firewall3/iptables. Không trộn cú pháp hoặc lệnh kiểm tra giữa hai backend.
2. Mô hình zone cơ bản
lan: tin cậy, được truy cập router và forward ra WAN.wan: mạng ngoài, mặc định không cho kết nối mới vào router.guest: mạng không tin cậy, chỉ forward ra Internet.
Xem zone và forwarding hiện tại:
uci show firewall | grep -E 'zone|forwarding|rule'fw4 print 2>/dev/null || iptables-save
3. Khai báo zone guest
Chỉ thực hiện sau khi interface guest đã tồn tại trong /etc/config/network:
config zone option name 'guest' list network 'guest' option input 'REJECT' option output 'ACCEPT' option forward 'REJECT'config forwarding option src 'guest' option dest 'wan'
Nếu đã có zone cùng tên, không tạo bản sao. Dùng uci show firewall để xác định section và sửa đúng section.
4. Cho phép DHCP/DNS tới router
Guest thường cần DHCP và DNS nhưng không nên mở toàn bộ input:
config rule option name 'Guest-DHCP' option src 'guest' option proto 'udp' option dest_port '67-68' option target 'ACCEPT'config rule option name 'Guest-DNS' option src 'guest' option proto 'tcp udp' option dest_port '53' option target 'ACCEPT'
Tên section/rule có thể khác. Hãy đặt rule đúng vị trí và kiểm tra thứ tự sau khi commit.
5. Chặn guest vào mạng quản trị
Nếu guest không được truy cập RFC1918/LAN, tạo rule rõ ràng theo thiết kế của bạn; đừng dùng một ACCEPT rộng hơn để “sửa lỗi mạng”. Ví dụ chặn tới subnet LAN mẫu:
config rule option name 'Reject-Guest-to-LAN' option src 'guest' option dest 'lan' option dest_ip '192.168.1.0/24' option target 'REJECT'
Nếu mô hình có nhiều subnet quản trị, phải liệt kê từng boundary hoặc thiết kế zone phù hợp. Không coi RFC1918 là danh sách đầy đủ nếu mạng nội bộ dùng dải khác.
6. Áp dụng an toàn
- Kiểm tra syntax và thay đổi:
uci changes firewalluci show firewall
- Nếu sai, hoàn tác trước commit:
uci revert firewall
- Commit và reload:
uci commit firewall/etc/init.d/firewall reload
Trên hệ thống firewall4, xem ruleset:
fw4 printnft list ruleset
Trên hệ thống cũ:
iptables-save
7. Kiểm tra từ client
Guest client phải nhận đúng subnet, gateway và DNS. Kiểm tra:
ip addrip routenslookup openwrt.org 192.168.20.1ping -c 3 1.1.1.1
Sau đó kiểm tra các kết quả âm tính: không mở được 192.168.1.1, NAS, switch management hoặc SSH của LAN; không có kết nối mới từ WAN vào LuCI/SSH.
8. Khôi phục và cảnh báo
Rule ACCEPT từ WAN tới mọi port có thể phơi LuCI/SSH ra Internet. Không dùng 0.0.0.0/0 và toàn bộ port nếu chưa hiểu direction. Nếu mất truy cập sau reload, dùng console/LAN recovery và khôi phục:
cp /tmp/firewall.before /etc/config/firewalluci commit firewall/etc/init.d/firewall restart
Bình Luận & Thảo Luận
Góp ý, hỏi đáp và chia sẻ suy nghĩ của bạn