ปัญหาการกำหนดเส้นทาง VPN ใน linux - วิธีทำให้แอปพลิเคชันที่สามารถเชื่อมโยงกับที่อยู่ IP ทำงานได้เท่านั้น


3

ตอนนี้ฉันได้ติดตั้ง PPTP VPN ไว้ใน ubuntu VPS ระยะไกลแล้ว ฉันต้องการให้แอพพลิเคชั่นบางตัวใช้ VPN เพื่อเข้าถึงอินเทอร์เน็ต (rtorrent, irssi และอื่น ๆ ) ปัจจุบันมีการตั้งค่าดังนี้:

eth0 การเชื่อมโยง encap: อีเธอร์เน็ต HWaddr 00: 16: 3e: 94: 38: ce             inet addr: 66.xxx.xxx.xxx Bcast: 66.xxx.xxx.xxx รูปแบบ: 255.255.255.0

eth1 ลิงก์ encap: อีเทอร์เน็ต HWaddr 00: 16: 3e: d7: 58: a1             inet addr: 10.2.0.111 Bcast: 10.255.255.255 Mask: 255.0.0.0

lo Link encap: Local Loopback             inet addr: 127.0.0.1 รูปแบบ: 255.0.0.0

ppp0 Link encap: โปรโตคอลแบบจุดต่อจุด             inet addr: 192.168.10.244 P-t-P: 192.168.9.1 รูปแบบ: 255.255.255.255

โดยพื้นฐานแล้ววิธีการที่ฉันเห็นปัญหานี้เป็นแบบนี้

เมื่อฉันวิ่ง

curl --interface eth0 checkip.dyndns.com

ฉันเข้าใจ

<html><head><title>Current IP Check</title></head><body>Current IP Address: 66.xxx.xxx.xxx</body></html>

และเมื่อฉันวิ่ง

curl --interface ppp0 checkip.dyndns.com

ฉันเข้าใจ

<html><head><title>Current IP Check</title></head><body>Current IP Address: 95.xxx.xxx.xxx</body></html>

ซึ่งถูกต้อง

อย่างไรก็ตามเมื่อฉันวิ่ง

curl --interface 192.168.10.244 checkip.dyndns.com

มันหมดเวลาแล้วและฉันก็ไม่ได้อะไรเลย ซึ่งดูเหมือนจะไม่สมเหตุสมผลใด ๆ เนื่องจาก 192.168.10.244 เป็นที่อยู่ IP ของ ppp0 และดูเหมือนว่าฉันไม่ควรแตกต่างจากคำสั่งด้านบน ฉันพลาดอะไรไปรึเปล่า? ถ้าฉันสามารถทำให้มันทำงานเป็นม้วนได้ฉันจะสามารถทำให้มันทำงานใน rtorrent และ irssi ได้ตามที่ฉันต้องการ curl นั้นง่ายกว่าที่จะทดสอบสิ่งนี้ มีจุดเริ่มต้นที่ดีสำหรับการแก้ปัญหานี้หรือไม่?

แก้ไข: ซ่อมมัน! นี่คือวิธีที่ฉันทำ

ก่อนอื่นฉันสร้างตารางเส้นทางใหม่:

# echo "200 vpn" >> /etc/iproute2/rt_tables

จากนั้นฉันสร้างกฎสำหรับคำขอที่มาจากที่อยู่ IP ppp0 ของฉันเพื่อค้นหาจากตารางใหม่นั้น

# ip rule add from 192.168.10.244 table 200

จากนั้นฉันสร้างกฎในตารางนั้นเพื่อใช้ ppp0

# ip route add default dev ppp0 table 200

มันทำงานได้อย่างสมบูรณ์แบบ! ตอนนี้เมื่อฉันพยายามคำสั่ง curl ที่ล้มเหลวก่อนหน้านี้:

# curl --interface 192.168.10.244 checkip.dyndns.com
<html><head><title>Current IP Check</title></head><body>Current IP Address: 95.xxx.xxx.xxx</body></html>

คุณใช้คำสั่งใดสำหรับการกำหนดค่านั้น ฉันกำลังมองหาวิธีแก้ปัญหา แต่ไม่สามารถหาสิ่งใดได้ผล
motto

คำตอบ:


1

เหตุผลของคุณไม่ถูกต้อง การเชื่อมโยงกับที่อยู่ IP จะเลือกที่อยู่ IP ต้นทางเท่านั้น ไม่มีผลต่อเส้นทางที่นำไปยังปลายทางซึ่งเป็นสิ่งที่คุณต้องการควบคุม

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


ฉันลองแล้วและฉันมีปัญหา #echo 200 vpns & gt; & gt; / etc / iproute2 / rt_tables #ip กฎเพิ่มจาก 192.168.10.244 ตาราง vpns #ip เส้นทางเพิ่มค่าเริ่มต้นผ่าน 192.168.9.1 dev ppp0 ตาราง vpns คำตอบ RTNETLINK: ไม่มีกระบวนการดังกล่าว
thatfunkymunki

อืมพยายามทำให้มันดูถูกต้อง แต่โดยทั่วไปเมื่อฉันทำคำสั่ง "เส้นทาง IP เพิ่มค่าเริ่มต้นผ่าน 192.168.9.1 dev ppp0 table vpns" ฉันได้รับ "คำตอบ RNETLINK: ไม่มีกระบวนการดังกล่าว" นั่นเป็นคำสั่งที่ไม่ถูกต้องเหรอ?
thatfunkymunki

คุณหมายถึง "table 200" ใช่ไหม ตารางเส้นทางมีหมายเลข
David Schwartz

ยังคงเป็นผลลัพธ์เดียวกัน คำตอบ RTNETLINK: ไม่มีกระบวนการดังกล่าว
thatfunkymunki

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