ฉันจะตั้งค่า PPTP VPN บนเซิร์ฟเวอร์ Ubuntu ของตัวเองได้อย่างไร


16

สมมติว่าฉันมีเซิร์ฟเวอร์ส่วนตัวเสมือนจากใครบางคนเช่นLinodeใช้ Ubuntu ฉันจะติดตั้ง PPTP VPN ได้อย่างง่ายดายเพื่อให้ไคลเอนต์ Ubuntu สามารถเชื่อมต่อกับมันได้อย่างไร

โดยค่าเริ่มต้น Ubuntu เสนอให้เชื่อมต่อกับเครือข่าย PPTP เหล่านี้ ฉันต้องการตั้งค่าในลักษณะที่ง่ายต่อการเชื่อมต่อ (เช่นโดยไม่ต้องติดตั้งแพคเกจใด ๆ บนไคลเอนต์)

คำตอบ:


28

การตั้งค่าเซิร์ฟเวอร์ขั้นต่ำที่แน่นอน

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

ก่อนอื่นให้ทำการติดตั้งซอฟต์แวร์ที่จำเป็น:

sudo apt-get install pptpd

ประการที่สองเปิดใช้งานip_forwardในเคอร์เนลสำหรับ IPv4 โดยไม่แสดงข้อคิดเห็นบรรทัดที่เกี่ยวข้องใน/etc/sysctl.conf :

sudo sed -i -r 's/^\s*#(net\.ipv4\.ip_forward=1.*)/\1/' /etc/sysctl.conf
# Reload the config file to have the change take effect immediately.
sudo -i sysctl -p

ประการที่สามเปิดใช้งาน NAT (หากยังไม่ได้เปิดใช้งาน) เพื่อให้ผู้ใช้ในเครือข่าย VPN ส่วนตัวสามารถส่งแพ็กเก็ตไปยังอินเทอร์เน็ตได้:

OUTIF=`/sbin/ip route show to exact 0/0 | sed -r 's/.*dev\s+(\S+).*/\1/'`
sudo -i iptables --table nat --append POSTROUTING --out-interface $OUTIF --jump MASQUERADE
# Enable NAT on boot from the rc.local script.
CMD="iptables --table nat --append POSTROUTING --out-interface $OUTIF --jump MASQUERADE"
sudo sed -i "\$i$CMD\n" /etc/rc.local

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

ประการที่สี่สำหรับผู้ใช้ VPN แต่ละสร้างบัญชีผู้ใช้ในแฟ้ม/ etc / PPP / CHAP-ลับ แทนที่$USERด้วยชื่อผู้ใช้จริงที่คุณต้องการใช้สำหรับผู้ใช้ VPN นั้น

KEY=`head -c 20 /dev/urandom | sha1sum | nawk '{print $1}'`
echo "$USER pptpd $KEY *" | sudo tee -a /etc/ppp/chap-secrets

ในที่สุดคุณก็พร้อมที่จะ ...

กำหนดค่าไคลเอนต์

ในแอปเพล็เครือข่ายจัดการเลือกการเชื่อมต่อ VPNกำหนดค่า VPNแล้วคลิกAdd บนหน้าจอถัดเลือกPPTPสำหรับประเภท VPN จากนั้นคลิกสร้าง

ป้อนคำอธิบายรูปภาพที่นี่

ในหน้าต่างนี้ป้อนชื่อโฮสต์หรือ IP ของเซิร์ฟเวอร์ของคุณพร้อมกับชื่อผู้ใช้และรหัสที่คุณเพิ่มลงในไฟล์/ etc / ppp / chap-secretบนเซิร์ฟเวอร์

ตอนนี้คลิกขั้นสูง

ป้อนคำอธิบายรูปภาพที่นี่

ในหน้าต่างนี้เปิดใช้งาน "ใช้การเข้ารหัสแบบจุดต่อจุด (MPPE)" และเลือกความปลอดภัย128 บิต ปิดการใช้งานการตรวจสอบสิทธิ์MSCHAP ( เปิดใช้งานMSCHAPv2ไว้)

สุดท้ายให้คลิกตกลงจากนั้นบันทึกเพื่อปิดหน้าต่างก่อนหน้า

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

หากคุณได้รับข้อความแจ้งว่าการเชื่อมต่อ VPN ไปยังเซิร์ฟเวอร์ล้มเหลวก่อนอื่นให้ตรวจสอบว่าคุณป้อนการตั้งค่าไคลเอนต์อย่างถูกต้องหรือไม่ วินาทีตรวจสอบว่าไคลเอนต์มีการเชื่อมต่อเครือข่ายกับพอร์ต TCP 1723 บนเซิร์ฟเวอร์ ในที่สุดตรวจสอบล็อกไฟล์/ var / log / messagesบนเซิร์ฟเวอร์เพื่อหาเบาะแสเพิ่มเติม หากการเชื่อมต่อ VPN ของคุณสำเร็จ แต่ต่อมาคุณไม่สามารถเรียกดูเว็บไซต์ใด ๆ จากไคลเอนต์ให้ศึกษาคู่มือการวินิจฉัยที่มีประโยชน์อย่างไม่น่าเชื่อบนเว็บไซต์ pptpd

หมายเหตุ

หากเครือข่ายท้องถิ่นที่คุณเชื่อมต่อกำลังใช้เครือข่ายย่อย 192.168.0.0/24 และ 192.168.1.0/24 คุณจะพบปัญหาเนื่องจากเป็นสิ่งที่เซิร์ฟเวอร์ PPTP ใช้ตามค่าเริ่มต้น คุณจะต้องกำหนดค่า PPTP จะใช้เครือข่ายย่อยที่แตกต่างกันในpptpd.conf

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


4

แบบฝึกหัดนี้ที่ฉันเขียนจะแนะนำคุณตลอด ควรช่วยให้คุณหลีกเลี่ยงข้อผิดพลาดทั่วไปที่เกิดจากผู้ใช้ VPS

เข้าสู่ระบบครั้งแรกใน VPS แผงของคุณและเปิดใช้งานTUN / TAPและพรรคพลังประชาชน หากคุณไม่มีตัวเลือกดังกล่าวโปรดติดต่อ ISP ของคุณเพื่อเปิดใช้งานสิ่งนี้สำหรับคุณ

ป้อนคำอธิบายรูปภาพที่นี่

ก่อนติดตั้งแพ็คเกจนี้:

sudo apt-get install pptpd

เนื่องจากเราไม่ต้องการให้ VPN ของเราเป็นแบบสาธารณะเรากำลังจะสร้างผู้ใช้
ฉันใช้ VI คุณสามารถใช้ NANO หรือแก้ไขข้อความที่คุณต้องการ

vi /etc/ppp/chap-secrets

รูปแบบคือ

[username] [service] [password] [ip]

ตัวอย่าง

john pptpd johnspassword *

* หมายถึงอนุญาตให้เข้าถึงจากที่อยู่ IP ทั้งหมดระบุ IP เฉพาะเมื่อคุณมีที่อยู่คงที่

การแก้ไขการตั้งค่า PPTPD

vi /etc/pptpd.conf

ค้นหาการตั้งค่า localip และ remoteip ลบ#(อักขระความคิดเห็น) สำหรับทั้งคู่เพื่อให้การตั้งค่าเหล่านี้ได้รับการยอมรับจริง เปลี่ยน localip เป็น IP เซิร์ฟเวอร์ของคุณ หากคุณไม่ทราบ IP เซิร์ฟเวอร์ของคุณคุณอาจดูในแผงควบคุม VPS ของคุณ

remoteip นั้นเป็นช่วง IP ที่ไคลเอนต์ (คอมพิวเตอร์ที่เชื่อมต่อกับ VPN ของคุณ) จะถูกกำหนด ตัวอย่างเช่นหากคุณต้องการช่วง IP ต่อไปนี้: 192.168.120.231-235 เซิร์ฟเวอร์ VPN ของคุณจะสามารถกำหนด 192.168.120.232, 192.168.120.233, 192.168.120.234 และ 192.168.120.235 ให้กับลูกค้า มันขึ้นอยู่กับสิ่งที่คุณต้องการใช้สำหรับฟิลด์นี้

ส่วนตัวฉันเลือกการตั้งค่านี้:

localip 10.0.0.1
remoteip 10.0.0.100-200

ดังนั้นฉันสามารถเชื่อมต่อกับลูกค้าได้ประมาณ 200 คน

เพิ่มเซิร์ฟเวอร์ DNS ไปที่ /etc/ppp/pptpd-options

ms-dns 8.8.8.8
ms-dns 8.8.4.4

คุณสามารถเพิ่มได้ที่ส่วนท้ายของไฟล์หรือค้นหาบรรทัดเหล่านั้นยกเลิกการใส่เครื่องหมายข้อคิดเห็นและเปลี่ยน IP เป็น Public DNS ที่คุณต้องการ

ตั้งค่าการส่งต่อ

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

net.ipv4.ip_forward = 1

หากต้องการให้การเปลี่ยนแปลงใช้งานได้ sysctl -p

สร้างกฎ NAT สำหรับ iptables

นี่เป็นส่วนสำคัญหากคุณใช้ VPS คุณอาจไม่ใช้ eth0 แต่ venet0 แทนคุณควรตรวจสอบว่าคุณใช้อินเตอร์เฟสใดบ้าง ifconfig

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE && iptables-save

หากคุณต้องการให้ไคลเอนต์ PPTP ของคุณคุยกันเพิ่มกฎ iptables ต่อไปนี้:

iptables --table nat --append POSTROUTING --out-interface ppp0 -j MASQUERADE
iptables -I INPUT -s 10.0.0.0/8 -i ppp0 -j ACCEPT
iptables --append FORWARD --in-interface eth0 -j ACCEPT

อีกครั้งคุณต้องแทนที่ eth0 ด้วย venet0 หากคุณใช้ VPS

ฉันอยากจะแนะนำให้ทำงาน

sudo iptables-save

ตอนนี้เซิร์ฟเวอร์ PPTP ของคุณยังทำหน้าที่เป็นเราเตอร์

คุณสามารถเรียกใช้คำสั่งนี้เพื่อให้บริการ VPN เริ่มต้นในการบู๊ต

systemctl enable pptpd

ฉันแนะนำให้ติดตั้ง iptables-persistent ดังนั้นกฎยังคงอยู่แม้หลังจากรีบูต

sudo apt-get install -y iptables-persistent

ลิงก์จะไม่ไปไหนส่วนใหญ่ฉันจะไม่ปล่อยชื่อโดเมนนี้อีกประการที่สองคือเซิร์ฟเวอร์โฮสติ้งของฉันประการที่สามเชื่อฉัน: DI ไม่สามารถคัดลอกวางแบบฝึกหัดได้ที่นี่ยาวเกินไป
Luka

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

ซานาขอบคุณมาก! @Paranoid Panda ดีแล้วคุณควรลบคำตอบด้านบนของฉันที่มี 2 โหวตเพราะมีลิงค์: P
Luka

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

1
คุณยินดีมากขอบคุณสำหรับการสอน ครั้งต่อไปอย่ากลัวที่จะโพสต์ความยาวนี้ เป็นที่ยอมรับอย่างสมบูรณ์
Zanna

3

ทำตามบทช่วยสอนนี้: เซิร์ฟเวอร์ PPTP VPN พร้อม Ubuntu

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

  2. ในการเลือกนำทางด้วยตนเองไปยังแพคเกจที่ไม่ได้ติดตั้ง> netที่คุณจะพบ pptpd เลือกและกด 'g' สองครั้งเพื่อติดตั้งแพ็คเกจ

  3. ปล่อยให้การติดตั้งเสร็จสิ้นแล้วรีบูทระบบของคุณ

  4. SSH เป็นเครื่องตั้งค่าใหม่ของคุณและเรียกใช้sudo aptitude update && sudo aptitude safe-upgradeก่อนเพื่ออัพเดทแพ็คเกจทั้งหมด รีบูทถ้าจำเป็น

  5. เปิดไฟล์ pptpd.conf: sudo nano /etc/pptpd.confปรับการตั้งค่า IP ที่ด้านล่างตามความต้องการของคุณ ภายใต้ Local IP คุณป้อน IP ในเครือข่ายท้องถิ่นของเซิร์ฟเวอร์ VPN ของคุณ (หากคุณไม่ทราบว่าพิมพ์ 'sudo ifconfig' และจะแสดงอินเตอร์เฟสเครือข่ายและ IP ที่กำหนดของคุณ) สำหรับเรื่องนั้นฉันขอแนะนำให้ตั้งค่า IP แบบคงที่ใน / etc / network / interfaces หรือในการกำหนดค่าเราเตอร์ของคุณ

  6. หากคุณต้องการคุณสามารถเปลี่ยนชื่อโฮสต์ใน /etc/ppp/pptpd-options

  7. ระบุชื่อผู้ใช้และรหัสผ่านที่คุณต้องการที่จะให้เข้าถึง VPN sudo nano /etc/ppp/chap-secretsของคุณ: หากคุณเปลี่ยนชื่อโฮสต์ในขั้นตอนก่อนให้แน่ใจว่าคุณพิมพ์ชื่อโฮสต์เดียวกันตอนนี้ภายใต้server

    ตัวอย่าง:

    # client        server  secret                  IP addresses
    eubolist   pptpd   myübersecretpassword   *
    

    ใน pptp ไม่มีการรักษาความปลอดภัย keyfile ขึ้นอยู่กับรหัสผ่านเท่านั้น นี่คือเหตุผลที่คุณควรเลือกรหัสผ่านแบบยาว (เช่น 32 ตัวอักษร) และรหัสผ่านแบบสุ่ม คุณสามารถสร้างรหัสผ่านดังกล่าวได้ที่นี่

  8. ตอนนี้เราต้องตั้งค่า ip-masquerading: sudo nano /etc/rc.local

    เพิ่มบรรทัดต่อไปนี้เหนือบรรทัดที่ระบุว่า 'exit 0'

    # PPTP IP forwarding
    iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
    

    ฉันขอแนะนำให้รักษาความปลอดภัยเซิร์ฟเวอร์ SSH ของคุณจากการโจมตีด้วยกำลังดุร้าย:

    #SSH Brute Force Protection
    iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW -m recent --set --name SSH
    iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 8 --rttl --name SSH -j
    

    DROP

    (และจะถูกแทรกเหนือ 'exit 0')

    คุณอาจต้องเปลี่ยน 'eth 0' เป็นอินเทอร์เฟซอื่นขึ้นอยู่กับอินเทอร์เฟซที่กำหนดค่าให้เชื่อมต่ออินเทอร์เน็ตบนเครื่องของคุณ

  9. สุดท้ายไม่ใส่หมายเหตุในบรรทัดนี้/etc/sysctl.conf:

    net.ipv4.ip_forward=1
    
  10. Reboot

  11. หากเซิร์ฟเวอร์ VPN ของคุณไม่ได้เชื่อมต่อกับอินเทอร์เน็ตโดยตรงคุณอาจต้องส่งต่อพอร์ต 1723 TCP และ GRE ไปยัง LAN IP ของเซิร์ฟเวอร์ VPN ของคุณ ดูคู่มือของเราเตอร์หรือ portforward.com สำหรับคำแนะนำเฉพาะของผู้ขาย อีกครั้งคุณอาจจำเป็นต้องกำหนด IP /etc/network/interfacesแบบคงที่ใน

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