บังคับให้แอปพลิเคชันใช้เครือข่ายเฉพาะ


48

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

คำตอบ:


22

เคล็ดลับกำลังปรับตารางเส้นทาง (ซึ่งไม่ได้ขึ้นอยู่กับพอร์ตปลายทางหรือแอพต้นทาง แต่ขึ้นอยู่กับโฮสต์ปลายทาง) นี่ถือว่าคุณอยู่ใน Linux หรือ OS X (ตามที่แท็กแสดง)

สมมติว่าเกตเวย์เริ่มต้นของคุณคือ 1.2.3.4 และคุณมี VPN ซึ่งสามารถกำหนดเส้นทางการรับส่งข้อมูลบน 6.7.8.9 หากคุณต้องการให้ทราฟฟิกเมลของคุณกำหนดเส้นทางมากกว่า 6.7.8.9 ให้ทำ

sudo route add mail.myserver.com 6.7.8.9

เส้นทางบางเวอร์ชันอาจต้องใช้คำหลัก "gw" ระหว่างที่อยู่และ hop ถัดไป หากคุณต้องการที่จะสร้างเส้นทางเน็ตทั้งหมดข้าม hop ถัดไปเพียงเพิ่ม netmask ในรูปแบบ CIDR สำหรับปลายทางเช่น

sudo route add 192.168.0.0/24 6.7.8.9

หากคุณต้องการดูตารางเส้นทางที่มีอยู่ให้ใช้

netstat -nrl
or
ip route list

หากคุณใช้ Windows "เส้นทางสุทธิ" จะทำให้คุณได้รับประโยชน์มากที่สุดจากที่นั่น แต่ไวยากรณ์แตกต่างกันโดยสิ้นเชิง


17
นี่ไม่ใช่คำตอบจริงๆเหรอ? คำถามคือวิธีบังคับให้แอปไม่ใช่เว็บไซต์ ตัวอย่างเช่นสิ่งที่ฉันต้องการให้ Safari ใช้งานผ่าน VPN (ppp0) แต่ Firefox จะใช้มากกว่า en0 ไม่ว่าพวกเขาจะเข้าถึงไซต์ใด นั่นคือคำถาม
gman

2
@gman: ไม่มีอะไรเกี่ยวกับคำตอบนี้เฉพาะกับเว็บไซต์
การแข่งขัน Lightness กับ Monica

3
OP ต้องการเลือกอินเทอร์เฟซเครือข่ายตามแอปพลิเคชันโปรแกรม คำตอบนี้แสดงวิธีการเลือกตามโฮสต์ปลายทาง
Bennett McElwee

ฉันจะไม่ลงคะแนนนี้ (มันเป็นคำแนะนำที่ดีสำหรับคำถามอื่น) แต่ฉันก็จะไม่ลงคะแนนนี้อย่างแน่นอน (ด้วยเหตุผลที่ระบุโดย @gman และ @ bennett-mcelwee)
ratskin

ต่อไปนี้ไม่ได้ตอบคำถามของวิธีการล็อคแอพที่เฉพาะเจาะจงกับ NIC ที่เฉพาะเจาะจง
catchdave

6

หากคุณต้องการให้ NIC สองตัวทำงานในเวลาเดียวกันคุณสามารถตั้งค่าใบสั่งงานบริการในการตั้งค่าระบบ / เครือข่ายโดยเลือกอุปกรณ์ที่ด้านล่างรายการอุปกรณ์เครือข่าย ลากและวางคำสั่งซื้อที่คุณต้องการ

ตัวอย่างเช่นฉันมี Ether และ WiFi ใช้งานอยู่เสมอบน MBP ของฉันโดยตั้งค่า Ether ไว้เหนือ Wi-Fi เนื่องจากฉันใช้ Ether ในที่ทำงานฉันจึงตั้งค่า NIC นั้นด้วยการตั้งค่าพร็อกซีและ Wi-Fi ของฉันโดยไม่ต้อง เมื่อฉันกลับบ้านไม่จำเป็นต้องปรับการตั้งค่าใด ๆ /usr/bin/networksetup -ordernetworkservicesนอกจากนี้คุณยังสามารถทำเช่นนี้จากสถานีใช้

แต่สำหรับการมีทั้งแอคทีฟและแอพใช้ค่าที่ไม่ใช่ค่าเริ่มต้นฉันโชคดีที่ได้รับคำแนะนำจาก @ อันดามันเล็กน้อย หากฉันต้องการให้แอพไม่ได้ใช้อีเธอร์ในกรณีของฉันฉันจะตั้งค่าพร็อกซีสำหรับแอพเป็นที่อยู่ IP ของอะแดปเตอร์ Wi-Fi ของฉัน มันจะใช้อินเทอร์เฟซนั้นเพื่อออกไปและผ่านทางพร็อกซี บริษัท และเซิร์ฟเวอร์การตรวจสอบ ดังนั้นหากอีเธอร์มีที่อยู่ 1.2.3.4 และมาก่อน Wi-Fi (5.6.7.8) ในใบสั่งบริการฉันมีพร็อกซีแอปของฉันเป็น 5.6.7.8


5

สำหรับ Mac มีวิธีแก้ปัญหาง่ายๆที่ฉันใช้ จริงๆแล้วมันเป็นการใช้งานโซลูชันของ @ Andorra ติดตั้งพร็อกซีและกำหนดค่าแอพของคุณเพื่อใช้งาน:

  1. ฉันติดตั้งSquidMan

  2. ในการกำหนดค่าเพิ่มบรรทัดต่อไปนี้ คุณต้องระบุ IP ที่คุณจะใช้สำหรับแอพส่วนตัวของคุณแทนx.x.x.x:

    tcp_outgoing_address x.x.x.x
    
  3. เริ่ม SquidMan และกำหนดค่าแอปของคุณเพื่อใช้เป็นพร็อกซี

ฉันใช้เวลาหนึ่งชั่วโมงในการค้นหาข้อมูลนี้ในหน้าต่างๆดังนั้นฉันหวังว่ามันจะช่วยให้ผู้อื่นสามารถทำได้เร็วขึ้น


ควรใช้งานได้เหมือนกันบน Windows และน่าจะเป็นทางออกเดียวที่งดงาม!
TJJ

1

คุณอาจจะต้องใช้ฟังก์ชั่นการควบคุม IO ระดับต่ำ (ioctl) โดยเฉพาะอย่างยิ่ง:

ioctl( socket, SIOCGIFADDR, ... ); // Get network interface address

และ

ioctl( socket, SIOCSIFADDR, ... ); // Set network interface address

ดูหน้านี้สำหรับรายละเอียดเพิ่มเติม


1

ปัญหาคือคุณจะต้องเชื่อมต่อเครือข่ายของคุณหลายเกตเวย์และจัดการได้ยากนิดหน่อย ...

เซิร์ฟเวอร์หรือเครือข่ายที่เกี่ยวข้องกับยูนิกซ์และเครื่องมือลินุกซ์มักจะมีการตั้งค่าสถานะที่เรียกว่า "อินเตอร์เฟส" ซึ่งคุณสามารถบอกได้ว่าคุณต้องการใช้อินเทอร์เฟซใดเช่นใน tcpdump:

tcpdump -i eth0

แต่อย่างที่ฉันคิดว่าคุณกำลังถามเกี่ยวกับการกำหนดเส้นทางซอฟต์แวร์เดสก์ท็อปมาตรฐานซึ่งทำให้ยากขึ้น ...

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

1.- การตั้งค่าพร็อกซีในส่วน "ไม่ปลอดภัย" (ฉันหมายถึงโดยที่ไม่บังคับใช้นโยบาย) ส่วนหนึ่งของเครือข่ายของคุณและชี้ซอฟต์แวร์ของคุณไปยังพร็อกซีนั้น

2.- การตั้งค่าเซิร์ฟเวอร์ SSH ในสถานที่ "ไม่ปลอดภัย" อื่นพูดที่บ้านของคุณหรือเซิร์ฟเวอร์เฉพาะที่คุณมีบนอินเทอร์เน็ตและการเปิดการเชื่อมต่อผ่านคุณสมบัติพิเศษที่ SSH มีที่สร้างพร็อกซีเซิร์ฟเวอร์ถุงเท้า:

ssh -D 1234 user@host

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

เทคนิคที่ดีสำหรับการหลีกเลี่ยงนโยบายอินเทอร์เน็ตขององค์กร: P

: D


1

ฉันใช้งานแอพพลิเคชั่นทางธุรกิจภายในเครื่องเสมือน ฉันใช้คำแนะนำด้านบนเพื่อตั้งค่า WiFi เป็นการเชื่อมต่อที่ต้องการจากนั้นกำหนดค่าเครื่องเสมือนให้ใช้พอร์ตอีเธอร์เน็ตเป็นอะแดปเตอร์ "Bridged"

สิ่งใดก็ตามที่ทำงานภายในเครื่องเสมือนนั้นเชื่อมโยงกับพอร์ตอีเธอร์เน็ตอย่างหนัก WiFi คือการเชื่อมต่อที่ฉันต้องการสำหรับแอปพลิเคชั่นอื่น ๆ (นอกเครื่องเสมือน) ตราบใดที่ฉันมีการเชื่อมต่อ WiFi

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

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


0

แม้ว่าคำถามนี้มีไว้สำหรับ OSX ฉันจะทิ้งสิ่งต่อไปนี้ไว้ที่นี่ซึ่งใช้ได้กับ Windows 7 64 บิต คำถามนี้เกิดขึ้นเป็นหนึ่งในผลลัพธ์สูงสุดเมื่อ googling บังคับให้แอปพลิเคชันผ่านอะแดปเตอร์ที่เฉพาะเจาะจงดังนั้นสิ่งต่อไปนี้อาจเป็นประโยชน์กับผู้อื่น

http://www.howtogeek.com/117890/how-to-force-an-application-to-use-a-specific-network-card/

คำแนะนำข้างต้นใช้ยูทิลิตีที่ชื่อว่าForceBindIpซึ่งโฆษณาไว้เพื่อใช้งานWindows NT/2000/XP/2003 แต่ฉันไม่มีปัญหาในการใช้งานบน Windows 7 - 64 บิต

นอกจากนี้ปัญหาเกี่ยวกับ ForceBindIP บน Windows 7 (x64)

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