Score:2

กำหนดค่า linux ของฉันเป็นเราเตอร์ จะเปิดใช้งานการส่งต่อพอร์ตด้วย nftables ได้อย่างไร

ธง au
ufk

ฉันกำลังพยายามกำหนดค่า Gentoo Linux เป็นเราเตอร์

นี่คือการกำหนดค่าของฉันจนถึงตอนนี้

WAN NIC คือ enp3s0 และ LAN NIC คือ enp1s0f0

รับการเชื่อมต่อกับ ICMP, พอร์ต tcp 53, 22, 80, 443, 445, 5900 และ udp พอร์ต 53,67,68 จาก LAN

ยอมรับการเชื่อมต่อจากพอร์ต SSH 22 จาก WAN

ใช้งานได้ดี สิ่งที่ฉันทำไม่สำเร็จคือสร้างการส่งต่อพอร์ต

ฉันกำลังพยายามตั้งค่าว่าหากการเชื่อมต่อที่พอร์ต 222 มาจาก WAN ให้ส่งต่อไปยังเครื่องด้วยที่อยู่ IP 192.168.1.2 บนพอร์ต 22 และกฎนี้ไม่ได้ทำให้เกิดข้อผิดพลาด แต่ก็ไม่อนุญาตให้ฉันเชื่อมต่อด้วย

นี่คือการกำหนดค่าของฉัน:

ตัวกรอง ip ตาราง {
    อินพุตลูกโซ่ {
        ประเภท ตัวกรอง เบ็ด ตัวกรองลำดับความสำคัญอินพุต; นโยบายยอมรับ;
        ct state { จัดตั้งขึ้น, ที่เกี่ยวข้อง } ยอมรับ
        iif "lo" ยอมรับ
        iif "enp1s0f0" tcp dport { 22, 53, 80, 443, 445, 5900 } ตัวนับแพ็กเก็ต 0 ไบต์ 0 บันทึกยอมรับ
        iif "enp3s0" tcp dport { 22 } ตัวนับแพ็กเก็ต 0 ไบต์ 0 บันทึกการยอมรับ
        iif "enp1s0f0" udp dport { 53, 67, 68 } ยอมรับ
        iif "enp1s0f0" โปรโตคอล ip icmp ยอมรับ
        ตัวนับแพ็กเก็ต 1 ไบต์ 259 ดรอป
    }

    เอาต์พุตลูกโซ่ {
        ประเภทตัวกรองลำดับความสำคัญของเอาต์พุตของตะขอตัวกรอง; นโยบายยอมรับ;
        ct state { ก่อตั้ง, เกี่ยวข้อง, ใหม่ } ยอมรับ
        iif "lo" ยอมรับ
    }

    ห่วงโซ่ไปข้างหน้า {
        ประเภทตัวกรอง hook ตัวกรองลำดับความสำคัญไปข้างหน้า; นโยบายยอมรับ;
        iif "enp3s0" oif "enp1s0f0" ct state { สร้างแล้ว, เกี่ยวข้อง } ยอมรับ
        iif "enp1s0f0" หรือ "enp3s0" ยอมรับ
        iif "enp3s0" oif "enp1s0f0" ตัวนับแพ็กเก็ต 0 ไบต์ 0 ดรอป
    }

    ห่วงโซ่ postrouting {
        ประเภทตัวกรอง hook postrouting ตัวกรองลำดับความสำคัญ; นโยบายยอมรับ;
    }
}
ตาราง ip แนท {
    ห่วงโซ่ postrouting {
        พิมพ์ nat hook ลำดับความสำคัญหลังการกำหนดเส้นทาง srcnat; นโยบายยอมรับ;
        oifname "enp3s0" สวมหน้ากาก
    }

    การกำหนดเส้นทางลูกโซ่ {
        พิมพ์ nat hook กำหนดลำดับความสำคัญก่อนกำหนด 100; นโยบายยอมรับ;
        iif "enp3s0" tcp dport { 222 } dnat ถึง 192.168.1.2:22 ### <- กฎการส่งต่อพอร์ตที่นี่
    }
}

ฉันจะแก้ไขปัญหานี้ได้อย่างไร

ขอบคุณ.

Score:2
ธง cl
A.B

เมื่อแพ็กเก็ตแรกของโฟลว์ใหม่ (ซึ่งก็คือสถานะใหม่) ข้ามผ่าน แนทเตรียมการล่วงหน้า โซ่, แนท เกิดขึ้นและด้วยปลายทางใหม่แพ็กเก็ตจะถูกกำหนดเส้นทางและข้ามผ่าน กรองไปข้างหน้า โซ่.

จากนั้นกฎนี้ก็ลดลง:

        iif "enp3s0" oif "enp1s0f0" ตัวนับแพ็กเก็ต 0 ไบต์ 0 ดรอป

กฎที่อนุญาตแพ็กเก็ตแรกนี้ (ซึ่งไม่อยู่ใน ที่จัดตั้งขึ้น รัฐ) เป็นสิ่งจำเป็น

สิ่งนี้สามารถแทรกก่อนกฎการดรอปด้วยวิธีที่ไร้เดียงสา:

iif "enp3s0" oif "enp1s0f0" ip daddr 192.168.1.2 tcp dport 22 ยอมรับ

และเนื่องจากโทโพโลยีเฉพาะ: LAN 192.168.1.0/24 ไม่สามารถกำหนดเส้นทางได้ ดังนั้นจึงไม่สามารถเข้าถึงได้ตามค่าเริ่มต้นจากอินเทอร์เน็ต มันอาจจะดีพอ (ในทางเทคนิคแล้วเราเตอร์ hop ตัวถัดไปสามารถโกงและเข้าถึง 192.168.1.2:22 ได้โดยตรงโดยไม่ต้อง แนท). แต่ถ้าระบบไม่ทำอะไรเลย สวมหน้ากาก (และมี LAN ที่กำหนดเส้นทางได้แทน 192.168.1.0/24) สิ่งนี้จะทำให้บริการสามารถเข้าถึงได้โดยตรง

จริงๆ แล้วมีวิธีที่ง่ายกว่าและปลอดภัยกว่า ซึ่งเป็นวิธีที่ใช้ทั่วไปมากกว่าในกรณีที่พอร์ตอื่นๆ ก็ใช้ได้เช่นกัน แนท-ed และทั้งหมดดังกล่าว แนท กฎทั้งหมดต้องได้รับอนุญาต: เพิ่มกฎที่อนุญาต ใดๆ แพ็คเก็ตที่ผ่านก แนท การเปลี่ยนแปลง. มีรายละเอียดมากกว่าในเทียบเท่า iptables-ส่วนขยาย' การแข่งขันคอนแทร็ก:

ดีเอ็นเอท

สถานะเสมือน จับคู่หากปลายทางเดิมแตกต่างจาก ที่มาตอบ.

เพียงแค่ใส่สิ่งนี้เข้าไปแทน กรองไปข้างหน้า ก่อนสุดท้าย หยด กฎ:

ct สถานะ dnat ยอมรับ

หรือให้แม่นยำยิ่งขึ้น:

iif enp3s0 oif enp1s0f0 ct สถานะ dnat ยอมรับ

ถึงแม่นยำมาก:

iif enp3s0 oif enp1s0f0 ct สถานะ ct ใหม่ สถานะ dnat ip daddr 192.168.1.2 tcp dport 22 ยอมรับ

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


หมายเหตุ:

  • ไม่จำเป็นต้องใช้ตารางที่แตกต่างกันสำหรับตะขอประเภทต่างๆ (กรอง และ แนท) ตราบใดที่ยังเป็นครอบครัวเดียวกัน (ไอพี ที่นี่).

    นั่นเป็นนิสัยที่สืบทอดมาจาก iptables ที่อาจจำกัดความเป็นไปได้ ตัวอย่างเช่น ขอบเขตของก ชุด เป็นโต๊ะ โดยใช้ชุดเดียวกันระหว่างก กรอง โซ่และก แนท chain กำหนดให้อยู่ในตารางเดียวกัน (โดยที่ ชุด กำหนดไว้) น่าเศร้าที่ตัวอย่างมากมายแม้แต่จากวิกิก็ยังใช้การตั้งชื่อเลียนแบบ iptables.

  • ในขณะที่มันไม่สำคัญที่นี่ ลำดับความสำคัญทางประวัติศาสตร์สำหรับ แนทเตรียมการล่วงหน้า ไม่ใช่ 100 แต่เป็น -100 (aka ดีสตแนท).

    มันจะสำคัญก็ต่อเมื่อมีโต๊ะอื่นรวมอยู่ด้วย แนทเตรียมการล่วงหน้า โซ่หรือถ้า iptables แนท มีการใช้กฎร่วมกัน (และในกรณีเช่นนี้ขอแนะนำให้ใช้ -101 หรือ -99 แทนที่จะเป็น -100) เพื่อกำหนดว่ากฎใดมีความสำคัญกว่า

โพสต์คำตอบ

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