Khi gói đầu tiên của một luồng mới (do đó ở trạng thái MỚI) đi qua định tuyến tự nhiên chuỗi, không xảy ra và với đích mới, gói được định tuyến và đi qua lọc về phía trước chuỗi.
Sau đó, quy tắc này loại bỏ nó:
gói truy cập iif "enp3s0" oif "enp1s0f0" 0 byte 0 drop
Một quy tắc cho phép gói đầu tiên này (không có trong thành lập bang) là cần thiết.
Điều này có thể được chèn trước quy tắc thả theo cách ngây thơ đầu tiên:
iif "enp3s0" oif "enp1s0f0" ip daddr 192.168.1.2 tcp dport 22 chấp nhận
và do cấu trúc liên kết cụ thể: LAN 192.168.1.0/24 không thể định tuyến được nên không thể truy cập được theo mặc định từ Internet, nó có thể đủ tốt (về mặt kỹ thuật, bộ định tuyến chặng tiếp theo có thể gian lận và truy cập trực tiếp 192.168.1.2:22 mà không cần NAT). Nhưng nếu hệ thống không hoạt động hóa trang (và có một mạng LAN có thể định tuyến thay vì 192.168.1.0/24), điều này sẽ khiến dịch vụ có thể truy cập trực tiếp.
Thực sự có một phương pháp đơn giản và an toàn hơn, cũng chung chung hơn trong trường hợp một số cổng khác cũng không-ed và tất cả như vậy không tất cả các quy tắc đều được phép: thêm một quy tắc cho phép không tí nào gói tin đã trải qua một không chuyển đổi. Nó chi tiết hơn trong tương đương iptables-tiện ích mở rộng' trận đấu conntrack:
ADNT
Trạng thái ảo, khớp nếu đích ban đầu khác với đích
nguồn trả lời.
Thay vào đó, chỉ cần chèn cái này vào lọc về phía trước trước khi cuối cùng rơi vãi quy tắc:
trạng thái ct dnat chấp nhận
hoặc chính xác hơn một chút:
iif enp3s0 oif enp1s0f0 trạng thái ct dnat chấp nhận
lên đến rất chính xác:
iif enp3s0 oif enp1s0f0 trạng thái ct trạng thái ct mới dnat ip Daddr 192.168.1.2 tcp dport 22 chấp nhận
Trạng thái này chỉ có thể xuất hiện do trước đó không quy tắc được thực hiện trên một luồng, vì vậy nó xác thực mục đích: chấp nhận.
Ghi chú:
không cần sử dụng các bảng khác nhau cho các loại móc khác nhau (lọc và tự nhiên) miễn là về cùng một gia đình (ip đây).
Đó là thói quen di truyền từ iptables điều đó có thể hạn chế khả năng. Ví dụ, phạm vi của một bộ là một cái bàn. Sử dụng cùng một bộ giữa một lọc chuỗi và một tự nhiên chuỗi yêu cầu chúng phải ở trong cùng một bảng (trong đó bộ được định nghĩa). Đáng buồn thay, nhiều ví dụ ngay cả từ wiki vẫn sử dụng quy ước đặt tên bắt chước iptables.
trong khi nó không quan trọng ở đây, ưu tiên lịch sử cho định tuyến tự nhiên không phải là 100 mà là -100 (còn gọi là dstnat).
Sẽ chỉ có vấn đề nếu có các bảng khác cũng bao gồm định tuyến tự nhiên chuỗi hoặc nếu iptables tự nhiên các quy tắc đã được sử dụng cùng nhau (và trong trường hợp như vậy, nên sử dụng -101 hoặc -99 thay vì chính xác -100), để xác định quy tắc nào được ưu tiên.