กำหนดเส้นทางปริมาณการใช้งานทั้งหมดผ่าน VPN บน Ubuntu Linux


13

หลังจากใช้เวลาไปกับการแก้ไขปัญหาหลายชั่วโมงแล้วให้ทำการสืบค้นโซลูชันที่เป็นไปได้ในเว็บไซต์นี้และอื่น ๆ และฉันก็ลาออกเพื่อขอคำแนะนำจากนักพนันของฉัน ฉันกำลังทำงานเพื่อกำหนดเส้นทางการรับส่งข้อมูลเครือข่ายทั้งหมดบน Ubuntu ผ่าน Cisco VPN ที่มหาวิทยาลัย ใช้ผู้จัดการเครือข่ายในตัวหรือ vpnc ฉันสามารถสร้างการเชื่อมต่อกับ VPN ได้สำเร็จและสามารถกำหนดเส้นทางการรับส่งข้อมูลไปยัง IP ของมหาวิทยาลัยใด ๆ ผ่าน VPN อย่างไรก็ตามนอกเหนือจากช่วง IP เฉพาะเหล่านั้นฉันไม่สามารถคิดเส้นทางใด ๆ ซึ่งจะแมปทราฟฟิกเครือข่ายทั้งหมดผ่าน VPN ได้สำเร็จ

จนถึงตอนนี้ฉันได้พยายาม:

route เพิ่ม -net 0.0.0.0 gw homeportal dev tun0
route เพิ่ม -net 0.0.0.0 tun0
route เพิ่ม -net 0.0.0.0 gw 128.122.252.77 dev tun0
route เพิ่ม -net 0.0.0.0 gw 128.122.252.77 dev eth0
iptables -A ไปข้างหน้า -o tun0 -j ACCEPT
iptables -A ไปข้างหน้า -i tun0 -j ACCEPT
iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE

และอีกหลายสิ่งที่โง่เง่าไม่มีประสิทธิภาพสิ่งที่ฉันจำไม่ได้ดีพอที่จะถอดความได้อย่างแม่นยำ

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

Edit-

นี่คือผลลัพธ์ของip route showหลังจากเริ่มการเชื่อมต่อ VPN กับ VPNC:

เริ่มต้นผ่าน 192.168.1.254 dev eth0 proto คงที่ 
10.0.0.0/8 เชื่อมโยงขอบเขต dev tun0 
91.230.41.0/24 การเชื่อมโยงขอบเขต dev tun0 
การเชื่อมโยงขอบเขต Tun0 128.122.0.0/16 dev tun0 
128.122.252.68 ผ่าน 192.168.1.254 dev eth0 src 192.168.1.32 
128.122.253.46 การเชื่อมโยงขอบเขต dev tun0 
128.122.253.79 การเชื่อมโยงขอบเขต dev tun0 
172.16.0.0/12 การเชื่อมโยงขอบเขต dev tun0 
192.168.0.0/16 การเชื่อมโยงขอบเขต dev tun0 
192.168.1.0/24 dev eth0 การเชื่อมโยงเคอร์เนลขอบเขต src 192.168.1.32 เมตริก 1 
193.175.54.0/24 การเชื่อมโยงขอบเขต dev tun0 
193.205.158.0/25 การเชื่อมโยงขอบเขต dev tun0 
193.206.104.0/24 การเชื่อมโยงขอบเขต dev tun0 
195.113.94.0/24 การเชื่อมโยงขอบเขต dev tun0 
203.126.200.0/24 การเชื่อมโยงขอบเขต dev tun0 
203.174.165.128/25 การเชื่อมโยงขอบเขต dev tun0 
212.219.93.0/24 การเชื่อมโยงขอบเขต dev tun0 
216.165.0.0/17 การเชื่อมโยงขอบเขต dev tun0

ข้อมูลมากกว่านี้-

ฉันประสบความสำเร็จในการกำหนดเส้นทางการรับส่งข้อมูลผ่าน VPN นี้ใน MS Windows ผ่านทางไคลเอนต์ Cisco AnyConnect ด้วยการกำหนดค่าเริ่มต้น นี่คือลักษณะของตารางเส้นทางเมื่อไคลเอนต์ AnyConnect ทำงาน (นี่คือคอมพิวเตอร์เครื่องอื่นที่อยู่หลังเราเตอร์เดียวกันที่ 192.168.1.254)

ตารางเส้นทาง IPv4
================================================== =========================
เส้นทางที่ใช้งาน:
เครือข่ายปลายทาง Netmask Gateway Interface Interface
          0.0.0.0 0.0.0.0 192.168.1.254 192.168.1.13 30
         10.0.0.0 255.0.0.0 192.168.128.1 192.168.128.197 2
      91.230.41.0 255.255.255.0 192.168.128.1 192.168.128.197 2
        127.0.0.0 255.0.0.0 On-link 127.0.0.1 306
        127.0.0.1 255.255.255.255 On-link 127.0.0.1 306
  127.255.255.255 255.255.255.255 On-link 127.0.0.1 306
      128.122.0.0 255.255.0.0 192.168.128.1 192.168.128.197 2
   128.122.252.68 255.255.255.255 192.168.1.254 192.168.1.13 31
       172.16.0.0 255.240.0.0 192.168.128.1 192.168.128.197 2
      192.168.0.0 255.255.0.0 192.168.128.1 192.168.128.197 2
      192.168.1.0 255.255.255.0 แบบออนไลน์ 192.168.1.13 286
     192.168.1.13 255.255.255.255 On-link 192.168.1.13 286
    192.168.1.254 255.255.255.255 On-link 192.168.1.13 31
    192.168.1.255 255.255.255.255 On-link 192.168.1.13 286
     192.168.31.0 255.255.255.0 แบบออนไลน์ 192.168.31.1 276
     192.168.31.1 255.255.255.255 On-link 192.168.31.1 276
   192.168.31.255 255.255.255.255 On-link 192.168.31.1 276
    192.168.128.0 255.255.255.0 ออนลิงค์ 192.168.128.197 257
  192.168.128.197 255.255.255.255 On-link 192.168.128.197 257
  192.168.128.255 255.255.255.255 On-link 192.168.128.197 257
    192.168.203.0 255.255.255.0 On-link 192.168.203.1 276
    192.168.203.1 255.255.255.255 On-link 192.168.203.1 276
  192.168.203.255 255.255.255.255 On-link 192.168.203.1 276
     193.175.54.0 255.255.255.0 192.168.128.1 192.168.128.197 2
    193.205.158.0 255.255.255.128 192.168.128.1 192.168.128.197 2
    193.206.104.0 255.255.255.0 192.168.128.1 192.168.128.197 2
     195.113.94.0 255.255.255.0 192.168.128.1 192.168.128.197 2
    203.126.200.0 255.255.255.0 192.168.128.1 192.168.128.197 2
  203.174.165.128 255.255.255.128 192.168.128.1 192.168.128.197 2
     212.219.93.0 255.255.255.0 192.168.128.1 192.168.128.197 2
      216.165.0.0 255.255.128.0 192.168.128.1 192.168.128.197 2
        224.0.0.0 240.0.0.0 On-link 127.0.0.1 306
        224.0.0.0 240.0.0.0 On-link 192.168.1.13 286
        224.0.0.0 240.0.0.0 On-link 192.168.203.1 276
        224.0.0.0 240.0.0.0 On-link 192.168.31.1 276
        224.0.0.0 240.0.0.0 บนลิงก์ 192.168.128.197 10000
  255.255.255.255 255.255.255.255 On-link 127.0.0.1 306
  255.255.255.255 255.255.255.255 On-link 192.168.1.13 286
  255.255.255.255 255.255.255.255 On-link 192.168.203.1 276
  255.255.255.255 255.255.255.255 On-link 192.168.31.1 276
  255.255.255.255 255.255.255.255 On-link 192.168.128.197 10000
================================================== =========================

ฉันคิดว่ามันจะชัดเจนว่าการกำหนดเส้นทางเครือข่ายค่อนข้างใหม่สำหรับฉันดังนั้นฉันจะขอบคุณคำตอบที่ชัดเจนในระดับสูง
deftfyodor

1
มันจะมีประโยชน์ถ้าคุณสามารถระบุได้ว่าคุณกำลังใช้งานไคลเอนต์ใด ๆ (anyconnect?) และถ้าคุณสามารถโพสต์ตารางเส้นทางของคุณขอบคุณ
MariusMatutiae

ทำได้โดยใช้ip routeวิธีการ
user1686

2
ใช่โปรดอย่าใช้คำสั่งการกำหนดเส้นทางที่ล้าสมัย: ใช้การแสดงเส้นทาง IPสำหรับตารางเส้นทาง คำสั่งที่ล้าสมัยจะซ่อนความซับซ้อนบางอย่างที่เป็นไปได้และเป็นประโยชน์เช่นกันกับ VPN, VLANs เพียงอย่างเดียว, ...
MariusMatutiae

@grawity, @MariusMatutiae - แน่นอนฉันได้แก้ไขคำถามด้วยคำสั่งผลลัพธ์ ขอบคุณที่พูดถึงip routeคำสั่งนี้ฉันไม่เคยพบเจอมาก่อน
deftfyodor

คำตอบ:


3

เครือข่ายท้องถิ่นของคุณคือ 192.168.1.0/24 ดังที่แสดงโดยบรรทัดนี้ในตารางเส้นทางของคุณ:

 192.168.1.0/24 dev eth0  proto kernel  scope link  src 192.168.1.32  metric 1

เครือข่าย VPN ของคุณคือ 10.0.0.0/8 ดังที่แสดงในบรรทัดนี้:

 10.0.0.0/8 dev tun0  scope link 

ปัจจุบันเราเตอร์เริ่มต้นของคุณคือ:

 default via 192.168.1.254 dev eth0  proto static 

ซึ่งแน่นอนว่าเป็นสิ่งที่คุณไม่ต้องการเพราะมันเป็นของ LAN ท้องถิ่นของคุณดังนั้นข้อมูลทั้งหมดของคุณจะถูกส่งผ่านเกตเวย์ท้องถิ่นของคุณราวกับว่า VPN ไม่มีอยู่

 You do have however, the all-important statement

 128.122.252.68 via 192.168.1.254 dev eth0  src 192.168.1.32  

ซึ่งเป็นเส้นทางไปยังผู้ให้บริการ VPN ของคุณ

แก้ไข:

ฉันไม่ได้ตระหนักว่าตารางเส้นทางเป็นเพียงตารางที่ได้มาจาก VPN ของคุณโดยที่คุณไม่ต้องทำอะไรเลย สิ่งนี้อาจบ่งบอกว่า (โดยทางอ้อม) ว่าผู้ให้บริการของคุณยินดีที่จะส่งต่อเฉพาะการรับส่งข้อมูลที่อนุญาตในตารางของคุณผ่านทางอินเทอร์เฟซ tun0 และอาจดำเนินการขั้นตอนต่อไปเพื่อสกัดกั้นการรับส่งข้อมูลอื่น ๆ

อย่างไรก็ตามสมมติว่าผู้ให้บริการของคุณยินดีส่งต่อการรับส่งข้อมูลทั้งหมดของคุณสิ่งที่คุณต้องทำมีดังต่อไปนี้

ก่อนอื่นคุณต้องค้นหาว่ามีเกตเวย์ที่เต็มใจยอมรับการเชื่อมต่อของคุณในอีกด้านหนึ่งหรือไม่เนื่องจากเราต้องการที่อยู่ IP ฉันจะให้สี่วิธีในการทำเช่นนี้

1) เมื่อพีซีที่เชื่อมต่อกับ VPN ลองคำสั่งต่อไปนี้:

   sudo dhclient -v tun0

หากทุกอย่างเป็นไปด้วยดีคุณควรเห็นคำตอบที่มีบรรทัดนี้:

 DHCPOFFER of a.b.c.d from x.y.w.z

xywz เป็นที่อยู่ IP ของโลคัลเกตเวย์ คุณอาจต้องปิด VPN ของคุณหลังจากการทดสอบนี้และอาจต้องรีบูตเครื่องคอมพิวเตอร์ของคุณเพราะเราจะทำตารางเส้นทางให้เรียบร้อยดี

2) อีกทางหนึ่งคุณอาจลองนำทางไปยังหนึ่งในเว็บไซต์ที่อนุญาต (เว็บไซต์ที่ปรากฏในตารางเส้นทางของคุณว่าจะผ่านอินเตอร์เฟสtun0 ) จากนั้นออกคำสั่ง:

  ip neigh show

คุณควรได้รับรายชื่อของชิ้นติดต่อผ่านโปรโตคอล ARP กับ MAC และที่อยู่ IP เป็นไปได้มากว่าคุณจะได้รับการตอบกลับเป็นศูนย์หรืออย่างใดอย่างหนึ่ง หากคุณได้รับคำตอบเดียวนั่นคือเราเตอร์ของคุณ

3) หากคุณไม่ได้รับคำตอบจากนั้นคุณอาจลองด้วย

  sudo nmap -sn 10.0.0.0/8

(ซึ่งกำลังจะช้ามาก) เกตเวย์ของคุณจะเป็นหนึ่งในชิ้นที่อยู่ในรายการซึ่งมักจะเป็นที่อยู่ซึ่งลงท้ายด้วย. 1 หรือใน. 254 หากมีอยู่เช่นนั้น

4) ใช้คำสั่ง tcpdump:

  sudo tcpdump -n -i tun0

และดูที่อยู่ IP ที่พ่นออกมาโดยคำสั่ง

หากคุณไม่ได้รับคำตอบที่ถูกต้องในการทดสอบนี้นั่นหมายความว่ามีคนขันสกรูในเครือข่ายของเขาอย่างแน่นหนา

แต่ให้เรามองโลกในแง่ดีและสมมติว่าตอนนี้คุณมีที่อยู่ IP ของผู้สมัคร xwyz สำหรับเราเตอร์ระยะไกล คุณจะต้องลบเกตเวย์เริ่มต้น (as sudo!):

  ip route del default via 192.168.1.254

เพิ่มใหม่:

  ip route add default via x.w.y.z 

และพยายามนำทาง

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


ขอบคุณสำหรับคำตอบที่ซับซ้อนมาก แต่เมื่อเข้าสู่ช่วงครึ่งหลังฉันรู้สึกถึงอาการสะอึกเล็กน้อย เอาต์พุตของการip addr show dev tun0อ่าน 10: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1412 qdisc pfifo_fast state UNKNOWN group default qlen 500 link/none inet 192.168.128.193/24 brd 192.168.128.255 scope global tun0 valid_lft forever preferred_lft foreverโดยไม่ต้องระบุที่อยู่เพียร์ นอกจากนี้ตารางเส้นทางที่ฉันโพสต์ก่อนหน้านี้ยังไม่ได้รับการแก้ไขโดยฉันเลยมันถูกสร้างขึ้นโดยลูกค้า vpn
deftfyodor

@deftfyodor โปรดดูการแก้ไขของฉัน
MariusMatutiae

การใช้คำสั่ง tcpdump ทำให้ฉันสามารถแยกแยะเกตเวย์และกำหนดเส้นทางปริมาณการใช้งานเริ่มต้นได้ น่าเสียดายที่มันยังใช้ได้กับช่วง IP ที่จัดสรรไว้โดยเฉพาะเท่านั้น แน่นอนว่าฉันเชื่อว่ามีมาตรการรักษาความปลอดภัยเพิ่มเติมในสถานที่ - อย่างไรก็ตามฉันไม่มีปัญหาในการกำหนดเส้นทางทราฟฟิกผ่าน VPN เดียวกันใน MS Windows โดยใช้ไคลเอนต์ AnyConnect ดังนั้นจะต้องมีเรื่องราวมากกว่านี้
deftfyodor

@deftfyodor คุณสามารถตรวจสอบว่าตารางเส้นทางของคุณใน Windos แตกต่างจากใน Linux ได้หรือไม่?
MariusMatutiae

โดยทั่วไปแล้วจะคล้ายกันแม้ว่าจะมีองค์ประกอบบางอย่างที่แตกต่างกันโดยเฉพาะ 0.0.0.0 ถูกตั้งค่าเป็นเส้นทางผ่านเราเตอร์เครือข่ายของฉันเป็นเกตเวย์โดยถือ VPN เกตเวย์เป็นอินเทอร์เฟซ ฉันได้แก้ไขคำถามเพื่อแสดงตารางเส้นทางของ Windows
deftfyodor

3

routeคำสั่งทั้งหมดของคุณขาด netmasks ดังนั้นคำสั่งเหล่านั้นจะตรงกับที่0.0.0.0อยู่ที่ระบุไม่ใช่อินเทอร์เน็ตทั้งหมด ดังนั้นแทนที่0.0.0.0ด้วย0.0.0.0/0ในคำสั่งแรกที่คุณพยายาม:

ip route add -net 0.0.0.0/0 gw homeportal dev tun0

อาจมีหนึ่งข้อแม้ที่ฉันไม่แน่ใจว่าไคลเอนต์ VPN ของคุณแก้ปัญหาด้วยตัวเอง: จุดสิ้นสุดทันเนลจะต้องถูกแยกออกจากการกำหนดเส้นทางผ่าน VPN จะต้องกำหนดเส้นทางผ่านeth0อินเทอร์เฟซของคุณ ดังนั้นหากการเพิ่มเส้นทางเริ่มต้นนี้แบ่ง VPN ของคุณให้เพิ่มเส้นทางเฉพาะสำหรับปลายทาง VPN ของคุณ:

ip route add <ENDPOINT>/32 dev eth0


2
ฉันคิดว่าอันที่สองควรจะเป็นip routeใช่มั้ย นอกจากนี้ในขณะที่มันมักจะเป็นความคิดที่ดีที่จะเพิ่ม netmasks ก็ดูเหมือนว่าrouteจะถือว่า / 0 เมื่อมีการเพิ่ม 0.0.0.0
user1686
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.