เคอร์เนลการส่งต่อไอพีคืออะไร?


70

ฉันเห็นในหลายบล็อกโดยใช้คำสั่งนี้เพื่อเปิดใช้งานการส่งต่อ IP ในขณะที่ใช้เครื่องมือรักษาความปลอดภัยเครือข่าย / การดมกลิ่นบน linux

echo 1 > /proc/sys/net/ipv4/ip_forward

ใครสามารถอธิบายฉันในแง่คนธรรมดาคำสั่งนี้ทำอะไรเป็นหลัก? มันเปลี่ยนระบบของคุณเป็นเราเตอร์หรือไม่?


1
ไฟล์ python เพื่อเปิดใช้งานและปิดการใช้งาน portforwarding gist.github.com/addminuse/7747903cd420b15f17e0

คำตอบ:


77

"IP forwarding" เป็นคำพ้องสำหรับ "routing" มันถูกเรียกว่า "การส่งต่อเคอร์เนล IP" เพราะมันเป็นคุณสมบัติของเคอร์เนลลินุกซ์

เราเตอร์มีอินเตอร์เฟสเครือข่ายหลายตัว หากทราฟฟิกมาในอินเทอร์เฟซหนึ่งที่ตรงกับซับเน็ตของอินเทอร์เฟซเครือข่ายอื่นเราเตอร์จะส่งต่อทราฟฟิกนั้นไปยังอินเทอร์เฟซเครือข่ายอื่น

สมมุติว่าคุณมี NIC สองตัวหนึ่งตัว (NIC 1) จะอยู่ที่ 192.168.2.1/24 และอีกอัน (NIC 2) คือ 192.168.3.1/24 หากเปิดใช้งานการส่งต่อและแพ็คเก็ตมาใน NIC 1 ด้วย "ที่อยู่ปลายทาง" ที่ 192.168.3.8 เราเตอร์จะส่งแพ็กเก็ตนั้นซ้ำจาก NIC 2

เป็นเรื่องปกติสำหรับเราเตอร์ที่ทำงานเป็นเกตเวย์ไปยังอินเทอร์เน็ตเพื่อให้มีเส้นทางเริ่มต้นโดยการรับส่งข้อมูลใด ๆ ที่ไม่ตรงกับ NIC ใด ๆ จะผ่าน NIC ของเส้นทางเริ่มต้น ดังนั้นในตัวอย่างข้างต้นหากคุณมีการเชื่อมต่ออินเทอร์เน็ตบน NIC 2 คุณจะต้องตั้งค่า NIC 2 เป็นเส้นทางเริ่มต้นของคุณจากนั้นการรับส่งข้อมูลใด ๆ ที่เข้ามาจาก NIC 1 ที่ไม่ได้กำหนดไว้สำหรับสิ่งที่ 192.168.2.0/24 ผ่าน NIC 2. หวังว่าจะมีเราเตอร์อื่นที่ผ่าน NIC 2 ที่สามารถกำหนดเส้นทางต่อไปได้ (ในกรณีของอินเทอร์เน็ตการกระโดดต่อไปจะเป็นเราเตอร์ของ ISP ของคุณและจากนั้นเราเตอร์ของผู้ให้บริการต้นน้ำเป็นต้น)

การเปิดใช้งานip_forwardจะบอกระบบ Linux ของคุณให้ทำสิ่งนี้ เพื่อให้มีความหมายคุณจำเป็นต้องมีเครือข่ายสองอินเทอร์เฟซ (การ์ด NIC แบบมีสายใด ๆ , การ์ด Wifi หรือชิปเซ็ต, ลิงก์ PPP ผ่านโมเด็ม 56k หรือซีเรียลเป็นต้น)

เมื่อทำการกำหนดเส้นทางความปลอดภัยเป็นสิ่งสำคัญและนั่นคือสิ่งที่แพ็กเก็ตตัวกรองของ Linux iptablesเข้ามาเกี่ยวข้อง ดังนั้นคุณจะต้องiptablesกำหนดค่าให้สอดคล้องกับความต้องการของคุณ

โปรดทราบว่าการเปิดใช้งานการส่งต่อโดยiptablesปิดการใช้งานและ / หรือไม่ใช้ไฟร์วอลล์และการรักษาความปลอดภัยในบัญชีอาจทำให้คุณเปิดช่องโหว่ได้หาก NICs หนึ่งกำลังเผชิญกับอินเทอร์เน็ตหรือเครือข่ายย่อยที่คุณไม่สามารถควบคุมได้


2
ถูกต้องคุณจะต้องทำ NAT ถ้า NIC 2 เป็น IP ส่วนตัว Linux สามารถทำ NAT ได้เป็นอย่างดีและiptablesเป็นวิธีการตั้งค่า
LawrenceC

จำเป็นต้องมี NAT สำหรับข้อมูลที่ไปจาก NIC 2 ถึง NIC 1 หรือไม่
GutenYe

2
โดยทั่วไป NAT จะทำงานจาก LAN ไปยัง WAN ดังนั้นหาก NIC 2 มี IP ส่วนตัวและ NIC 1 มีสาธารณะ 1 คุณต้องมี NAT โดยเฉพาะอินเตอร์เฟซที่ใช้ Internet หันหน้าไปทาง (NIC 1 ต่อด้านบน) ต้องมีMASQUERADEการปกครองในiptables's POSTROUTINGในห่วงโซ่ที่จะทำอย่างนั้น ดูrevsys.com/writings/quicktips/nat.htmlและi.stack.imgur.com/rzz83.png
LawrenceC

พูดง่ายๆว่ามันจะถูกต้องไหมถ้าฉันบอกว่าการเปิดใช้งานการส่งต่อ IP หมายถึงการทำให้เครื่องสามารถส่งแพ็กเก็ตจาก NIC หนึ่งไปยังอีก NIC ของมันได้หรือไม่ นอกจากนี้จะเป็นจริงหรือไม่ถ้าฉันบอกว่าการเปิดใช้งานการส่งต่อ IP ไม่จำเป็นต้องใช้กับเครื่องที่มี IP / NIC เดียว
Sree

1
@ultrasawblade ในกรณีของการส่งต่อ IP ที่เปิดใช้งานและมีการเชื่อมต่ออินเทอร์เน็ตบน NIC 2 และเป็นเส้นทางเริ่มต้นหากได้รับแพ็กเก็ตปลายทางสำหรับ 192.168.2.2 จาก NIC 1 เราเตอร์จะทำอะไร
bobo

3

เมื่อเปิดใช้งาน "การส่งต่อ IP" ทำให้เครื่อง Linux สามารถรับแพ็กเก็ตขาเข้าและส่งต่อได้ เครื่องลีนุกซ์ที่ทำหน้าที่เป็นโฮสต์ปกติไม่จำเป็นต้องเปิดใช้งานการส่งต่อ IP, เพราะมันเพิ่งสร้างและรับทราฟฟิก IP สำหรับวัตถุประสงค์ของตัวเอง (เช่น, วัตถุประสงค์ของผู้ใช้)

อย่างไรก็ตามมีบางกรณีที่การส่งต่อ IP มีประโยชน์: 1. เราต้องการให้เครื่องของเราทำหน้าที่เป็นเราเตอร์รับแพ็กเก็ตจากโฮสต์อื่น ๆ และกำหนดเส้นทางไปยังปลายทาง 2. เราเป็นคนเลวและเราต้องการเลียนแบบเครื่องอื่นในแบบที่เรียกว่า " การโจมตีคนกลางคน " ในกรณีนี้เราต้องการสกัดกั้นและดูการจราจรทั้งหมดที่ส่งไปยังเหยื่อ แต่เราต้องการส่งต่อการรับส่งข้อมูลนี้ให้กับเธอด้วยเพื่อที่เธอจะไม่ "รับรู้" การมีอยู่ของเรา

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.