Trình tạo CGNAT cho MikroTik RouterOS

Công cụ tính CGNAT, trình tạo CGNAT cho MikroTik, bộ tính khối cổng netmap, script CGNAT của RouterOS — chữ thì khác, việc thì một: tính xem mỗi địa chỉ công cộng gánh được bao nhiêu thuê bao, quyết định cổng nguồn nào thuộc về ai, rồi viết các luật /ip firewall nat nói điều đó. Mikro Manager làm cả hai nửa. Cho biết dải riêng, tiền tố công cộng và số máy khách trên mỗi địa chỉ, nó sẽ tạo ra các luật netmap, chuỗi nhảy và tuyến blackhole tuỳ chọn — dưới dạng một kế hoạch bạn duyệt trước khi có gì được ghi, hoặc một script .rsc bạn tự dán.

Pool được tính ngay trong trình duyệt. Không có gì bạn gõ được gửi đi đâu cả — vốn không có máy chủ nào để gửi tới. Các luật được viết cho RouterOS 7.

Không gian riêng 100.64.0.0/22
Khối
32
Địa chỉ riêng
1.024
Cổng mỗi máy khách
2.016
Luật
133
cgnat1.rsc
# Mikro Manager — pool "cgnat1"
# 100.64.0.0/22 -> 203.0.113.0/27 · 32 blocks · ports 1024-65535
# Rules are tagged with mikro: comments; edit the pool in Mikro Manager, not by hand.

/ip firewall nat
add chain=cgnat1_b0 action=netmap protocol=tcp src-address=100.64.0.0/27 to-addresses=203.0.113.0/27 to-ports=1024-3039 comment="mikro:v1;pool=cgnat1;kind=netmap;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=0;proto=tcp"
add chain=cgnat1_b0 action=netmap protocol=udp src-address=100.64.0.0/27 to-addresses=203.0.113.0/27 to-ports=1024-3039 comment="mikro:v1;pool=cgnat1;kind=netmap;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=0;proto=udp"
add chain=cgnat1_b0 action=netmap src-address=100.64.0.0/27 to-addresses=203.0.113.0/27 comment="mikro:v1;pool=cgnat1;kind=netmap;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=0;proto=other"
add chain=cgnat1_b1 action=netmap protocol=tcp src-address=100.64.0.32/27 to-addresses=203.0.113.0/27 to-ports=3040-5055 comment="mikro:v1;pool=cgnat1;kind=netmap;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=1;proto=tcp"
add chain=cgnat1_b1 action=netmap protocol=udp src-address=100.64.0.32/27 to-addresses=203.0.113.0/27 to-ports=3040-5055 comment="mikro:v1;pool=cgnat1;kind=netmap;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=1;proto=udp"
add chain=cgnat1_b1 action=netmap src-address=100.64.0.32/27 to-addresses=203.0.113.0/27 comment="mikro:v1;pool=cgnat1;kind=netmap;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=1;proto=other"
add chain=cgnat1_b2 action=netmap protocol=tcp src-address=100.64.0.64/27 to-addresses=203.0.113.0/27 to-ports=5056-7071 comment="mikro:v1;pool=cgnat1;kind=netmap;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=2;proto=tcp"
add chain=cgnat1_b2 action=netmap protocol=udp src-address=100.64.0.64/27 to-addresses=203.0.113.0/27 to-ports=5056-7071 comment="mikro:v1;pool=cgnat1;kind=netmap;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=2;proto=udp"
add chain=cgnat1_b2 action=netmap src-address=100.64.0.64/27 to-addresses=203.0.113.0/27 comment="mikro:v1;pool=cgnat1;kind=netmap;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=2;proto=other"
add chain=cgnat1_b3 action=netmap protocol=tcp src-address=100.64.0.96/27 to-addresses=203.0.113.0/27 to-ports=7072-9087 comment="mikro:v1;pool=cgnat1;kind=netmap;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=3;proto=tcp"
add chain=cgnat1_b3 action=netmap protocol=udp src-address=100.64.0.96/27 to-addresses=203.0.113.0/27 to-ports=7072-9087 comment="mikro:v1;pool=cgnat1;kind=netmap;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=3;proto=udp"
add chain=cgnat1_b3 action=netmap src-address=100.64.0.96/27 to-addresses=203.0.113.0/27 comment="mikro:v1;pool=cgnat1;kind=netmap;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=3;proto=other"
add chain=cgnat1_b4 action=netmap protocol=tcp src-address=100.64.0.128/27 to-addresses=203.0.113.0/27 to-ports=9088-11103 comment="mikro:v1;pool=cgnat1;kind=netmap;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=4;proto=tcp"
add chain=cgnat1_b4 action=netmap protocol=udp src-address=100.64.0.128/27 to-addresses=203.0.113.0/27 to-ports=9088-11103 comment="mikro:v1;pool=cgnat1;kind=netmap;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=4;proto=udp"
add chain=cgnat1_b4 action=netmap src-address=100.64.0.128/27 to-addresses=203.0.113.0/27 comment="mikro:v1;pool=cgnat1;kind=netmap;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=4;proto=other"
add chain=cgnat1_b5 action=netmap protocol=tcp src-address=100.64.0.160/27 to-addresses=203.0.113.0/27 to-ports=11104-13119 comment="mikro:v1;pool=cgnat1;kind=netmap;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=5;proto=tcp"
add chain=cgnat1_b5 action=netmap protocol=udp src-address=100.64.0.160/27 to-addresses=203.0.113.0/27 to-ports=11104-13119 comment="mikro:v1;pool=cgnat1;kind=netmap;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=5;proto=udp"
add chain=cgnat1_b5 action=netmap src-address=100.64.0.160/27 to-addresses=203.0.113.0/27 comment="mikro:v1;pool=cgnat1;kind=netmap;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=5;proto=other"
add chain=cgnat1_b6 action=netmap protocol=tcp src-address=100.64.0.192/27 to-addresses=203.0.113.0/27 to-ports=13120-15135 comment="mikro:v1;pool=cgnat1;kind=netmap;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=6;proto=tcp"
add chain=cgnat1_b6 action=netmap protocol=udp src-address=100.64.0.192/27 to-addresses=203.0.113.0/27 to-ports=13120-15135 comment="mikro:v1;pool=cgnat1;kind=netmap;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=6;proto=udp"
add chain=cgnat1_b6 action=netmap src-address=100.64.0.192/27 to-addresses=203.0.113.0/27 comment="mikro:v1;pool=cgnat1;kind=netmap;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=6;proto=other"
add chain=cgnat1_b7 action=netmap protocol=tcp src-address=100.64.0.224/27 to-addresses=203.0.113.0/27 to-ports=15136-17151 comment="mikro:v1;pool=cgnat1;kind=netmap;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=7;proto=tcp"
add chain=cgnat1_b7 action=netmap protocol=udp src-address=100.64.0.224/27 to-addresses=203.0.113.0/27 to-ports=15136-17151 comment="mikro:v1;pool=cgnat1;kind=netmap;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=7;proto=udp"
add chain=cgnat1_b7 action=netmap src-address=100.64.0.224/27 to-addresses=203.0.113.0/27 comment="mikro:v1;pool=cgnat1;kind=netmap;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=7;proto=other"
add chain=cgnat1_b8 action=netmap protocol=tcp src-address=100.64.1.0/27 to-addresses=203.0.113.0/27 to-ports=17152-19167 comment="mikro:v1;pool=cgnat1;kind=netmap;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=8;proto=tcp"
add chain=cgnat1_b8 action=netmap protocol=udp src-address=100.64.1.0/27 to-addresses=203.0.113.0/27 to-ports=17152-19167 comment="mikro:v1;pool=cgnat1;kind=netmap;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=8;proto=udp"
add chain=cgnat1_b8 action=netmap src-address=100.64.1.0/27 to-addresses=203.0.113.0/27 comment="mikro:v1;pool=cgnat1;kind=netmap;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=8;proto=other"
add chain=cgnat1_b9 action=netmap protocol=tcp src-address=100.64.1.32/27 to-addresses=203.0.113.0/27 to-ports=19168-21183 comment="mikro:v1;pool=cgnat1;kind=netmap;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=9;proto=tcp"
add chain=cgnat1_b9 action=netmap protocol=udp src-address=100.64.1.32/27 to-addresses=203.0.113.0/27 to-ports=19168-21183 comment="mikro:v1;pool=cgnat1;kind=netmap;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=9;proto=udp"
add chain=cgnat1_b9 action=netmap src-address=100.64.1.32/27 to-addresses=203.0.113.0/27 comment="mikro:v1;pool=cgnat1;kind=netmap;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=9;proto=other"
add chain=cgnat1_b10 action=netmap protocol=tcp src-address=100.64.1.64/27 to-addresses=203.0.113.0/27 to-ports=21184-23199 comment="mikro:v1;pool=cgnat1;kind=netmap;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=10;proto=tcp"
add chain=cgnat1_b10 action=netmap protocol=udp src-address=100.64.1.64/27 to-addresses=203.0.113.0/27 to-ports=21184-23199 comment="mikro:v1;pool=cgnat1;kind=netmap;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=10;proto=udp"
add chain=cgnat1_b10 action=netmap src-address=100.64.1.64/27 to-addresses=203.0.113.0/27 comment="mikro:v1;pool=cgnat1;kind=netmap;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=10;proto=other"
add chain=cgnat1_b11 action=netmap protocol=tcp src-address=100.64.1.96/27 to-addresses=203.0.113.0/27 to-ports=23200-25215 comment="mikro:v1;pool=cgnat1;kind=netmap;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=11;proto=tcp"
add chain=cgnat1_b11 action=netmap protocol=udp src-address=100.64.1.96/27 to-addresses=203.0.113.0/27 to-ports=23200-25215 comment="mikro:v1;pool=cgnat1;kind=netmap;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=11;proto=udp"
add chain=cgnat1_b11 action=netmap src-address=100.64.1.96/27 to-addresses=203.0.113.0/27 comment="mikro:v1;pool=cgnat1;kind=netmap;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=11;proto=other"
add chain=cgnat1_b12 action=netmap protocol=tcp src-address=100.64.1.128/27 to-addresses=203.0.113.0/27 to-ports=25216-27231 comment="mikro:v1;pool=cgnat1;kind=netmap;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=12;proto=tcp"
add chain=cgnat1_b12 action=netmap protocol=udp src-address=100.64.1.128/27 to-addresses=203.0.113.0/27 to-ports=25216-27231 comment="mikro:v1;pool=cgnat1;kind=netmap;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=12;proto=udp"
add chain=cgnat1_b12 action=netmap src-address=100.64.1.128/27 to-addresses=203.0.113.0/27 comment="mikro:v1;pool=cgnat1;kind=netmap;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=12;proto=other"
add chain=cgnat1_b13 action=netmap protocol=tcp src-address=100.64.1.160/27 to-addresses=203.0.113.0/27 to-ports=27232-29247 comment="mikro:v1;pool=cgnat1;kind=netmap;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=13;proto=tcp"
add chain=cgnat1_b13 action=netmap protocol=udp src-address=100.64.1.160/27 to-addresses=203.0.113.0/27 to-ports=27232-29247 comment="mikro:v1;pool=cgnat1;kind=netmap;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=13;proto=udp"
add chain=cgnat1_b13 action=netmap src-address=100.64.1.160/27 to-addresses=203.0.113.0/27 comment="mikro:v1;pool=cgnat1;kind=netmap;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=13;proto=other"
add chain=cgnat1_b14 action=netmap protocol=tcp src-address=100.64.1.192/27 to-addresses=203.0.113.0/27 to-ports=29248-31263 comment="mikro:v1;pool=cgnat1;kind=netmap;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=14;proto=tcp"
add chain=cgnat1_b14 action=netmap protocol=udp src-address=100.64.1.192/27 to-addresses=203.0.113.0/27 to-ports=29248-31263 comment="mikro:v1;pool=cgnat1;kind=netmap;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=14;proto=udp"
add chain=cgnat1_b14 action=netmap src-address=100.64.1.192/27 to-addresses=203.0.113.0/27 comment="mikro:v1;pool=cgnat1;kind=netmap;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=14;proto=other"
add chain=cgnat1_b15 action=netmap protocol=tcp src-address=100.64.1.224/27 to-addresses=203.0.113.0/27 to-ports=31264-33279 comment="mikro:v1;pool=cgnat1;kind=netmap;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=15;proto=tcp"
add chain=cgnat1_b15 action=netmap protocol=udp src-address=100.64.1.224/27 to-addresses=203.0.113.0/27 to-ports=31264-33279 comment="mikro:v1;pool=cgnat1;kind=netmap;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=15;proto=udp"
add chain=cgnat1_b15 action=netmap src-address=100.64.1.224/27 to-addresses=203.0.113.0/27 comment="mikro:v1;pool=cgnat1;kind=netmap;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=15;proto=other"
add chain=cgnat1_b16 action=netmap protocol=tcp src-address=100.64.2.0/27 to-addresses=203.0.113.0/27 to-ports=33280-35295 comment="mikro:v1;pool=cgnat1;kind=netmap;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=16;proto=tcp"
add chain=cgnat1_b16 action=netmap protocol=udp src-address=100.64.2.0/27 to-addresses=203.0.113.0/27 to-ports=33280-35295 comment="mikro:v1;pool=cgnat1;kind=netmap;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=16;proto=udp"
add chain=cgnat1_b16 action=netmap src-address=100.64.2.0/27 to-addresses=203.0.113.0/27 comment="mikro:v1;pool=cgnat1;kind=netmap;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=16;proto=other"
add chain=cgnat1_b17 action=netmap protocol=tcp src-address=100.64.2.32/27 to-addresses=203.0.113.0/27 to-ports=35296-37311 comment="mikro:v1;pool=cgnat1;kind=netmap;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=17;proto=tcp"
add chain=cgnat1_b17 action=netmap protocol=udp src-address=100.64.2.32/27 to-addresses=203.0.113.0/27 to-ports=35296-37311 comment="mikro:v1;pool=cgnat1;kind=netmap;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=17;proto=udp"
add chain=cgnat1_b17 action=netmap src-address=100.64.2.32/27 to-addresses=203.0.113.0/27 comment="mikro:v1;pool=cgnat1;kind=netmap;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=17;proto=other"
add chain=cgnat1_b18 action=netmap protocol=tcp src-address=100.64.2.64/27 to-addresses=203.0.113.0/27 to-ports=37312-39327 comment="mikro:v1;pool=cgnat1;kind=netmap;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=18;proto=tcp"
add chain=cgnat1_b18 action=netmap protocol=udp src-address=100.64.2.64/27 to-addresses=203.0.113.0/27 to-ports=37312-39327 comment="mikro:v1;pool=cgnat1;kind=netmap;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=18;proto=udp"
add chain=cgnat1_b18 action=netmap src-address=100.64.2.64/27 to-addresses=203.0.113.0/27 comment="mikro:v1;pool=cgnat1;kind=netmap;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=18;proto=other"
add chain=cgnat1_b19 action=netmap protocol=tcp src-address=100.64.2.96/27 to-addresses=203.0.113.0/27 to-ports=39328-41343 comment="mikro:v1;pool=cgnat1;kind=netmap;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=19;proto=tcp"
add chain=cgnat1_b19 action=netmap protocol=udp src-address=100.64.2.96/27 to-addresses=203.0.113.0/27 to-ports=39328-41343 comment="mikro:v1;pool=cgnat1;kind=netmap;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=19;proto=udp"
add chain=cgnat1_b19 action=netmap src-address=100.64.2.96/27 to-addresses=203.0.113.0/27 comment="mikro:v1;pool=cgnat1;kind=netmap;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=19;proto=other"
add chain=cgnat1_b20 action=netmap protocol=tcp src-address=100.64.2.128/27 to-addresses=203.0.113.0/27 to-ports=41344-43359 comment="mikro:v1;pool=cgnat1;kind=netmap;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=20;proto=tcp"
add chain=cgnat1_b20 action=netmap protocol=udp src-address=100.64.2.128/27 to-addresses=203.0.113.0/27 to-ports=41344-43359 comment="mikro:v1;pool=cgnat1;kind=netmap;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=20;proto=udp"
add chain=cgnat1_b20 action=netmap src-address=100.64.2.128/27 to-addresses=203.0.113.0/27 comment="mikro:v1;pool=cgnat1;kind=netmap;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=20;proto=other"
add chain=cgnat1_b21 action=netmap protocol=tcp src-address=100.64.2.160/27 to-addresses=203.0.113.0/27 to-ports=43360-45375 comment="mikro:v1;pool=cgnat1;kind=netmap;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=21;proto=tcp"
add chain=cgnat1_b21 action=netmap protocol=udp src-address=100.64.2.160/27 to-addresses=203.0.113.0/27 to-ports=43360-45375 comment="mikro:v1;pool=cgnat1;kind=netmap;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=21;proto=udp"
add chain=cgnat1_b21 action=netmap src-address=100.64.2.160/27 to-addresses=203.0.113.0/27 comment="mikro:v1;pool=cgnat1;kind=netmap;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=21;proto=other"
add chain=cgnat1_b22 action=netmap protocol=tcp src-address=100.64.2.192/27 to-addresses=203.0.113.0/27 to-ports=45376-47391 comment="mikro:v1;pool=cgnat1;kind=netmap;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=22;proto=tcp"
add chain=cgnat1_b22 action=netmap protocol=udp src-address=100.64.2.192/27 to-addresses=203.0.113.0/27 to-ports=45376-47391 comment="mikro:v1;pool=cgnat1;kind=netmap;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=22;proto=udp"
add chain=cgnat1_b22 action=netmap src-address=100.64.2.192/27 to-addresses=203.0.113.0/27 comment="mikro:v1;pool=cgnat1;kind=netmap;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=22;proto=other"
add chain=cgnat1_b23 action=netmap protocol=tcp src-address=100.64.2.224/27 to-addresses=203.0.113.0/27 to-ports=47392-49407 comment="mikro:v1;pool=cgnat1;kind=netmap;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=23;proto=tcp"
add chain=cgnat1_b23 action=netmap protocol=udp src-address=100.64.2.224/27 to-addresses=203.0.113.0/27 to-ports=47392-49407 comment="mikro:v1;pool=cgnat1;kind=netmap;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=23;proto=udp"
add chain=cgnat1_b23 action=netmap src-address=100.64.2.224/27 to-addresses=203.0.113.0/27 comment="mikro:v1;pool=cgnat1;kind=netmap;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=23;proto=other"
add chain=cgnat1_b24 action=netmap protocol=tcp src-address=100.64.3.0/27 to-addresses=203.0.113.0/27 to-ports=49408-51423 comment="mikro:v1;pool=cgnat1;kind=netmap;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=24;proto=tcp"
add chain=cgnat1_b24 action=netmap protocol=udp src-address=100.64.3.0/27 to-addresses=203.0.113.0/27 to-ports=49408-51423 comment="mikro:v1;pool=cgnat1;kind=netmap;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=24;proto=udp"
add chain=cgnat1_b24 action=netmap src-address=100.64.3.0/27 to-addresses=203.0.113.0/27 comment="mikro:v1;pool=cgnat1;kind=netmap;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=24;proto=other"
add chain=cgnat1_b25 action=netmap protocol=tcp src-address=100.64.3.32/27 to-addresses=203.0.113.0/27 to-ports=51424-53439 comment="mikro:v1;pool=cgnat1;kind=netmap;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=25;proto=tcp"
add chain=cgnat1_b25 action=netmap protocol=udp src-address=100.64.3.32/27 to-addresses=203.0.113.0/27 to-ports=51424-53439 comment="mikro:v1;pool=cgnat1;kind=netmap;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=25;proto=udp"
add chain=cgnat1_b25 action=netmap src-address=100.64.3.32/27 to-addresses=203.0.113.0/27 comment="mikro:v1;pool=cgnat1;kind=netmap;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=25;proto=other"
add chain=cgnat1_b26 action=netmap protocol=tcp src-address=100.64.3.64/27 to-addresses=203.0.113.0/27 to-ports=53440-55455 comment="mikro:v1;pool=cgnat1;kind=netmap;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=26;proto=tcp"
add chain=cgnat1_b26 action=netmap protocol=udp src-address=100.64.3.64/27 to-addresses=203.0.113.0/27 to-ports=53440-55455 comment="mikro:v1;pool=cgnat1;kind=netmap;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=26;proto=udp"
add chain=cgnat1_b26 action=netmap src-address=100.64.3.64/27 to-addresses=203.0.113.0/27 comment="mikro:v1;pool=cgnat1;kind=netmap;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=26;proto=other"
add chain=cgnat1_b27 action=netmap protocol=tcp src-address=100.64.3.96/27 to-addresses=203.0.113.0/27 to-ports=55456-57471 comment="mikro:v1;pool=cgnat1;kind=netmap;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=27;proto=tcp"
add chain=cgnat1_b27 action=netmap protocol=udp src-address=100.64.3.96/27 to-addresses=203.0.113.0/27 to-ports=55456-57471 comment="mikro:v1;pool=cgnat1;kind=netmap;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=27;proto=udp"
add chain=cgnat1_b27 action=netmap src-address=100.64.3.96/27 to-addresses=203.0.113.0/27 comment="mikro:v1;pool=cgnat1;kind=netmap;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=27;proto=other"
add chain=cgnat1_b28 action=netmap protocol=tcp src-address=100.64.3.128/27 to-addresses=203.0.113.0/27 to-ports=57472-59487 comment="mikro:v1;pool=cgnat1;kind=netmap;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=28;proto=tcp"
add chain=cgnat1_b28 action=netmap protocol=udp src-address=100.64.3.128/27 to-addresses=203.0.113.0/27 to-ports=57472-59487 comment="mikro:v1;pool=cgnat1;kind=netmap;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=28;proto=udp"
add chain=cgnat1_b28 action=netmap src-address=100.64.3.128/27 to-addresses=203.0.113.0/27 comment="mikro:v1;pool=cgnat1;kind=netmap;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=28;proto=other"
add chain=cgnat1_b29 action=netmap protocol=tcp src-address=100.64.3.160/27 to-addresses=203.0.113.0/27 to-ports=59488-61503 comment="mikro:v1;pool=cgnat1;kind=netmap;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=29;proto=tcp"
add chain=cgnat1_b29 action=netmap protocol=udp src-address=100.64.3.160/27 to-addresses=203.0.113.0/27 to-ports=59488-61503 comment="mikro:v1;pool=cgnat1;kind=netmap;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=29;proto=udp"
add chain=cgnat1_b29 action=netmap src-address=100.64.3.160/27 to-addresses=203.0.113.0/27 comment="mikro:v1;pool=cgnat1;kind=netmap;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=29;proto=other"
add chain=cgnat1_b30 action=netmap protocol=tcp src-address=100.64.3.192/27 to-addresses=203.0.113.0/27 to-ports=61504-63519 comment="mikro:v1;pool=cgnat1;kind=netmap;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=30;proto=tcp"
add chain=cgnat1_b30 action=netmap protocol=udp src-address=100.64.3.192/27 to-addresses=203.0.113.0/27 to-ports=61504-63519 comment="mikro:v1;pool=cgnat1;kind=netmap;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=30;proto=udp"
add chain=cgnat1_b30 action=netmap src-address=100.64.3.192/27 to-addresses=203.0.113.0/27 comment="mikro:v1;pool=cgnat1;kind=netmap;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=30;proto=other"
add chain=cgnat1_b31 action=netmap protocol=tcp src-address=100.64.3.224/27 to-addresses=203.0.113.0/27 to-ports=63520-65535 comment="mikro:v1;pool=cgnat1;kind=netmap;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=31;proto=tcp"
add chain=cgnat1_b31 action=netmap protocol=udp src-address=100.64.3.224/27 to-addresses=203.0.113.0/27 to-ports=63520-65535 comment="mikro:v1;pool=cgnat1;kind=netmap;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=31;proto=udp"
add chain=cgnat1_b31 action=netmap src-address=100.64.3.224/27 to-addresses=203.0.113.0/27 comment="mikro:v1;pool=cgnat1;kind=netmap;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=31;proto=other"
add chain=cgnat1_g0 action=jump src-address=100.64.0.0/27 jump-target=cgnat1_b0 comment="mikro:v1;pool=cgnat1;kind=jumpBlock;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=0;g24=100.64.0.0/24"
add chain=cgnat1_g0 action=jump src-address=100.64.0.32/27 jump-target=cgnat1_b1 comment="mikro:v1;pool=cgnat1;kind=jumpBlock;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=1;g24=100.64.0.0/24"
add chain=cgnat1_g0 action=jump src-address=100.64.0.64/27 jump-target=cgnat1_b2 comment="mikro:v1;pool=cgnat1;kind=jumpBlock;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=2;g24=100.64.0.0/24"
add chain=cgnat1_g0 action=jump src-address=100.64.0.96/27 jump-target=cgnat1_b3 comment="mikro:v1;pool=cgnat1;kind=jumpBlock;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=3;g24=100.64.0.0/24"
add chain=cgnat1_g0 action=jump src-address=100.64.0.128/27 jump-target=cgnat1_b4 comment="mikro:v1;pool=cgnat1;kind=jumpBlock;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=4;g24=100.64.0.0/24"
add chain=cgnat1_g0 action=jump src-address=100.64.0.160/27 jump-target=cgnat1_b5 comment="mikro:v1;pool=cgnat1;kind=jumpBlock;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=5;g24=100.64.0.0/24"
add chain=cgnat1_g0 action=jump src-address=100.64.0.192/27 jump-target=cgnat1_b6 comment="mikro:v1;pool=cgnat1;kind=jumpBlock;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=6;g24=100.64.0.0/24"
add chain=cgnat1_g0 action=jump src-address=100.64.0.224/27 jump-target=cgnat1_b7 comment="mikro:v1;pool=cgnat1;kind=jumpBlock;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=7;g24=100.64.0.0/24"
add chain=cgnat1_g1 action=jump src-address=100.64.1.0/27 jump-target=cgnat1_b8 comment="mikro:v1;pool=cgnat1;kind=jumpBlock;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=8;g24=100.64.1.0/24"
add chain=cgnat1_g1 action=jump src-address=100.64.1.32/27 jump-target=cgnat1_b9 comment="mikro:v1;pool=cgnat1;kind=jumpBlock;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=9;g24=100.64.1.0/24"
add chain=cgnat1_g1 action=jump src-address=100.64.1.64/27 jump-target=cgnat1_b10 comment="mikro:v1;pool=cgnat1;kind=jumpBlock;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=10;g24=100.64.1.0/24"
add chain=cgnat1_g1 action=jump src-address=100.64.1.96/27 jump-target=cgnat1_b11 comment="mikro:v1;pool=cgnat1;kind=jumpBlock;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=11;g24=100.64.1.0/24"
add chain=cgnat1_g1 action=jump src-address=100.64.1.128/27 jump-target=cgnat1_b12 comment="mikro:v1;pool=cgnat1;kind=jumpBlock;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=12;g24=100.64.1.0/24"
add chain=cgnat1_g1 action=jump src-address=100.64.1.160/27 jump-target=cgnat1_b13 comment="mikro:v1;pool=cgnat1;kind=jumpBlock;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=13;g24=100.64.1.0/24"
add chain=cgnat1_g1 action=jump src-address=100.64.1.192/27 jump-target=cgnat1_b14 comment="mikro:v1;pool=cgnat1;kind=jumpBlock;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=14;g24=100.64.1.0/24"
add chain=cgnat1_g1 action=jump src-address=100.64.1.224/27 jump-target=cgnat1_b15 comment="mikro:v1;pool=cgnat1;kind=jumpBlock;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=15;g24=100.64.1.0/24"
add chain=cgnat1_g2 action=jump src-address=100.64.2.0/27 jump-target=cgnat1_b16 comment="mikro:v1;pool=cgnat1;kind=jumpBlock;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=16;g24=100.64.2.0/24"
add chain=cgnat1_g2 action=jump src-address=100.64.2.32/27 jump-target=cgnat1_b17 comment="mikro:v1;pool=cgnat1;kind=jumpBlock;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=17;g24=100.64.2.0/24"
add chain=cgnat1_g2 action=jump src-address=100.64.2.64/27 jump-target=cgnat1_b18 comment="mikro:v1;pool=cgnat1;kind=jumpBlock;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=18;g24=100.64.2.0/24"
add chain=cgnat1_g2 action=jump src-address=100.64.2.96/27 jump-target=cgnat1_b19 comment="mikro:v1;pool=cgnat1;kind=jumpBlock;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=19;g24=100.64.2.0/24"
add chain=cgnat1_g2 action=jump src-address=100.64.2.128/27 jump-target=cgnat1_b20 comment="mikro:v1;pool=cgnat1;kind=jumpBlock;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=20;g24=100.64.2.0/24"
add chain=cgnat1_g2 action=jump src-address=100.64.2.160/27 jump-target=cgnat1_b21 comment="mikro:v1;pool=cgnat1;kind=jumpBlock;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=21;g24=100.64.2.0/24"
add chain=cgnat1_g2 action=jump src-address=100.64.2.192/27 jump-target=cgnat1_b22 comment="mikro:v1;pool=cgnat1;kind=jumpBlock;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=22;g24=100.64.2.0/24"
add chain=cgnat1_g2 action=jump src-address=100.64.2.224/27 jump-target=cgnat1_b23 comment="mikro:v1;pool=cgnat1;kind=jumpBlock;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=23;g24=100.64.2.0/24"
add chain=cgnat1_g3 action=jump src-address=100.64.3.0/27 jump-target=cgnat1_b24 comment="mikro:v1;pool=cgnat1;kind=jumpBlock;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=24;g24=100.64.3.0/24"
add chain=cgnat1_g3 action=jump src-address=100.64.3.32/27 jump-target=cgnat1_b25 comment="mikro:v1;pool=cgnat1;kind=jumpBlock;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=25;g24=100.64.3.0/24"
add chain=cgnat1_g3 action=jump src-address=100.64.3.64/27 jump-target=cgnat1_b26 comment="mikro:v1;pool=cgnat1;kind=jumpBlock;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=26;g24=100.64.3.0/24"
add chain=cgnat1_g3 action=jump src-address=100.64.3.96/27 jump-target=cgnat1_b27 comment="mikro:v1;pool=cgnat1;kind=jumpBlock;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=27;g24=100.64.3.0/24"
add chain=cgnat1_g3 action=jump src-address=100.64.3.128/27 jump-target=cgnat1_b28 comment="mikro:v1;pool=cgnat1;kind=jumpBlock;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=28;g24=100.64.3.0/24"
add chain=cgnat1_g3 action=jump src-address=100.64.3.160/27 jump-target=cgnat1_b29 comment="mikro:v1;pool=cgnat1;kind=jumpBlock;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=29;g24=100.64.3.0/24"
add chain=cgnat1_g3 action=jump src-address=100.64.3.192/27 jump-target=cgnat1_b30 comment="mikro:v1;pool=cgnat1;kind=jumpBlock;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=30;g24=100.64.3.0/24"
add chain=cgnat1_g3 action=jump src-address=100.64.3.224/27 jump-target=cgnat1_b31 comment="mikro:v1;pool=cgnat1;kind=jumpBlock;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;blk=31;g24=100.64.3.0/24"
add chain=srcnat action=jump src-address=100.64.0.0/24 jump-target=cgnat1_g0 comment="mikro:v1;pool=cgnat1;kind=jump24;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;g24=100.64.0.0/24"
add chain=srcnat action=jump src-address=100.64.1.0/24 jump-target=cgnat1_g1 comment="mikro:v1;pool=cgnat1;kind=jump24;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;g24=100.64.1.0/24"
add chain=srcnat action=jump src-address=100.64.2.0/24 jump-target=cgnat1_g2 comment="mikro:v1;pool=cgnat1;kind=jump24;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;g24=100.64.2.0/24"
add chain=srcnat action=jump src-address=100.64.3.0/24 jump-target=cgnat1_g3 comment="mikro:v1;pool=cgnat1;kind=jump24;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0;g24=100.64.3.0/24"

/ip route
add dst-address=203.0.113.0/27 blackhole=yes comment="mikro:v1;pool=cgnat1;kind=blackhole;priv=100.64.0.0;pub=203.0.113.0/27;n=32;win=1024-65535;bh=1;nt=0;ft=0"

133 luật, mỗi luật mang một chú thích mikro:.

Đi xa thêm một bước

Script ở trên đúng là thứ ứng dụng ghi ra, kèm cả chú thích. Dán ngay bây giờ, rồi sau này Mikro Manager vẫn nhận ra pool: nó đọc lại những chú thích đó từ router, mở pool bằng chính biểu mẫu này, và khi bạn đổi số máy khách trên mỗi địa chỉ hay dải cổng, nó tính phần khác biệt và chỉ ghi chừng ấy. Nó còn truy ngược một địa chỉ công cộng và cổng nguồn về máy khách phía sau, kiểm tra bảo mật router, và cấp cấu hình WireGuard.

Đọc thêm

Nhận Mikro Manager

Phân phối qua Mac App Store — chạy trong hộp cát, được ký và tự động cập nhật.

Sắp có trên Mac App Store.

Yêu cầu macOS 14 trở lên, và một thiết bị RouterOS v7 đã bật REST API.