โดย เดนิส นูทิอู
My Raspberry ซึ่งทำหน้าที่เป็นเซิร์ฟเวอร์ OpenVPN ป>
สวัสดีทุกคน!
ในบทความสั้น ๆ นี้ ฉันจะอธิบายวิธีการตั้งค่าเซิร์ฟเวอร์ VPN (Virtual Private Network) ของคุณเองบน Raspberry PI ด้วย OpenVPN หลังจากที่เราตั้งค่าเซิร์ฟเวอร์แล้ว เราจะตั้งค่าเซิร์ฟเวอร์ที่สร้างความสับสนเพื่อปิดบังการรับส่งข้อมูลของเราที่ระบุว่าเรากำลังใช้ VPN วิธีนี้จะช่วยให้เราหลีกเลี่ยงการเซ็นเซอร์บางรูปแบบ
เหตุใดจึงต้องใช้ VPN
ก่อนอื่น เรามาพูดถึงสาเหตุที่คุณอาจต้องการใช้เซิร์ฟเวอร์ VPN:
- หลีกเลี่ยงการโจมตีโดยมนุษย์ที่อยู่ตรงกลาง หากคุณมีผู้ใช้ที่เป็นอันตรายบนเครือข่ายท้องถิ่นของคุณ — แม้แต่เพื่อนร่วมห้องของคุณ — บุคคลนั้นสามารถตรวจสอบการรับส่งข้อมูลที่ไม่ได้เข้ารหัสของคุณและเข้าไปยุ่งเกี่ยวกับมันได้
- ซ่อนกิจกรรมทางอินเทอร์เน็ตของคุณจาก ISP (ผู้ให้บริการอินเทอร์เน็ต) หรือมหาวิทยาลัย ในกรณีของฉัน
- เลิกบล็อกบริการ My University บล็อกแพ็กเก็ต UDP (User Datagram Protocol) ทั้งหมด ซึ่งหมายความว่าฉันไม่สามารถใช้แอปพลิเคชันใด ๆ ที่สื่อสารผ่าน UDP ได้ ฉันไม่สามารถใช้โปรแกรมรับส่งเมล เล่นเกม หรือแม้แต่ใช้ Git ได้!
ฉันตัดสินใจตั้งค่า VPN บนอินเทอร์เน็ตที่บ้านโดยใช้ Raspberry Pi ด้วยวิธีนี้ฉันสามารถเชื่อมต่อกับเครือข่ายในบ้านของฉันได้ในขณะที่ฉันอยู่ที่มหาวิทยาลัย หากคุณต้องการเซิร์ฟเวอร์ VPN ในประเทศอื่น คุณสามารถซื้อเซิร์ฟเวอร์ส่วนตัวเสมือนในราคา 5$/เดือนจาก DigitalOcean คุณสามารถใช้ลิงก์ผู้อ้างอิงของฉันเพื่อรับส่วนลด $10 — นั่นคือ VPN ฟรีสองเดือน แต่คุณไม่จำเป็นต้องใช้มันหากคุณไม่ต้องการ
การติดตั้ง OpenVPN
ขั้นตอนนี้ง่ายมาก เพราะเราจะใช้เชลล์สคริปต์เพื่อทำสิ่งนี้ให้กับคุณ ดังนั้นคุณเพียงแค่ต้อง "กด" ถัดไปและเสร็จสิ้น
การติดตั้งจะใช้เวลานาน ขึ้นอยู่กับขนาดคีย์ที่คุณเลือก บน Raspberry Pi 3 Model B ของฉันใช้เวลาประมาณ 3 ชั่วโมง
โปรดไปที่พื้นที่เก็บข้อมูลนี้แล้วทำตามคำแนะนำ
ติดตั้ง Angristan/OpenVPN
_OpenVPN-install - ตั้งค่าเซิร์ฟเวอร์ OpenVPN ของคุณเองบน Debian, Ubuntu, Fedora CentOS และ Arch Linux_github.com
หากคุณไม่ทราบที่อยู่ IP ของเซิร์ฟเวอร์ของคุณ เพียงใส่ 0.0.0.0 . ฉันเลือก 443 สำหรับพอร์ตและ TCP (Transmission Control Protocol) สำหรับโปรโตคอล
หมายเหตุ :สิ่งนี้สำคัญมากเพราะมหาวิทยาลัยของฉันอนุญาตเฉพาะ TCP/80 เท่านั้น และ TCP/443 พอร์ตที่เหลือก็ค่อนข้างจะบล็อก นอกจากนี้ Obfsproxy ใช้งานได้กับ TCP เท่านั้น ดังนั้นตรวจสอบให้แน่ใจว่าคุณเลือก TCP !
หลังจากสคริปต์เสร็จสิ้น คุณจะได้รับ .ovpn ไฟล์. สามารถนำเข้าไปยังไคลเอนต์ VPN ที่คุณชื่นชอบได้ และทุกอย่างควรจะใช้งานได้ทันที
การทดสอบการเชื่อมต่อ
นำเข้าไฟล์ .ovpn ในไคลเอนต์ VPN ของคุณและเปลี่ยน ip 0.0.0.0 ไปยัง IP ในเครื่องของ Raspberry PI ของคุณ ขึ้นอยู่กับการกำหนดค่าเครือข่ายของคุณ อาจอยู่ในรูปแบบ192.168.*.* .
หมายเหตุ:วิธีนี้จะใช้งานได้เฉพาะเมื่อคุณเชื่อมต่อกับ WiFi เดียวกันกับที่ Pi เท่านั้น ป>
Viscosity เชื่อมต่อกับเซิร์ฟเวอร์ VPN ของฉันสำเร็จแล้ว ป>
ฉันได้กำหนดค่าเราเตอร์เพื่อให้ PI ได้รับที่อยู่ IP ที่สงวนไว้เสมอ คุณอาจต้องตรวจสอบการตั้งค่าเราเตอร์ของคุณหากต้องการทำสิ่งที่คล้ายกัน ป>
หากการเชื่อมต่อสำเร็จ ขอแสดงความยินดี คุณมีเซิร์ฟเวอร์ VPN แล้ว! แต่คุณไม่สามารถเข้าถึงได้จากภายนอก… ยัง
หากคุณต้องการเพียงเซิร์ฟเวอร์ OpenVPN ที่ไม่มีพร็อกซี obfuscation คุณสามารถข้ามไปที่ การส่งต่อพอร์ต .
การสร้างความสับสน การติดตั้งพร็อกซี
Obfs4 เป็นพร็อกซีที่มีสัญญาณรบกวน มันปิดบังการรับส่งข้อมูลอินเทอร์เน็ตของคุณให้ดูเหมือนเสียงรบกวน คนที่สอดแนมการรับส่งข้อมูลของคุณจะไม่รู้ว่าคุณกำลังทำอะไรอยู่ และจะปกป้องคุณจากการโจมตีแบบเจาะจงที่ใช้งานโดย Great Firewall of China
หมายเหตุ:วิธีนี้จะไม่ทำงานหากฝ่ายตรงข้ามของคุณอนุญาตเฉพาะการเข้าชมที่อนุญาตพิเศษ :( ป>
มาติดตั้งพร็อกซีเซิร์ฟเวอร์ทันที
- ติดตั้งแพ็คเกจที่จำเป็น:
apt-get update && apt-get install obfs4proxy
- สร้างไดเร็กทอรีที่จะเก็บการกำหนดค่า
sudo mkdir -p /var/lib/tor/pt_state/obfs4
- สร้างไฟล์การกำหนดค่า
sudo nano /var/lib/tor/pt_state/obfs4/obfs4.config
ในไฟล์การกำหนดค่า คุณจะวางสิ่งต่อไปนี้:
TOR_PT_MANAGED_TRANSPORT_VER=1TOR_PT_STATE_LOCATION=/var/lib/tor/pt_state/obfs4TOR_PT_SERVER_TRANSPORTS=obfs4TOR_PT_SERVER_BINDADDR=obfs4-0.0.0.0:444TOR_PT_ORPORT=127.0.0.1:443
TOR_PT_SERVER_BINDADDR คือที่อยู่ที่พร็อกซีจะรับฟังการเชื่อมต่อใหม่ ในกรณีของฉันคือ 0.0.0.0:444 — ทำไมต้อง 444 ไม่ใช่ 443? เพราะฉันไม่ต้องการเปลี่ยนการกำหนดค่าเซิร์ฟเวอร์ OpenVPN ที่กำลังฟังอยู่บน 443 อยู่ในขณะนี้ นอกจากนี้ ฉันจะแมปที่อยู่นี้ในภายหลังเป็น 443 โดยใช้การส่งต่อพอร์ต
TOR_PT_ORPORT ควรชี้ไปที่เซิร์ฟเวอร์ OpenVPN ในกรณีของฉัน เซิร์ฟเวอร์ของฉันทำงานบน 127.0.0.1:443 ป>
- สร้างไฟล์บริการ SystemD
sudo nano /etc/systemd/system/obfs4proxy.service
จากนั้นวางเนื้อหาต่อไปนี้ลงไป:
[Unit]Description=Obfsproxy Server[Service]EnvironmentFile=/var/lib/tor/pt_state/obfs4/obfs4.configExecStart=/usr/bin/obfs4proxy -enableLogging true -logLevelStr INFO[Install]WantedBy=multi-user.target
- เริ่มพร็อกซี Obfuscation
ตอนนี้ตรวจสอบให้แน่ใจว่า OpenVPN กำลังทำงานอยู่และเรียกใช้คำสั่งต่อไปนี้เพื่อเริ่มพร็อกซีและเปิดใช้งานให้เริ่มเมื่อบู๊ตเครื่อง
sudo systemctl start obfs4proxysudo systemctl enable obfs4proxy
- บันทึกคีย์ใบรับรอง
หลังจากบริการเริ่มต้นแล้ว ให้รันคำสั่งต่อไปนี้และบันทึกใบรับรอง KEY
cat /var/lib/tor/pt_state/obfs4/obfs4_bridgeline.txt
คีย์อยู่ในรูปแบบ Bridge obfs4 <IP ADDRESS>:<PORT> <FIN**GER**PRINT> c ert=KEY iat-mode=0 คุณจะต้องใช้มันเมื่อเชื่อมต่อกับ VPN
- การทดสอบการเชื่อมต่อ
เปิดไคลเอนต์ VPN ของคุณและเปลี่ยน IP จาก 443 เป็น 444 เพื่อเชื่อมต่อกับพร็อกซีแทนเซิร์ฟเวอร์ OpenVPN
หลังจากนั้น ให้ค้นหาตัวเลือก Pluggable Transport ในไคลเอนต์ OpenVPN ของคุณและดูว่ารองรับ obfs4 หรือไม่ .
ความหนืดรองรับวิธี Obfuscation ที่แตกต่างกัน เช่น:obfs2, obfs3, obfs4 และ ScrambleSuit ป>
หากทุกอย่างใช้งานได้ แสดงว่าคุณพร้อมแล้ว! ขอแสดงความยินดี! ปรับแต่งเพิ่มเติมอีกเล็กน้อยก่อนใช้ VPN นี้จากโลกภายนอก
การส่งต่อพอร์ต
ในการเข้าถึงเซิร์ฟเวอร์ OpenVPN จากโลกภายนอก เราจำเป็นต้องปลดบล็อกพอร์ตต่างๆ เนื่องจากมีแนวโน้มว่าพอร์ตเหล่านั้นจะถูกบล็อกมากที่สุด อย่างที่คุณจำได้ ฉันได้สงวนที่อยู่ IP ของ PI บนเราเตอร์ของฉันไว้ที่ 192.168.1.125 เสมอ ดังนั้นจึงไม่เปลี่ยนแปลงหาก PI ยกเลิกการเชื่อมต่อหรือหากเราเตอร์รีบูต
ด้วยวิธีนี้ฉันได้กำหนดกฎต่อไปนี้ในตารางการส่งต่อพอร์ตของฉัน:
หน้าการตั้งค่าการส่งต่อพอร์ตของ TL-WR841N ป>
พอร์ตภายนอก 443 จะชี้ไปที่พอร์ตเซิร์ฟเวอร์ของการสร้างความสับสน 444 หากคุณไม่มีเซิร์ฟเวอร์ที่สร้างความสับสน ให้ปล่อย 443->4 43.
พอร์ต 25 จะชี้ไปที่พอร์ต SSH ของ PI 22 นี่เป็นเพื่อความสะดวกของฉันเท่านั้น
ในกรณีที่ฉันต้องการเข้าถึงเซิร์ฟเวอร์ OpenVPN โดยตรงโดยไม่ต้องใช้พร็อกซี obfuscation ฉันได้สร้างกฎ 444-> 443
พอร์ตบริการคือ ด้านนอก พอร์ตที่จะใช้กับ สาธารณะ ของคุณ ที่อยู่ IP หากต้องการค้นหา IP สาธารณะของคุณ ให้ใช้บริการเช่น whatsmyip.com
พอร์ตภายในคือ INSIDE พอร์ต สามารถใช้ได้เมื่อคุณเชื่อมต่อกับเครือข่ายเท่านั้น
_หมายเหตุ:กฎข้อแรกบอกว่าเปลี่ยนเส้นทางการเชื่อมต่อทั้งหมดจาก PUBLIC_IP:443 เป็น 192.168.1.125:444 _
การทดสอบ
- ค้นหา IP สาธารณะของคุณและแทนที่ IP เก่าของคุณด้วย IP สาธารณะในไฟล์ .ovpn หรือในไคลเอนต์ VPN
- เชื่อมต่อกับ VPN
แค่นั้นแหละ.
ไดนามิก DNS
ในกรณีส่วนใหญ่ IP ของคุณจะเปลี่ยนแปลงเนื่องจากเป็น IP แบบไดนามิก วิธีที่จะเอาชนะสิ่งนี้คือการสร้างโปรแกรมขนาดเล็กบน PI ที่จะบันทึก IP ของคุณและส่งอีเมลถึงคุณทุกวัน คุณยังสามารถจัดเก็บ IP ไว้ในฐานข้อมูลออนไลน์ เช่น Firebase ได้
เราเตอร์ของฉันมีการตั้งค่า DNS แบบไดนามิก ด้วยวิธีนี้ ฉันสามารถใช้ผู้ให้บริการเช่น NoIP และรับโดเมนเช่น example.no-ip.com ซึ่งจะชี้ไปยังที่อยู่ IP สาธารณะของฉันเสมอ
หน้าการตั้งค่า TL-WR841N DDNS ป>
แหล่งข้อมูลอื่นๆ:
- สวนเด็กแห่งการเดินทางแบบเสียบปลั๊ก
- ความหนืด-การบดบัง/
- https://www.pluggabletransports.info/transports/
หากคุณมีคำถามใด ๆ โปรดติดต่อฉันบน Twitter
เรียนรู้การเขียนโค้ดฟรี หลักสูตรโอเพ่นซอร์สของ freeCodeCamp ช่วยให้ผู้คนมากกว่า 40,000 คนได้งานในตำแหน่งนักพัฒนา เริ่มต้น