Score:2

ip addr เพิ่ม dev tun1 ท้องถิ่น 192.168.69.0 ระยะไกล 192.168.69.1 หมายถึงอะไร

ธง jp

ฉันพบชุดคำสั่งต่อไปนี้เพื่อเปิดอุปกรณ์รับสัญญาณบน linux ที่ส่งต่อข้อมูลไปยังอินเทอร์เน็ต อย่างไรก็ตาม แพ็กเก็ตจะไม่ถูกส่งต่อกลับไปยังอุปกรณ์รับสัญญาณ

ip tuntap เพิ่มโหมด dev tun1 ผู้ใช้ tun `id -un`
ลิงค์ ip ตั้งค่า dev tun1 ขึ้น
ip addr เพิ่ม dev tun1 ท้องถิ่น 192.168.69.0 ระยะไกล 192.168.69.1
iptables -t filter -I FORWARD -i tun1 -o eth0 -j ยอมรับ
iptables -t filter -I FORWARD -m state --state ESTABLISHED, RELATED -j ยอมรับ
iptables -t nat -I โพสต์ -o eth0 -j MASQUERADE

อะไร ip addr เพิ่ม dev tun1 ท้องถิ่น 192.168.69.0 ระยะไกล 192.168.69.1 หมายถึง? คืออะไร ท้องถิ่น และ ระยะไกล? สิ่งที่อาจจะขาดหายไป?

ไคลเอนต์ของฉันส่ง SYN เซิร์ฟเวอร์ตอบสนองด้วย SYN+ACK แต่ SYN+ACK นี้ไม่ได้ส่งต่อกลับไปยังอุปกรณ์รับสัญญาณ

us flag
อะไรคือสิ่งที่คุณพยายามทำจริง? โทโพโลยีเครือข่ายของคุณคืออะไร?
Nikita Kipriyanov avatar
za flag
อุปกรณ์ Tunnel ไม่ใช่ "Tunnel เครือข่าย" เป็น *อินเทอร์เฟซเสมือน* ของ OSI ระดับ 3 ดังนั้นคุณจึงสามารถแนบโปรแกรมบางอย่างกับมันได้ และแพ็กเก็ตทั้งหมดที่คุณใส่ลงในช่องสัญญาณจะถูกป้อนไปยังโปรแกรมนั้น และโปรแกรมยังสามารถป้อนแพ็กเก็ตไปยังระบบ ดังนั้นมันจึงปรากฏขึ้น ดังออกมาจากอินเตอร์เฟส สิ่งนี้ไม่เกี่ยวข้องกับการขุดอุโมงค์อีกครั้ง มันเป็นเพียง NIC เสมือน ใช่ คุณสามารถสร้างโซลูชันการขุดอุโมงค์ตามสิ่งนี้ได้ แต่มันจะไม่มีประสิทธิภาพเมื่อเทียบกับ ipip หรือ gre tunnel
Nikita Kipriyanov avatar
za flag
@เอ.บี. `tinc` ก็ใช้สิ่งนั้นเช่นกัน แต่เมื่อคุณใช้อย่างใดอย่างหนึ่งคุณไม่จำเป็นต้องเรียกใช้คำสั่งอย่างที่เราเห็นในคำถามนี้
jp flag
@NikitaKipriyanov เป็นเพียงเพื่อการทดสอบ มีอะไรผิดปกติในคำสั่งของฉัน? ฉันต้องการสร้างอุโมงค์อย่างง่ายเพื่อให้สามารถทดสอบกับ userspace tcp/ip stack (smoltcp) ส่งแพ็คเก็ตไปยังโลกและรับมันในอุโมงค์ราวกับว่ามันเป็น VPN เหมือนกับที่ OpenVPN ทำ
Nikita Kipriyanov avatar
za flag
@เอ.บี. อีกครั้ง การใช้ `tun` ไม่ได้หมายความว่าจะมี OpenVPN จริงๆ แล้วผู้ชายคนนี้พูดอย่างชัดเจนว่าเขาไม่ได้ตั้งใจจะใช้ OpenVPN แต่ใช้ smoltcp ซึ่งเป็นไลบรารี่ของ Rust ซึ่งเป็นสแต็กเครือข่ายซอฟต์แวร์ ฉันจะไม่เรียกสัตว์ประหลาดตัวนี้ว่า "อุโมงค์"
A.B avatar
cl flag
A.B
@NikitaKipriyanov โอ้ฉันไม่ได้อ่านว่ามี smoltcp ความผิดฉันเอง
Nikita Kipriyanov avatar
za flag
@GuerlandoOCs ไม่มีอะไรผิดปกติกับคำสั่งของคุณ ฉันเคยเห็นคนที่พยายามเขียนโปรแกรมเครือข่ายรู้พื้นฐานเกี่ยวกับเครือข่ายอยู่แล้ว ดังนั้นฉันจึงต้องการให้แน่ใจว่าคุณรู้ว่าคุณกำลังทำอะไรอยู่
Score:2
ธง za

พูดง่ายๆ ก็คือ คุณสามารถแยกความแตกต่างระหว่างลิงก์สองประเภท (นี่คือการทำให้เข้าใจง่าย แต่เพียงพอสำหรับคำถามนี้):

  • ลิงก์แบบเพียร์ทูเพียร์ โดยที่แต่ละด้านของลิงก์เป็นแบบเพียร์เดียวเพียร์แต่ละคนรู้ว่ามีเพียงเพียร์อื่นที่อยู่เบื้องหลังลิงก์และทุกคนจะถูกกำหนดเส้นทาง ตัวอย่างคือลิงก์อนุกรม (ผ่านโมเด็ม PSTN)
  • ลิงก์การเข้าถึงหลายลิงก์ ซึ่งอาจมีเพียร์อื่นมากกว่าหนึ่งคนอยู่เบื้องหลังลิงก์นั้น มีตัวอย่างมากมาย เช่น อีเธอร์เน็ต WiFi และบางอันที่ล้าสมัย

เมื่อคุณกำหนดค่าที่อยู่ให้กับอินเทอร์เฟซในรูปแบบ (ปกติ) ของ "ที่อยู่และเน็ตมาสก์" ผ่าน ที่อยู่ IP เพิ่ม x.y.z.t/n dev ethคุณทำสิ่งต่อไปนี้เป็นหลัก:

  • บอกเคอร์เนลว่าควรรู้จักไฟล์ x.y.z.t เช่น ของมันเอง ที่อยู่ดังนั้นจึงเพิ่มขอบเขตเส้นทางท้องถิ่นเข้าไป ท้องถิ่น ตารางเส้นทาง
  • บอกเคอร์เนลที่อยู่เช่น x.y.z.00...0เอ·x.y.z.11...1 สามารถเข้าถึงได้โดยตรงหลังลิงก์ ดังนั้นจึงเพิ่มเส้นทางลิงก์ขอบเขตผ่านอินเทอร์เฟซนี้ใน หลัก ตารางเส้นทาง (/น ระบุจำนวนบิตของที่อยู่ทั่วไปสำหรับโฮสต์ทั้งหมดบนเครือข่ายนั้น)
  • บอกเคอร์เนล x.y.z.11...1 เป็นที่อยู่ "ออกอากาศ" ของลิงก์ ดังนั้นมันจึงเพิ่มเส้นทางออกอากาศลงใน ท้องถิ่น ตาราง (และจะพิจารณาแพ็กเก็ตที่ส่งไปยังที่อยู่นั้น นอกเหนือจากที่อยู่ "โหนดส่วนบุคคล" x.y.z.t)

แต่ไม่มี "เครือข่าย" อยู่เบื้องหลังลิงก์เพียร์ทูเพียร์ ไม่มีใครถ่ายทอดให้ อาจมีเพียร์อื่นเพียงคนเดียว เมื่อคุณเพิ่มที่อยู่ในลิงค์ในแบบฟอร์ม ที่อยู่ IP เพิ่มท้องถิ่น x.y.z.t ระยะไกล b.c.d.e dev tunคุณต้องทำสิ่งต่อไปนี้เป็นหลัก:

  • บอกเคอร์เนลที่ควรรู้จัก x.y.z.t เช่น ของมันเอง ที่อยู่ดังนั้นจึงเพิ่มขอบเขตเส้นทางท้องถิ่นเข้าไป ท้องถิ่น ตารางเส้นทาง
  • บอกเคอร์เนลที่อยู่ พ.ศ สามารถเข้าถึงได้โดยตรงผ่านลิงค์นั้น ดังนั้นมันจึงเพิ่มเส้นทางไปยังที่อยู่นั้นผ่านทางอินเทอร์เฟซนี้ไปยัง หลัก ตารางเส้นทาง

เช่น. คำสั่ง ที่อยู่ IP เพิ่มท้องถิ่น 10.0.1.0 ระยะไกล 10.0.1.1 dev tun0 เพียงสร้างเส้นทางต่อไปนี้:

  • ท้องถิ่น 10.0.1.0 dev tun0 โปรโตเคอร์เนลขอบเขตโฮสต์ src 10.0.1.0 (ใน ท้องถิ่น ตาราง)
  • 10.0.1.1 dev tun0 ลิงก์ขอบเขตเคอร์เนลโปรโต src 10.0.1.0 (ใน หลัก ตาราง)

ตรวจสอบตารางเส้นทางก่อนและหลังออกคำสั่ง "เพิ่มที่อยู่ IP" ในทั้งสองกรณี

สังเกตคุณ อาจ เพิ่มการกำหนดค่าสไตล์เพียร์ทูเพียร์ให้กับอินเทอร์เฟซการเข้าถึงหลายรายการและในทางกลับกัน คุณยังสามารถเพิ่มที่อยู่ "/32" เดียวแล้วเพิ่มการกำหนดเส้นทาง "ผ่านอินเทอร์เฟซ" ด้วยมือได้ และนั่นจะทำงานเหมือนกับว่าคุณตั้งค่า netmask หรือที่อยู่ระยะไกลที่มีความหมายในคำสั่ง คุณยังสามารถเพิ่มการกำหนดค่าหลายประเภทลงในอินเทอร์เฟซเดียว และทั้งหมดสามารถทำงานพร้อมกันได้! ดังนั้นอย่าใช้พารามิเตอร์ทั้งหมดเหล่านี้อย่างจริงจังเกินไป ให้คิดว่าพารามิเตอร์เหล่านี้เป็นวิธีเพิ่มเส้นทางที่จำเป็นโดยอัตโนมัติเมื่อคุณกำหนดค่าที่อยู่

jp flag
ดังนั้นหากฉันเข้าใจถูกต้อง `ip addr add dev tun1 local 192.168.69.0 remote 192.168.69.1` ทำให้ที่อยู่ของฉันเป็น `192.168.69.0` ดังนั้นทุกแพ็กเก็ตที่มีที่อยู่นี้เป็นปลายทางจะไปถึง `tun1` และสร้าง `192.168. 69.1` เข้าถึงได้ผ่าน `tun1` ดังนั้นหากต้องการเข้าเว็บไซต์ใด ๆ ต้องทำ `ip addr add dev tun1 local 192.168.69.0 remote 0.0.0.0`?
Nikita Kipriyanov avatar
za flag
ไม่ คุณมีแนวคิดที่ถูกต้อง ดูเหมือนว่าคุณไม่เข้าใจสิ่งที่คุณถามในคำถามของคุณเองด้วยซ้ำ เพราะฉันตอบตรงตามนั้น เตือนฉันว่าทำไมคุณถึงต้องการอินเทอร์เฟซ 'tun' สอดคล้องกับความคิดเห็นนี้อย่างไร? หากคุณต้องการถามคำถามที่ไม่เกี่ยวข้องเพิ่มเติม โปรดถามเป็นคำถามด้วยตนเอง นอกจากนี้ ServerFault ไม่ใช่สถานที่ที่ถูกต้องในการถามคำถามเช่นนี้ SuperUser อาจจะ หากคุณพัฒนาซอฟต์แวร์ StackOverflow หากคำถามของคุณเกี่ยวกับ Linux ให้ไปที่ unix.stackechange.com ที่นี่เราแก้ปัญหาทางธุรกิจ

โพสต์คำตอบ

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