ฉันควรใช้ tap หรือ tun สำหรับ openvpn หรือไม่?


85

อะไรคือความแตกต่างระหว่างการใช้ dev tap และ dev tun สำหรับ openvpn? ฉันรู้ว่าโหมดที่แตกต่างไม่สามารถใช้งานได้ ความแตกต่างทางเทคนิคคืออะไรและอื่น ๆ จากนั้นเพียงแค่ดำเนินการกับเลเยอร์ 2 กับ 3 มีคุณสมบัติด้านประสิทธิภาพที่แตกต่างกันหรือมีระดับค่าใช้จ่ายต่างกัน เลือกโหมดไหนดีกว่า มีฟังก์ชั่นการใช้งานเฉพาะในแต่ละโหมด


กรุณาอธิบายความแตกต่าง? อีเธอร์เน็ตบริดจ์คืออะไรและเหตุใดจึงไม่ดี
Thomaschaaf

คำตอบ:


74

ถ้ามันโอเคที่จะสร้าง vpn บนเลเยอร์ 3 (อีกหนึ่ง hop ระหว่าง subnets) - ไปหา tun

หากคุณต้องการเชื่อมต่อสองอีเธอร์เน็ตในสองตำแหน่งที่แตกต่างกัน - จากนั้นใช้การแตะ ในการตั้งค่าดังกล่าวคุณสามารถมีคอมพิวเตอร์ในเครือข่ายย่อย ip เดียวกัน (เช่น 10.0.0.0/24) ที่ปลายทั้งสองของ VPN และพวกเขาจะสามารถ 'คุย' กันได้โดยตรงโดยไม่มีการเปลี่ยนแปลงตารางเส้นทางของพวกเขา vpn จะทำหน้าที่เหมือนสวิตช์อีเธอร์เน็ต นี่อาจฟังดูเจ๋งและมีประโยชน์ในบางกรณี แต่ฉันอยากจะแนะนำว่าอย่าไปใช้มันถ้าคุณไม่ต้องการมันจริงๆ หากคุณเลือกการตั้งค่าการเชื่อมต่อเลเยอร์ 2 ดังกล่าว - จะมี 'ขยะ' (นั่นคือแพ็คเก็ตออกอากาศ) ไปทั่ว VPN ของคุณ

การใช้ tap คุณจะมีค่าใช้จ่ายเพิ่มขึ้นเล็กน้อย - นอกจากส่วนหัว ip แล้วส่วนหัวอีเธอร์เน็ต38B หรือมากกว่านั้นจะถูกส่งผ่านทางอุโมงค์ (ขึ้นอยู่กับประเภทของการรับส่งข้อมูลของคุณ


24

ฉันเลือก "แตะ" เมื่อตั้งค่า VPN สำหรับเพื่อนที่เป็นเจ้าของธุรกิจขนาดเล็กเนื่องจากสำนักงานของเขาใช้เครื่อง Windows, เครื่องพิมพ์เชิงพาณิชย์และเซิร์ฟเวอร์ไฟล์ Samba บางคนใช้ TCP / IP ล้วนๆบางคนดูเหมือนจะใช้ NetBIOS เท่านั้น (และต้องใช้แพ็กเก็ตออกอากาศอีเธอร์เน็ต) เพื่อสื่อสารและบางอย่างฉันก็ไม่แน่ใจด้วยซ้ำ

ถ้าฉันเลือก "tun" ฉันอาจต้องเผชิญกับบริการที่เสียหายมากมาย - สิ่งต่าง ๆ มากมายที่ใช้งานได้ในขณะที่คุณอยู่ในสำนักงาน แต่จะหยุดเมื่อคุณออกไปนอกสถานที่และแล็ปท็อปของคุณไม่เห็น " อุปกรณ์บนเครือข่าย Ethernet อีกต่อไป

แต่ด้วยการเลือก "แตะ" ฉันบอก VPN เพื่อให้เครื่องระยะไกลรู้สึกเหมือนกับอยู่บน LAN ด้วยแพ็กเก็ตอีเทอร์เน็ตออกอากาศและโปรโตคอลอีเทอร์เน็ตดิบพร้อมใช้งานสำหรับการสื่อสารกับเครื่องพิมพ์และไฟล์เซิร์ฟเวอร์และสำหรับการแสดงเครือข่าย Network Neighborhood มันใช้งานได้ดีและฉันไม่เคยได้รับรายงานของสิ่งที่ไม่ได้ทำงานนอกสถานที่!


15

ฉันมักจะติดตั้งถัง Tap ถูกใช้โดยการเชื่อมต่ออีเทอร์เน็ตใน OpenVPN และนำเสนอระดับความซับซ้อนที่ไม่ได้รับการยอมรับซึ่งไม่คุ้มที่จะรบกวน โดยปกติเมื่อจำเป็นต้องติดตั้ง VPN จำเป็นต้องใช้ตอนนี้และการปรับใช้ที่ซับซ้อนจะไม่เกิดขึ้นอย่างรวดเร็ว

OpenVPN คำถามที่พบบ่อยและHOWTO อีเธอร์เน็ต Bridgingเป็นที่ยอดเยี่ยมทรัพยากรในหัวข้อนี้


9
จากประสบการณ์ของฉัน tun ง่ายต่อการติดตั้ง แต่ไม่รองรับการกำหนดค่าเครือข่ายมากมายดังนั้นคุณจึงพบกับปัญหาเครือข่ายที่แปลกประหลาดมากขึ้น ในทางตรงกันข้ามการแตะการตั้งค่าค่อนข้างซับซ้อนกว่าเล็กน้อย แต่เมื่อคุณทำเสร็จแล้วโดยทั่วไปแล้ว "ใช้งานได้" สำหรับทุกคน
Cerin

8

หากคุณวางแผนที่จะเชื่อมต่ออุปกรณ์มือถือ (iOS หรือ Android) โดยใช้ OpenVPN คุณควรใช้ TUN เนื่องจากOpenVPN ไม่รองรับ TAP ในปัจจุบัน:

ข้อเสีย TAP: ..... ไม่สามารถใช้กับอุปกรณ์ Android หรือ iOS ได้


TAP ได้รับการสนับสนุนบน Android ผ่านแอปของบุคคลที่สาม: ไคลเอนต์ OpenVPN (ผู้พัฒนา: colucci-web.it)
Boo

5

ฉันเริ่มใช้ tun แต่เปลี่ยนเป็น tap เนื่องจากฉันไม่ชอบการใช้ a / 30 subnet สำหรับพีซีแต่ละเครื่อง (ฉันต้องรองรับ Windows) ฉันพบว่าการสิ้นเปลืองและสับสน

จากนั้นฉันค้นพบตัวเลือก "โทโพโลยีซับเน็ต" บนเซิร์ฟเวอร์ ทำงานร่วมกับ 2.1 RCs (ไม่ใช่ 2.0) แต่มันให้ประโยชน์ทั้งหมดของ Tun (ไม่มีการเชื่อม, ประสิทธิภาพ, การกำหนดเส้นทาง, ฯลฯ ) ด้วยความสะดวกสบายของที่อยู่ IP หนึ่งเครื่อง (ต่อเนื่อง) ต่อหนึ่งเครื่อง


5

เพราะฉันพบคำแนะนำง่ายๆที่ยากต่อการมาโดย:

คุณสามารถใช้ TUN ถ้าคุณเพียงแค่ใช้ VPN เพื่อเชื่อมต่อกับอินเทอร์เน็ต

คุณต้องใช้ TAP หากคุณต้องการเชื่อมต่อกับเครือข่ายระยะไกลจริง (เครื่องพิมพ์เดสก์ท็อประยะไกล ฯลฯ )


4

ฉันมีคำถามเดียวกันนี้เมื่อหลายปีก่อนและพยายามอธิบายอย่างตรงไปตรงมา (ซึ่งฉันพบว่าตัวเองขาดทรัพยากรอื่น ๆ ) ในบล็อกของฉัน: OpenVPN Primer

หวังว่าจะช่วยใครซักคน


2
ในขณะที่สิ่งนี้อาจตอบคำถามในทางทฤษฎีมันก็ควรที่จะรวมส่วนที่สำคัญของคำตอบที่นี่และให้ลิงค์สำหรับการอ้างอิง
Mark Henderson

โพสต์ที่ยอดเยี่ยม! ฉันไม่ค่อยอ่านโพสต์ทั้งหมดเช่นนี้ แต่อันนี้ฉันทำ ฉันเห็นด้วยกับมาร์คเฮนเดอร์สัน แต่คุณควรเขียนบทสรุปเล็ก ๆ แล้วใส่ลิงค์หลังจากนั้น
Pierre-Luc Bertrand

4


TUN "rules of thumb" ของฉัน- หากคุณต้องการเข้าถึงทรัพยากรที่เชื่อมต่อโดยตรงกับเครื่องเซิร์ฟเวอร์ OpenVPN ที่ปลายอีกด้านหนึ่งและไม่มีปัญหา Windows ความคิดสร้างสรรค์เล็กน้อยที่นี่สามารถช่วยได้โดยทำให้ทรัพยากร "ปรากฏ" เป็นโลคอลกับเซิร์ฟเวอร์ OpenVPN (ตัวอย่างอาจเป็นการเชื่อมต่อ CUPS ไปยังเครื่องพิมพ์เครือข่ายหรือ Samba ใช้ร่วมกับเครื่องอื่น MOUNTed บนเซิร์ฟเวอร์ OpenVPN)

TAP - หากคุณต้องการเข้าถึงทรัพยากรหลายอย่าง (เครื่องจักรที่เก็บข้อมูลเครื่องพิมพ์อุปกรณ์) ที่เชื่อมต่อผ่านเครือข่ายที่ ส่วนอื่น ๆ อาจต้องใช้ TAP สำหรับแอปพลิเคชั่น Windows บางตัว


ข้อดี:
ปกติ TUN จะ จำกัด การเข้าถึง VPN ไปยังเครื่องเดียว (ที่อยู่ IP) และดังนั้น (น่าจะ) การรักษาความปลอดภัยที่ดีขึ้นผ่านการเชื่อมต่อที่ จำกัด กับเครือข่ายด้านไกล การเชื่อมต่อ TUN จะสร้างภาระน้อยกว่าในอุโมงค์ VPN และในทางกลับกันเครือข่ายที่ห่างไกลเพราะการรับส่งข้อมูลไปยัง / จากที่อยู่ IP เดียวจะข้าม VPN ไปยังอีกฝั่งหนึ่ง ไม่รวมเส้นทาง IP ไปยังสถานีอื่น ๆ ในซับเน็ตดังนั้นการรับส่งข้อมูลจะไม่ถูกส่งข้ามอุโมงค์ VPN และมีการสื่อสารเพียงเล็กน้อยหรือไม่มีเลยนอกจากเซิร์ฟเวอร์ OpenVPN

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

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

"ดีกว่า" และ "แย่ลง" ไม่สามารถนิยามได้หากไม่มีบริบท
(นี่คือคำตอบที่ชื่นชอบของที่ปรึกษา "นั่นขึ้นอยู่กับ ... ")
เฟอร์รารี่ "ดีกว่า" กว่ารถดั๊มหรือไม่? หากคุณกำลังพยายามที่จะไปอย่างรวดเร็วอาจเป็นได้; แต่ถ้าคุณพยายามที่จะดึงของหนักออกมา

ต้องกำหนดข้อ จำกัด เช่น "ต้องการการเข้าถึง" และ "ข้อกำหนดด้านความปลอดภัย" เช่นเดียวกับการกำหนดข้อ จำกัด เช่นปริมาณงานเครือข่ายและข้อ จำกัด ของอุปกรณ์ก่อนที่จะตัดสินใจว่า TUN หรือ TAP นั้นเหมาะสมกับความต้องการของคุณหรือไม่


2

การตั้งค่า TAP แทบจะไม่ต้องใช้งานเพิ่มเติมจากการตั้งค่าบุคคล

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

ความจริงก็คือถ้าคุณไม่ต้องการบทช่วยสอนเพราะคุณรู้ว่าคุณกำลังทำอะไรอยู่การตั้งค่าประปาใช้เวลานานพอ ๆ กับการตั้งค่า tun

ด้วยการแตะมีโซลูชั่นมากมายเกี่ยวกับเครือข่ายย่อยฉันพบว่าตัวเองวิธีที่ง่ายที่สุดคือการใช้เครือข่ายย่อยคลาส B site1 (เครือข่าย 1) ใช้ 172.22.1.0/16 site2 (เครือข่าย 2) ใช้ 172.22.2.0/16 site3 ใช้ 172.22.3.0/16 เป็นต้น

คุณเซ็ตอัพ site1 กับเซิร์ฟเวอร์ oVPN และให้ช่วง IP แก่ไคลเอนต์ 172.22.254.2 - 172.22.254.255/16 เพื่อให้คุณสามารถมีไคลเอนต์กว่า 200 ovpn (ซับเน็ต) แต่ละซับเน็ตสามารถมีไคลเอ็นต์ได้มากกว่า 200 ตัว ทำให้ลูกค้าทั้งหมด 40.000 รายที่คุณสามารถจัดการได้ (oVPN ที่สงสัยสามารถจัดการได้ แต่อย่างที่คุณเห็นการตั้งค่าเครือข่ายย่อยที่เหมาะสมจะช่วยให้คุณมีจำนวนพอเพียงตามที่คุณต้องการ)

คุณใช้การแตะและลูกค้าทั้งหมดอยู่ด้วยกันในเครือข่ายองค์กรขนาดใหญ่

หากแต่ละไซต์มี DHCP ของตัวเองและควรมีคุณต้องตรวจสอบให้แน่ใจว่าใช้ ebtables หรือ iptables หรือ dnsmasq เพื่อบล็อกการกระจาย dhcp เพื่อให้ปลอดภัย อย่างไรก็ตาม ebtables จะทำให้ประสิทธิภาพลดลง การใช้ dnsmasq dhcp-host = 20: a9: 9b: 22: 33: 44, การเพิกเฉยต่อตัวอย่างจะเป็นงานที่ใหญ่มากในการติดตั้งบนเซิร์ฟเวอร์ dhcp ทั้งหมด อย่างไรก็ตามในฮาร์ดแวร์ที่ทันสมัยผลกระทบของ ebtables ไม่ใหญ่ เพียง 1 หรือ 2%

ค่าโสหุ้ยของการแตะที่ประมาณ 32 ถึง Tun นั้นไม่ได้เป็นปัญหามากนัก (อาจอยู่ในเครือข่ายที่ไม่ได้เข้ารหัส) แต่สำหรับเครือข่ายที่เข้ารหัสนั้นมักจะเป็น AES ที่จะทำให้การทำงานช้าลง

ใน wrt3200acm ของฉันสำหรับกรณีที่ไม่ได้เข้ารหัสฉันได้รับ 360Mbps การใช้การเข้ารหัสมันลดลงถึง 54-100Mbps ขึ้นอยู่กับชนิดของการเข้ารหัสที่ฉันเลือก) แต่ openvpn ไม่ทำการเข้ารหัสที่ 1500 และการเข้ารหัสที่ 2 ใน 32 โอเวอร์เฮด แทนที่จะทำการเข้ารหัสแบบ 1 ครั้งบน 1500 + 32overhead แทน

ดังนั้นผลกระทบที่นี่มีเพียงเล็กน้อย

สำหรับฮาร์ดแวร์รุ่นเก่าคุณอาจสังเกตเห็นถึงผลกระทบที่มากขึ้น แต่สำหรับฮาร์ดแวร์ที่ทันสมัยมันลดลงจนสุดจริง ๆ

การเข้ารหัสระหว่างเครื่องเสมือน 2 เครื่องพร้อมการสนับสนุน AES ทำให้ฉัน ovpn ของฉันด้วย TAP ถึง 120-150Mbps

บางรายงานเราเตอร์เฉพาะที่รองรับการเข้ารหัสฮาร์ดแวร์ AES รองรับสูงถึง 400Mbps! เร็วขึ้น 3 เท่าจากนั้น i5-3570k สามารถทำได้ (ซึ่งในระบบทดสอบของฉันไม่สามารถสูงขึ้นได้แล้วที่ 150Mbps ที่ 100% ของการใช้ประโยชน์หลัก 1) ส่วนอื่น ๆ ของฉัน: E3-1231 v3 แล้วก็ประมาณที่ 7% การใช้ CPU 25% ของ openvpn หลักถูกใช้งานถูกนำมาใช้ ดังนั้น E3 น่าจะเพิ่มการเชื่อมต่อได้ 3 ถึง 4 เท่า

ดังนั้นคุณจะมีบางอย่างระหว่าง 360Mbps และ 600Mbps ด้วยการเชื่อมต่อระหว่าง E3-1231 v3 cpu ที่ใช้ tap AES265, auth SHA256 และ ta.key, ใบรับรอง tls-cipher ฉันยังใช้ TLS-DHE-RSA-WITH-AES ที่สูงที่สุด 256 SHA256

หากต้องการชี้เรื่องนี้ด้วยการแตะ: wrt3200acm รับได้มากถึง 70-80mbps ด้วยการเข้ารหัส i5-3570k ได้รับ 120-150 ด้วยการเข้ารหัส E3-1231 v3 ได้รับอย่างน้อย 360Mbps พร้อมการเข้ารหัส (นี่เป็นการสอดแทรกจากการค้นพบของฉันในกรณีที่ 1 และ 2 เพราะฉันไม่มี 2 E3-1231 v3 เพื่อทดสอบด้วย)

สิ่งเหล่านี้เป็นข้อค้นพบของฉันจาก windows ไปยัง windows ที่คัดลอกระหว่าง 2 ไคลเอนต์ใน 2 ซับเน็ตต่าง ๆ ที่เชื่อมต่อกันโดย openvpn TAP


-1

ถ้าอย่างนั้นทำไมคุณได้อะไรมามากแค่ไหน ฉันจะใช้ TAP อย่างชัดเจนด้วยเหตุผลว่าการฝังรากลึกของแพ็กเก็ตดำเนินไปด้วยความหน่วงแฝงและการสูญเสียการส่งข้อมูลน้อยลงซึ่งลดลงด้วยวิธีนี้ อย่างไรก็ตามเฉพาะกับเลเยอร์ 3 เท่านั้นที่ส่งผลกระทบต่อผลการดำเนินงานของ VPN อย่างเห็นได้ชัดโดยเฉพาะด้านการสร้างช่องสัญญาณและ IP ที่ได้รับอนุญาตผ่านและที่อยู่ที่กำหนดได้ การใช้ UDP อาจแนะนำสถานการณ์อื่นที่คุณจะต้องตัดสินใจว่าเป็นเส้นทางที่ดีที่สุดสำหรับคุณ แต่ละเครือข่ายจะแตกต่างกันและต้องการชุดพารามิเตอร์ที่ไม่ซ้ำกัน หวังว่านี่จะช่วยได้


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