Score:1

จะรีเฟรชการหมดเวลาขององค์ประกอบชุดใน nftables ได้อย่างไร

ธง us

ฉันจะรีเฟรชค่าการหมดเวลา/การหมดอายุขององค์ประกอบชุดด้วย nft ก่อนที่องค์ประกอบจะหมดอายุได้อย่างไร

การเพิ่มองค์ประกอบที่มีอยู่ในชุดจะไม่รีเซ็ตค่าการหมดเวลา/การหมดอายุ:

nft เพิ่มองค์ประกอบ ip mytable myset { 10.10.10.1 หมดเวลา 60 วินาที }
#รอ10วิ
nft เพิ่มองค์ประกอบ ip mytable myset { 10.10.10.1 หมดเวลา 60 วินาที หมดอายุ 60 วินาที }
รายการ nft ตั้ง ip mytable myset

ด้วย iptables/ipset ฉันสามารถรีเฟรชการหมดเวลาโดยเพิ่มองค์ประกอบที่มีอยู่:

ipset เพิ่ม myset 10.10.10.1 หมดเวลา 60
#รอ10วิ
ipset เพิ่ม myset 10.10.10.1 - หมดเวลาที่มีอยู่ 60
รายการ ipset myset
Score:2
ธง cl
A.B

ในขณะที่ มีการบันทึกการแทนที่กฎอะตอม:

การแทนที่กฎอะตอม

คุณสามารถใช้ -ฉ ตัวเลือกในการอัปเดตชุดกฎของคุณ:

ไฟล์ %nft -f

มันไม่ได้บันทึกไว้อย่างชัดเจนสำหรับ ธาตุ แทนที่ แต่นั่นเป็นเพียงกรณีของการเปลี่ยนกฎเท่านั้น หนึ่งสามารถลบและเพิ่มกลับองค์ประกอบในการทำธุรกรรมปรมาณูเดียวที่แนะนำด้วย -ฉ: สิ่งนี้จะแทนที่รายการที่เก่ากว่าด้วยรายการที่ใหม่กว่าและเวลาหมดอายุที่อัปเดต โดยไม่ทำให้องค์ประกอบขาดหายไปชั่วคราว

แทนที่จะทำสิ่งต่อไปนี้ ซึ่งไม่ใช่ atomic เพราะระหว่างการเรียกใช้สองครั้งของ เอ็นเอฟทีองค์ประกอบจะไม่มีอยู่ชั่วคราวและกฎที่ขึ้นอยู่กับชุดนี้จะไม่ตรงกันชั่วคราว:

# nft ลบองค์ประกอบ ip mytable myset '{ 10.10.10.1 }'
# nft เพิ่มองค์ประกอบ ip mytable myset '{ 10.10.10.1 หมดเวลา 60 วินาที หมดอายุ 60 วินาที }'

สิ่งนี้ควรทำโดยใช้ -ฉ และไฟล์อินพุต (- ยืนหยัดเพื่อ สเตดิน นับเป็นไฟล์อินพุตที่ถูกต้อง):

# nft -f - <<'EOF'
ลบองค์ประกอบ ip mytable myset { 10.10.10.1 }
เพิ่มองค์ประกอบ ip mytable myset { 10.10.10.1 หมดเวลา 60 วินาที }
อฟ

โดยที่ธาตุจะไม่มีวันหมดไปเพราะเป็นการเปลี่ยนแปลงของอะตอม

เช่นเคยกับเรื่องนี้ เอ็นเอฟที สร้าง ถ้าใครต้องการทำสิ่งนี้โดยไม่จำเป็น โดยไม่ต้องรู้ว่ามีองค์ประกอบอยู่แล้วหรือไม่ และไม่กระทบกับองค์ประกอบอื่น ควรเพิ่ม ลบ และเพิ่มใหม่ เพราะการเพิ่มองค์ประกอบที่มีอยู่แล้วไม่ใช่ข้อผิดพลาด การลบ องค์ประกอบที่ขาดหายไปจะเป็นข้อผิดพลาด:

# nft -f - <<'EOF'
เพิ่มองค์ประกอบ ip mytable myset { 10.10.10.1 }
ลบองค์ประกอบ ip mytable myset { 10.10.10.1 }
เพิ่มองค์ประกอบ ip mytable myset { 10.10.10.1 หมดเวลา 60 วินาที }
อฟ

มันยังคงเป็นธุรกรรมปรมาณูเดียว


หมายเหตุเพิ่มเติม

  • จากเส้นทางแพ็คเก็ต

    เมื่อทำสิ่งนี้จากเส้นทางแพ็กเก็ต จะมีความแตกต่างระหว่าง เพิ่ม @myset ซึ่งจะตั้งค่าการหมดเวลาเฉพาะเมื่อสร้างองค์ประกอบใหม่ แต่จะไม่อัปเดตการหมดเวลาขององค์ประกอบที่มีอยู่แล้ว ทำให้สามารถหมดเวลาเกินระยะเวลาเต็มในภายหลัง และ อัปเดต @myset ซึ่งจะกำหนดเวลาออกในทุกกรณี

  • การอัปเดตกฎอะตอมไม่ได้จำกัดเฉพาะธาตุ แต่สามารถใช้ได้ในระดับใดก็ได้

    ตัวอย่างเช่น สามารถทำได้ในระดับที่ตั้งไว้หากมีองค์ประกอบเดียวที่ต้องดูแล:

    # nft -f - <<'EOF'
    เพิ่มชุด ip mytable myset { พิมพ์ ipv4_addr; หมดเวลาตั้งค่าสถานะ; }
    ลบ set ip mytable myset
    เพิ่มชุด ip mytable myset {
        พิมพ์ ipv4_addr
        หมดเวลาตั้งค่าสถานะ
        องค์ประกอบ = { 127.0.0.1 หมดเวลา 1m }
    }
    อฟ
    

    ตัวอย่างข้างต้นจริง ๆ แล้วน่าจะล้มเหลวเพราะอาจมีกฎที่อ้างอิงถึงชุด ดังนั้นจึงไม่อนุญาตให้ลบออกแม้ในระหว่างการทำธุรกรรม (ใคร ๆ ก็สามารถเขียนใหม่แทนทั้งตารางได้เช่นเดียวกัน เพิ่มตาราง ip mytable, ลบตาราง ip mytable, เพิ่มตาราง ip mytable { ...). หากทราบว่าชุดนั้นมีอยู่ก่อน ให้ล้างชุดก่อนเพิ่มกลับองค์ประกอบเดียวก็เพียงพอแล้ว:

    # nft -f - <<'EOF'
    ฟลัชเซ็ต ip mytable myset
    เพิ่มองค์ประกอบ ip mytable myset { 127.0.0.1 หมดเวลา 1m }
    อฟ
    

แน่นอนว่าสามารถใช้ไฟล์จริงแทนได้ - <<'อีโอเอฟ'...อฟ.

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา