Nếu danh sách rules filter của tường lửa bác có mỗi cái dòng đó thì lỗi đó là bình thường. Bở vì dòng đó block packet đi tới router từ các interface không có trong list LAN, tức là block packet đến từ WAN. Nên khi router tạo kết nối đến server DoH thì router gửi được packet đi, nhưng khi server trả lời thì packet bị drop.
Bác chú ý ở đây
help.mikrotik.com
Code:
/ip firewall filter
add action=accept chain=input comment="defconf: accept ICMP after RAW" protocol=icmp
add action=accept chain=input comment="defconf: accept established,related,untracked" connection-state=established,related,untracked
add action=drop chain=input comment="defconf: drop all not coming from LAN" in-interface-list=!LAN
là trước cái rule "drop all not coming from LAN" này, bác cần có cái rule ở cái dòng có cái comment "accept established,related,untracked" nữa. Dòng đó bảo router chấp nhận (tức là không drop) những packet gửi vào router (tức là cả packet từ WAN) nếu packet đó thuộc một kết nối đã tạo ra trước đó, hoặc là packet trả lời một packet đã gửi đi trước đó. Phải có dòng đó thì khi nextdns gửi packet trả lời về mới không bị dòng tiếp theo nó drop. Không có dòng thứ 2 đó thì router của bác không nối được vào đâu ở các interface WAN hết, vì chỉ gửi đi được chứ không nhận về được. Các thiết bị trong mạng thì vẫn ok vì với chúng thì chain input không áp dụng, mà là chain forward. Thường cái dòng "accept established,related,untracked" này sẽ để lên trên cao, cả với chain forward cũng vậy, để router có thể dừng xử lý rules sớm với những packet của kết nối đã qua được filter trước đó. Như vậy để nếu có thật nhiều rules đi chăng nữa thì phần lớn chỉ phải kiểm tra với những packet đầu tiên của kết nối mà thôi.
Bác chú ý thứ tự các rules nó quan trọng, tường lửa sẽ match từ trên xuống, gặp cái nào match mà có accept hoặc drop thì nó sẽ dừng lại không match tiếp.
Tương tự giả sử sau này bác muốn mở cổng nào đó với 1 rule accept với dst-port thì bác cũng đừng quên kéo rule đó lên trên cái rule "drop all" kia.
Ngoài ra bác cũng cần cái rule accept ICMP kia thì những cái cần thiết như Path MTU Discovery nó mới hoạt động. ICMP không chỉ phục vụ Ping mà còn có nhiều nhiệm vụ cần thiết khác. Việc block ICMP trên tường lửa vì lo bên ngoài ping được router của bác là lỗi thời rồi.
Em post lại tường lửa defconf của các dòng home router MikroTik nếu các bác dùng x86 cần, cơ bản nó là như cái link "Advanced firewall", thay mỗi 1 vài rules vì không dùng raw filter:
IPv4 (có fasttrack và NAT masquerade):
Code:
/ip firewall filter
add action=accept chain=input comment=\
"defconf: accept established,related,untracked" connection-state=\
established,related,untracked
add action=drop chain=input comment="defconf: drop invalid" connection-state=\
invalid
add action=accept chain=input comment="defconf: accept ICMP" protocol=icmp
add action=accept chain=input comment=\
"defconf: accept to local loopback (for CAPsMAN)" dst-address=127.0.0.1
add action=drop chain=input comment="defconf: drop all not coming from LAN" \
in-interface-list=!LAN
add action=accept chain=forward comment="defconf: accept in ipsec policy" \
ipsec-policy=in,ipsec
add action=accept chain=forward comment="defconf: accept out ipsec policy" \
ipsec-policy=out,ipsec
add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \
connection-state=established,related hw-offload=yes
add action=accept chain=forward comment=\
"defconf: accept established,related, untracked" connection-state=\
established,related,untracked
add action=drop chain=forward comment="defconf: drop invalid" \
connection-state=invalid
add action=drop chain=forward comment=\
"defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \
connection-state=new in-interface-list=WAN
/ip firewall nat
add action=masquerade chain=srcnat comment="defconf: masquerade" \
ipsec-policy=out,none out-interface-list=WAN
IPv6 (gồm các rules IPSEC có thể disable nếu không dùng - IKE, AH, ESP):
Code:
/ipv6 firewall address-list
add address=::/128 comment="defconf: unspecified address" list=bad_ipv6
add address=::1/128 comment="defconf: lo" list=bad_ipv6
add address=fec0::/10 comment="defconf: site-local" list=bad_ipv6
add address=::ffff:0.0.0.0/96 comment="defconf: ipv4-mapped" list=bad_ipv6
add address=::/96 comment="defconf: ipv4 compat" list=bad_ipv6
add address=100::/64 comment="defconf: discard only " list=bad_ipv6
add address=2001:db8::/32 comment="defconf: documentation" list=bad_ipv6
add address=2001:10::/28 comment="defconf: ORCHID" list=bad_ipv6
add address=3ffe::/16 comment="defconf: 6bone" list=bad_ipv6
/ipv6 firewall filter
add action=accept chain=input comment=\
"defconf: accept established,related,untracked" connection-state=\
established,related,untracked
add action=drop chain=input comment="defconf: drop invalid" connection-state=\
invalid
add action=accept chain=input comment="defconf: accept ICMPv6" protocol=\
icmpv6
add action=accept chain=input comment="defconf: accept UDP traceroute" port=\
33434-33534 protocol=udp
add action=accept chain=input comment=\
"defconf: accept DHCPv6-Client prefix delegation." dst-port=546 protocol=\
udp src-address=fe80::/10
add action=accept chain=input comment="defconf: accept IKE" \
dst-port=500,4500 protocol=udp
add action=accept chain=input comment="defconf: accept ipsec AH" \
protocol=ipsec-ah
add action=accept chain=input comment="defconf: accept ipsec ESP" \
protocol=ipsec-esp
add action=accept chain=input comment=\
"defconf: accept all that matches ipsec policy" ipsec-policy=in,ipsec
add action=drop chain=input comment=\
"defconf: drop everything else not coming from LAN" in-interface-list=\
!LAN
add action=accept chain=forward comment=\
"defconf: accept established,related,untracked" connection-state=\
established,related,untracked
add action=drop chain=forward comment="defconf: drop invalid" \
connection-state=invalid
add action=drop chain=forward comment=\
"defconf: drop packets with bad src ipv6" src-address-list=bad_ipv6
add action=drop chain=forward comment=\
"defconf: drop packets with bad dst ipv6" dst-address-list=bad_ipv6
add action=drop chain=forward comment="defconf: rfc4890 drop hop-limit=1" \
hop-limit=equal:1 protocol=icmpv6
add action=accept chain=forward comment="defconf: accept ICMPv6" protocol=\
icmpv6
add action=accept chain=forward comment="defconf: accept HIP" \
protocol=139
add action=accept chain=forward comment="defconf: accept IKE" \
dst-port=500,4500 protocol=udp
add action=accept chain=forward comment="defconf: accept ipsec AH" \
protocol=ipsec-ah
add action=accept chain=forward comment="defconf: accept ipsec ESP" \
protocol=ipsec-esp
add action=accept chain=forward comment=\
"defconf: accept all that matches ipsec policy" ipsec-policy=in,ipsec
add action=drop chain=forward comment=\
"defconf: drop everything else not coming from LAN" in-interface-list=!LAN
Hai interface list LAN và WAN như hướng dẫn ở link MIkroTik.