คุณมีความแตกต่างระหว่าง SNAT/สวมหน้ากาก
และ สพท./กทท
. มันไม่ได้อยู่ที่นั่น
ใน Linux มีกฎ NAT แบบไดนามิกอยู่สองประเภท ซึ่งทั้งสองอย่างนี้เรียกว่า "NAPT":
- NAT ต้นทางซึ่งตั้งใจที่จะคงที่อยู่ปลายทางไว้เหมือนเดิมและเปลี่ยนแปลงเฉพาะ แหล่งที่มา ที่อยู่. บางครั้งมัน จะ เปลี่ยนพอร์ตต้นทางด้วย ตัวอย่างเช่น หากตารางการติดตามการเชื่อมต่อมีเรกคอร์ดที่มีข้อมูลเฉพาะนี้อยู่แล้ว (โปรโตคอล, src-addr, src-port, dst-addr, dst-port) ทูเพิล (src-addr และ src-port อยู่หลังการแปล) เพื่อให้แยกแยะได้ว่าอันไหนคืออันไหน การแปลใหม่ต้องใช้ src-พอร์ตอื่น (เพราะนี่คือระดับความเป็นอิสระเพียงอย่างเดียว) ดังนั้น "NAPT" จึงเกิดขึ้นอย่างหลีกเลี่ยงไม่ได้ ตัวอย่างของกฎประเภท SNAT ได้แก่
สแนท
และ สวมหน้ากาก
. ความแตกต่างระหว่างพวกเขาคือคุณต้องระบุด้วย SNAT ในกฎ แอดเดรสใดที่จะแปลเป็น (และอาจเป็นช่วงของพอร์ตที่จะใช้) ในขณะที่ MASQUERADE จะทำการเลือกเอง โดยพิจารณาจากอินเทอร์เฟซที่แพ็กเก็ตถูกกำหนดให้ส่งออก ทั้งคู่จะถูกติดตั้งลงใน โพสต์
chain หลังจากการประมวลผลอื่นๆ ส่วนใหญ่เกิดขึ้น รวมทั้งการกำหนดเส้นทางของแพ็กเก็ต กฎประเภทนี้ใช้เพื่ออนุญาตให้คอมพิวเตอร์หลายเครื่องซ่อนอยู่หลังที่อยู่ IP ทางออกเดียว เช่น เพื่อเข้าถึงอินเทอร์เน็ตสำหรับ LAN เป็นต้น ซึ่งจะรวมถึงผู้ใช้ VPN ด้วย หากคุณต้องการเข้าถึงอินเทอร์เน็ตผ่าน VPN
- NAT ปลายทาง ซึ่งจะปล่อยที่อยู่ต้นทางไว้ตามเดิมและอัปเดตเฉพาะ ปลายทาง ที่อยู่ และถ้าคุณกำหนดค่าพอร์ตปลายทาง ดังนั้นนี่คือกฎ "NAPT" ด้วย กฎประเภทนี้คือ
ดีเอ็นเอท
, เปลี่ยนเส้นทาง
, คลัสเตอร์ไอพี
และอาจจะอื่นๆ ฉันจำไม่ได้ทั้งหมด สิ่งเหล่านี้ถูกติดตั้งลงใน การเตรียมการ
เชน เนื่องจากโดยปกติการตัดสินใจกำหนดเส้นทางควรเปลี่ยนแปลงภายใต้อิทธิพลของกฎ แพ็กเก็ตซึ่งแต่เดิมกำหนดปลายทางไปยังเครื่องเอง (มีที่อยู่เป็นปลายทาง) และจะต้องผ่าน ป้อนข้อมูล
และถึงกระบวนการในท้องถิ่นบางอย่าง กำลังถูกแปลแทน และหลังจากข้ามผ่าน ซึ่งไปข้างหน้า
ห่วงโซ่จะถูกส่งต่อไปยังระบบอื่น ๆ หรือในทางกลับกัน จะไปที่ไหน INPUT หรือ FORWARD คือการตัดสินใจกำหนดเส้นทางที่เราต้องเปลี่ยนตามกฎ กฎประเภทนี้ใช้เพื่อเข้าถึงระบบภายในบางส่วนจากอินเทอร์เน็ต
บางครั้งโดยวิธีการ ทั้งสอง อาจใช้กฎสำหรับแพ็กเก็ตเดียว (และการเชื่อมต่อ) นี่เป็นกรณีพิเศษ แต่มีประโยชน์ถ้าคุณต้องการแพ็กเก็ตจากระบบภายนอก (ดังนั้น DNAT จึงต้องใช้ใน PREROUTING) เพื่อให้ดูเหมือนว่ามาจากที่อยู่ภายใน (ซึ่ง SNAT ใช้ใน POSTROUTING)
ใน Linux ยังมีกฎประเภท NAT แบบคงที่เช่น เน็ตแมป
ซึ่งค่อนข้างพิเศษและไม่ค่อยได้ใช้ ฉันสงสัยว่าคุณกำลังพูดถึงเรื่องนี้และคุณเคยเห็นวิธีการใด ๆ ที่กล่าวถึงกฎประเภทนี้
ลีนุกซ์ทำให้ ไม่มีความแตกต่างอย่างแน่นอน ระหว่างที่อยู่ส่วนตัว (RFC1918) และที่อยู่สาธารณะ คุณสามารถ NAT ซับเน็ตสาธารณะของคุณได้หากต้องการ (แต่จะเป็นการเสียที่อยู่) คุณสามารถปล่อยให้ IP ส่วนตัวไม่มีการแปล (แต่โดยปกติแล้วจะทำให้ไม่มีการเชื่อมต่ออินเทอร์เน็ตสำหรับพวกเขา)
VPN ไม่มีอะไรมากไปกว่าอินเทอร์เฟซเครือข่ายเพิ่มเติมในเครื่องและควรได้รับการปฏิบัติเช่นนี้ ดังนั้น คุณจึงได้รับอนุญาตให้ใช้ที่อยู่สาธารณะสำหรับ VPN หากคุณมี ตัวอย่างเช่น ฉันอาจมีซับเน็ต /29 บางส่วนที่เราเตอร์ VPN กำหนดเส้นทางและตั้งค่า OpenVPN ดังนั้นซับเน็ตสาธารณะทั้งหมดนี้จะเป็นเครือข่าย VPN ของฉัน! แม้ว่าตัวอย่าง OpenVPN จะดูประดิษฐ์ แต่ WireGuard ก็เป็นเช่นนั้น มาก มีแนวโน้มที่จะกำหนดค่าเช่นนั้น ตัวอย่างเช่น โซลูชันเนมสเปซใหม่ อนุญาตให้ wireguard เป็นอินเทอร์เฟซเดียวในระบบ หากมีข้อกำหนดสำหรับระบบที่จะมี IP สาธารณะโดยตรง (ฉันจะไม่พูดถึงสาเหตุใดๆ ที่อาจมาจากข้อกำหนดนี้) ท้ายที่สุดคุณจะต้องใช้ IP สาธารณะภายใน VPN อย่างหลีกเลี่ยงไม่ได้! เป็นไปได้มากว่าไม่มี NAT สำหรับพวกเขา