Điểm:1

lỗi cấu hình sau khi cập nhật nftables

lá cờ ph

Đã sử dụng nftables trong 2 năm qua với cùng một cấu hình, đã cập nhật chương trình vào một ngày khác và bây giờ nó phàn nàn rằng cấu hình của tôi không hợp lệ mặc dù tất cả các tài liệu vẫn nói đúng. có lẽ ai đó có thể phát hiện ra một biểu tượng giả mạo hoặc một cái gì đó?

đây là cấu hình của tôi:


tuôn ra quy tắc

# `inet` áp dụng cho cả IPv4 và IPv6.
bộ lọc inet bảng {
    chuỗi đầu vào {
        loại móc bộ lọc ưu tiên đầu vào 0;

        # chấp nhận mọi lưu lượng localhost
        iif lo chấp nhận

        # không có lũ ping:
        giao thức ip icmp icmp loại echo-request tốc độ giới hạn trên 10/giây bùng nổ 4 gói bị rớt
        ip6 nexthdr icmpv6 icmpv6 loại echo-request tốc độ giới hạn trên 10/giây bùng nổ 4 gói bị rớt

        # chấp nhận lưu lượng truy cập có nguồn gốc từ chúng tôi
        trạng thái ct được thành lập, chấp nhận liên quan

        # ssh
        tcp dport 22 chấp nhận

        # http/https
        tcp dport 80 chấp nhận
        tcp dport 443 chấp nhận

        # tftp/netboot
        udp dport 4011 chấp nhận
        chấp nhận udp dport 67
        tcp dport 69 chấp nhận
        chấp nhận udp dport 69

        # người nghe
        tcp dport 8080 chấp nhận
        tcp dport 4343 chấp nhận

        # smb
        tcp dport 139 chấp nhận
        tcp dport 445 chấp nhận
        udp dport 137 chấp nhận
        udp dport 138 chấp nhận

        #mc
        tcp dport 25565 chấp nhận

        # đếm và giảm bất kỳ lưu lượng truy cập nào khác
        truy cập thả
    }

    đầu ra chuỗi {
        đầu ra móc lọc loại ưu tiên 0;
        chính sách chấp nhận;
    }

    chuỗi về phía trước {
        loại bộ lọc hook ưu tiên về phía trước 0;
        nft add rule inet filter forward ct status dnat accept;
        giảm chính sách;
    }
}

và lỗi khi bắt đầu:

Đang khởi động nftables...
/etc/nftables.conf:57:6-8: Lỗi: lỗi cú pháp, thêm không mong muốn
        nft add rule inet filter forward ct status dnat accept;
            ^^^
nftables.service: Quá trình chính đã thoát, mã=đã thoát, trạng thái=1/THẤT BẠI
nftables.service: Không thành công với kết quả 'exit-code'.
Không khởi động được nftables.
Điểm:0
lá cờ cl
A.B

Đây là bên trong một nftables kịch bản tải với lệnh nft -f. Các nft từ không có ý nghĩa bên trong và không nên xuất hiện. Nhưng có 1/2 vấn đề khác ở cùng một nơi. Vì vậy, hãy xem:

Xung quanh dòng nft lệnh phàn nàn có:

   chuỗi về phía trước {
       loại bộ lọc hook ưu tiên về phía trước 0;
       nft add rule inet filter forward ct status dnat accept;
       giảm chính sách;
   }
  • nft bị gỡ bỏ,

  • đã ở trong một bộ lọc inet về phía trước (chuỗi) khối

    Cho nên thêm bộ lọc inet quy tắc về phía trước cũng phải được loại bỏ. Trên thực tế ; là không cần thiết vì có một dòng mới sau.

           trạng thái ct dnat chấp nhận
    
  • giảm chính sách; phải được đặt với định nghĩa chuỗi cơ sở

    Lần này với sự bắt buộc của nó ; một phần của cú pháp. các chính sách từ khóa là một phần của chuỗi Định nghĩa, không phải là một phần của quy tắc Định nghĩa. Mặc dù điều này dường như hiện được chấp nhận tách biệt khỏi định nghĩa chuỗi cơ sở của nó theo các quy tắc giữa, nhưng đó không phải là điều cần dựa vào: điều này có thể thay đổi trong bản phát hành sau này.

    Nhận xét tương tự áp dụng cho đầu ra chuỗi: không tách rời chính sách chấp nhận; từ định nghĩa chuỗi cơ sở của nó để sau này bạn sẽ không chèn nhầm các quy tắc vào giữa.

Các phía trước chuỗi cuối cùng nên được thay thế bằng:

    chuỗi về phía trước {
        loại bộ lọc hook ưu tiên về phía trước 0; giảm chính sách;
        trạng thái ct dnat chấp nhận
    }

Cú pháp đúng, nhưng không thực sự thú vị, là xác định quy tắc không nằm trong khối, mà hoàn toàn nằm ngoài cấu trúc, ở cuối tập lệnh như thế này:

    chuỗi về phía trước {
        loại bộ lọc hook ưu tiên về phía trước 0; giảm chính sách;
    }
}
thêm quy tắc bộ lọc inet chuyển tiếp trạng thái ct dnat chấp nhận

Dù sao thì bộ quy tắc danh sách nft sau đó sẽ hiển thị nó trở lại như trước trong bộ lọc inet về phía trước khối chuỗi.


Ghi chú:

  • trong khi nó ổn để sử dụng giao thức ip icmp, nó không ổn để sử dụng ip6 nexthdr ipv6-icmp

    lý do là trái ngược với IPv4 trong đó giao thức trong tiêu đề IPv4 luôn là giao thức lớp 4, của IPv6 tiêu đề tiếp theo không phải lúc nào cũng là tiêu đề lớp 4 (icmp, udp, tcp...): thay vào đó, nó có thể là một Tiêu đề mở rộng xuất hiện giữa tiêu đề IPv6 và tiêu đề lớp 4 (cuối cùng). Trong trường hợp này, quy tắc sẽ không khớp.

    Hệ điều hành đã xác định gói này thuộc về giao thức lớp 4 nào, vì vậy thông tin có sẵn dưới dạng thông tin meta thay vì thông tin nội dung gói: meta l4proto ipv6-icmp.

    Đây cũng là tài liệu trong trang người đàn ông:

    Biểu thức này đề cập đến các trường tiêu đề ipv6. Thận trọng khi sử dụng ip6 nexthdr, giá trị chỉ đề cập đến tiêu đề tiếp theo, tức là ip6 nexthdr tcp sẽ chỉ khớp nếu gói ipv6 không chứa bất kỳ tiêu đề mở rộng. Các gói bị phân mảnh hoặc ví dụ: chứa một tiêu đề mở rộng định tuyến sẽ không được khớp. Vui lòng sử dụng meta l4proto nếu bạn muốn khớp tiêu đề truyền tải thực và bỏ qua bất kỳ thay vào đó là các tiêu đề mở rộng bổ sung.

    Nhưng trên thực tế, vì cùng một dòng có bao gồm một loại icmpv6 ... dòng, điều này đã lọc giao thức lớp 4 để phù hợp với ICMPv6, đồng thời việc sử dụng ICMPv6 hoàn toàn đặt giao thức lớp 3 để phù hợp với IPv6: không có gì là cần thiết để làm cho nó đúng.

    Tương tự như vậy, dòng trước có thể làm mà không cần giao thức ip icmp vì những lý do tương tự (nhưng hành vi hiện tại của nó vẫn ổn).

    Dòng:

            ip6 nexthdr icmpv6 icmpv6 loại echo-request tốc độ giới hạn trên 10/giây bùng nổ 4 gói bị rớt
    

    phải được thay thế đơn giản bằng:

            tốc độ giới hạn yêu cầu tiếng vang loại icmpv6 trên 10/giây bùng nổ 4 gói bị rớt
    

    (không cần chuẩn bị trước meta nfproto ipv6 meta l4proto icmpv6 )

  • TFTP

    • TFTP chỉ sử dụng UDP

      Cổng TCP 69 không bao giờ được sử dụng nên không yêu cầu quy tắc cho phép.

    • TFTP và tường lửa trạng thái

      TFTP là một giao thức khó như FTP đối với tường lửa. Sau truy vấn ban đầu, bản thân quá trình truyền dữ liệu không sử dụng cổng UDP 69 ở bất kỳ đâu nữa. Sử dụng đầy đủ các Trình trợ giúp theo dõi TFTP với các quy tắc bổ sung (sẽ tự động tải nf_conntrack_tftp mô-đun hạt nhân) có thể cần thiết, trừ khi cài đặt sysctl không dùng nữa net.netfilter.nf_conntrack_helper đã được kích hoạt trở lại.

      Điều này thực sự sẽ trở nên lạc đề để giải quyết vấn đề này ở đây. Xem phần đầu (chỉ) câu trả lời của tôi cho CentOS 8 làm bộ định tuyến NAT với nft và tường lửa - làm cách nào để vượt qua TFTP? để có một bộ quy tắc TFTP mẫu có thể được sao chép để thay thế Ví dụ FTP trong nftables wiki.

  • các quy tắc giống hệt nhau chỉ với các giá trị cổng khác nhau có thể được nhân tố hóa bằng cách sử dụng bộ ẩn danh. nftables phiên bản >= 1.0.2 thậm chí còn có -o (tối ưu hóa) tùy chọn để thử và làm điều này tự động.

PetNoire avatar
lá cờ ph
vậy tại sao nó hoạt động hoàn hảo vào ngày trước khi đăng. tôi cũng đã nhận được câu trả lời chi tiết nhất ở đây, id nhấn vào mũi tên lên nếu trang web này cho phép tôi làm bất cứ điều gì
A.B avatar
lá cờ cl
A.B
@PetNoire Không thể khác trước đây, nhưng đã cho biết những gì phải làm. Nếu bạn nghĩ rằng điều này giải quyết được vấn đề của mình, bạn vẫn có thể đánh dấu câu trả lời này là câu trả lời được chấp nhận để cảm ơn tôi.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.