เหตุใดจึงต้องใช้ VPN เพื่อเข้าถึงบ้านของคุณ
มีหลายเหตุผลที่คุณต้องการเข้าถึงเครือข่ายในบ้านของคุณจากระยะไกลและวิธีที่ดีที่สุดคือการใช้เซิร์ฟเวอร์ VPN เราเตอร์บางตัวอนุญาตให้คุณตั้งค่าเซิร์ฟเวอร์ VPN ได้โดยตรงภายในเราเตอร์ แต่ในหลาย ๆ กรณีคุณจะต้องตั้งค่าด้วยตัวเอง
Raspberry Pi เป็นวิธีที่ยอดเยี่ยมในการทำสิ่งนี้ให้สำเร็จ พวกเขาไม่ต้องใช้พลังงานมากในการทำงานและมีพลังเพียงพอที่จะเรียกใช้เซิร์ฟเวอร์ VPN คุณสามารถตั้งค่าถัดจากเราเตอร์ของคุณและโดยทั่วไปลืมมันไป
เมื่อคุณสามารถเข้าถึงเครือข่ายภายในบ้านของคุณจากระยะไกลคุณสามารถเข้าถึงไฟล์ของคุณได้จากทุกที่ คุณสามารถเรียกใช้คอมพิวเตอร์ที่บ้านได้จากระยะไกล คุณยังสามารถใช้การเชื่อมต่อ VPN ที่บ้านได้จากท้องถนน การตั้งค่าเช่นนี้ช่วยให้โทรศัพท์แท็บเล็ตหรือแล็ปท็อปของคุณทำงานได้เหมือนอยู่บ้านจากทุกที่
ตั้งค่า Pi
ก่อนที่คุณจะเริ่มตั้งค่า VPN คุณจะต้องตั้งค่า Raspberry Pi ของคุณก่อน เป็นการดีที่สุดที่จะตั้งค่า Pi ด้วยเคสและการ์ดหน่วยความจำขนาดที่เหมาะสม 16GB ควรจะเพียงพอ ถ้าเป็นไปได้ให้เชื่อมต่อ Pi ของคุณกับเราเตอร์ด้วยสายอีเธอร์เน็ต ซึ่งจะช่วยลดความล่าช้าของเครือข่ายให้เหลือน้อยที่สุด
ติดตั้ง Raspbian
ระบบปฏิบัติการที่ดีที่สุดที่จะใช้กับ Pi ของคุณคือ Raspbian เป็นตัวเลือกเริ่มต้นที่วางไว้โดยรากฐาน Raspberry Pi และอิงจาก Debian ซึ่งเป็นหนึ่งใน Linux เวอร์ชันที่ปลอดภัยและเสถียรที่สุด
ไปที่ไฟล์ หน้าดาวน์โหลด Rasbian และคว้าเวอร์ชันล่าสุด คุณสามารถใช้เวอร์ชัน Lite ได้ที่นี่เนื่องจากคุณไม่จำเป็นต้องใช้เดสก์ท็อปแบบกราฟิก
ในขณะที่กำลังดาวน์โหลดให้ดาวน์โหลดเวอร์ชันล่าสุดของ เอเชอร์ สำหรับระบบปฏิบัติการของคุณ หลังจากดาวน์โหลดเสร็จสิ้นให้แตกอิมเมจ Raspbian จากนั้นเปิด Etcher เลือกภาพ Raspbian จากจุดที่คุณแยกออกมา เลือกการ์ด SD ของคุณ (ใส่ก่อน) สุดท้ายเขียนภาพลงในการ์ด
วิธีสกรีนบันทึกใน snapchat โดยที่พวกเขาไม่รู้ปี 2020
ทิ้งการ์ด SD ไว้ในคอมพิวเตอร์ของคุณเมื่อเสร็จสิ้น เปิดตัวจัดการไฟล์และเรียกดูการ์ด คุณควรเห็นพาร์ติชั่นที่แตกต่างกันสองสามพาร์ติชัน มองหาพาร์ติชันสำหรับเริ่มระบบ เป็นไฟล์ที่มีไฟล์ kernel.img อยู่ในนั้น สร้างไฟล์ข้อความว่างบนพาร์ติชันสำหรับเริ่มระบบและเรียกมันว่า ssh โดยไม่มีนามสกุลไฟล์
ในที่สุดคุณก็สามารถเชื่อมต่อ Pi ของคุณได้ ตรวจสอบให้แน่ใจว่าคุณได้เสียบปลั๊กเป็นครั้งสุดท้าย คุณไม่จำเป็นต้องใช้หน้าจอแป้นพิมพ์หรือเมาส์ คุณกำลังจะเข้าถึง Raspberry Pi จากระยะไกลผ่านเครือข่ายของคุณ
ให้เวลา Pi สักครู่เพื่อตั้งค่าตัวเอง จากนั้นเปิดเว็บเบราว์เซอร์และไปที่หน้าจอการจัดการของเราเตอร์ ค้นหา Raspberry Pi และจดบันทึกที่อยู่ IP
ไม่ว่าคุณจะใช้ Windows, Linux หรือ Mac ให้เปิด OpenSSH เชื่อมต่อกับ Raspberry Pi ด้วย SSH
$ ssh [email protected]
เห็นได้ชัดว่าใช้ที่อยู่ IP จริงของ Pi ชื่อผู้ใช้คือเสมอ ปี่และรหัสผ่านคือราสเบอร์รี่.
ตั้งค่า OpenVPN
OpenVPN ไม่ใช่เรื่องง่ายในการตั้งค่าเป็นเซิร์ฟเวอร์ ข่าวดีก็คือคุณต้องทำเพียงครั้งเดียว ดังนั้นก่อนที่คุณจะเจาะลึกตรวจสอบให้แน่ใจว่า Raspbian เป็นรุ่นล่าสุดแล้ว
$ sudo apt update $ sudo apt upgrade
หลังจากการอัปเดตเสร็จสิ้นคุณสามารถติดตั้ง OpenVPN และยูทิลิตี้ใบรับรองที่คุณต้องการได้
$ sudo apt install openvpn easy-rsa
ผู้ออกใบรับรอง
ในการตรวจสอบสิทธิ์อุปกรณ์ของคุณเมื่อพยายามเชื่อมต่อกับเซิร์ฟเวอร์คุณต้องตั้งค่าผู้ออกใบรับรองเพื่อสร้างคีย์การกำหนดขนาด คีย์เหล่านี้จะช่วยให้มั่นใจได้ว่ามีเพียงอุปกรณ์ของคุณเท่านั้นที่จะสามารถเชื่อมต่อกับเครือข่ายในบ้านของคุณได้
ขั้นแรกสร้างไดเร็กทอรีสำหรับใบรับรองของคุณ ย้ายไปที่ไดเร็กทอรีนั้น
$ sudo make-cadir /etc/openvpn/certs $ cd /etc/openvpn/certs
มองหาไฟล์คอนฟิกูเรชัน OpenSSL จากนั้นเชื่อมโยงรายการล่าสุดกับopenssl.cnf.
$ ls | grep -i openssl $ sudo ln -s openssl-1.0.0.cnf openssl.cnf
ในโฟลเดอร์ใบรับรองเดียวกันนั้นคือไฟล์ที่เรียกว่า vars เปิดไฟล์นั้นด้วยโปรแกรมแก้ไขข้อความของคุณ Nano เป็นค่าเริ่มต้น แต่อย่าลังเลที่จะติดตั้ง Vim หากคุณพอใจกับมันมากขึ้น
ค้นหาไฟล์KEY_SIZEตัวแปรก่อน ตั้งค่าเป็น2591โดยค่าเริ่มต้น. เปลี่ยนเป็น4096.
export KEY_SIZE=4096
บล็อกหลักที่คุณต้องจัดการจะสร้างข้อมูลเกี่ยวกับผู้ออกใบรับรองของคุณ จะช่วยได้หากข้อมูลนี้ถูกต้อง แต่สิ่งที่คุณจำได้ก็ใช้ได้
export KEY_COUNTRY='US' export KEY_PROVINCE='CA' export KEY_CITY='SanFrancisco' export KEY_ORG='Fort-Funston' export KEY_EMAIL=' [email protected] ' export KEY_OU='MyOrganizationalUnit' export KEY_NAME='HomeVPN'
เมื่อคุณมีทุกอย่างแล้วให้บันทึกและออก
แพ็คเกจ Easy-RSA ที่คุณติดตั้งก่อนหน้านี้มีสคริปต์จำนวนมากที่ช่วยในการตั้งค่าทุกอย่างที่คุณต้องการ คุณเพียงแค่ต้องเรียกใช้ เริ่มต้นด้วยการเพิ่มไฟล์ vars เป็นแหล่งที่มา ซึ่งจะโหลดตัวแปรทั้งหมดที่คุณเพิ่งตั้งค่าไว้
$ sudo source ./vars
ถัดไปทำความสะอาดคีย์ คุณไม่มีดังนั้นอย่ากังวลกับข้อความที่แจ้งว่ากุญแจของคุณจะถูกลบ
$ sudo ./clean-install
สุดท้ายสร้างผู้ออกใบรับรองของคุณ คุณได้ตั้งค่าเริ่มต้นแล้วดังนั้นคุณจึงสามารถยอมรับค่าเริ่มต้นที่แสดงได้ อย่าลืมตั้งรหัสผ่านที่คาดเดายากและตอบใช่สำหรับสองคำถามสุดท้ายตามด้วยรหัสผ่าน
$ sudo ./build-ca
ทำคีย์
คุณประสบปัญหาทั้งหมดในการตั้งค่าผู้ออกใบรับรองเพื่อให้คุณเซ็นชื่อคีย์ได้ ตอนนี้ถึงเวลาสร้างบางอย่าง เริ่มต้นด้วยการสร้างคีย์สำหรับเซิร์ฟเวอร์ของคุณ
$ sudo ./build-key-server server
จากนั้นสร้าง Diffie-Hellman PEM เป็นสิ่งที่ OpenVPN ใช้เพื่อรักษาความปลอดภัยในการเชื่อมต่อไคลเอนต์กับเซิร์ฟเวอร์
$ sudo openssl dhparam 4096 > /etc/openvpn/dh4096.pem
คีย์สุดท้ายที่คุณต้องการนับจากนี้เรียกว่าคีย์ HMAC OpenVPN ใช้คีย์นี้เพื่อลงนามในแต่ละแพ็กเก็ตของข้อมูลที่แลกเปลี่ยนระหว่างไคลเอนต์และเซิร์ฟเวอร์ ช่วยป้องกันการโจมตีบางประเภทในการเชื่อมต่อ
$ sudo openvpn --genkey --secret /etc/openvpn/certs/keys/ta.key
การกำหนดค่าเซิร์ฟเวอร์
คุณมีกุญแจ ส่วนต่อไปในการตั้งค่า OpenVPN คือการกำหนดค่าเซิร์ฟเวอร์เอง โชคดีที่มีไม่มากที่คุณต้องทำที่นี่ Debian มีการกำหนดค่าพื้นฐานที่คุณสามารถใช้เพื่อเริ่มต้นได้ ดังนั้นเริ่มต้นด้วยการรับไฟล์การกำหนดค่านั้น
$ sudo gunzip -c /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz > /etc/openvpn/server.conf
ใช้คุณเป็นโปรแกรมแก้ไขข้อความอีกครั้งเพื่อเปิดขึ้น/etc/openvpn/server.conf. สิ่งแรกที่คุณต้องหาคือที่,ใบรับรองและสำคัญไฟล์ คุณต้องตั้งค่าให้ตรงกับตำแหน่งจริงของไฟล์ที่คุณสร้างขึ้นซึ่งทั้งหมดนี้อยู่ใน/ etc / openvpn / certs / keys.
ca /etc/openvpn/certs/keys/ca.crt cert /etc/openvpn/certs/keys/server.crt key /etc/openvpn/certs/keys/server.key # This file should be kept secret
ค้นหาไฟล์กล่าวคือการตั้งค่าและเปลี่ยนให้ตรงกับ Diffie-Hellman.pemที่คุณสร้างขึ้น
dh dh4096.pem
กำหนดเส้นทางสำหรับคีย์ HMAC ของคุณด้วย
tls-auth /etc/openvpn/certs/keys/ta.key 0
ค้นหาไฟล์การเข้ารหัสและตรวจสอบให้แน่ใจว่าตรงกับตัวอย่างด้านล่าง
cipher AES-256-CBC
มีตัวเลือกถัดไปอีกสองสามตัวเลือก แต่มีการแสดงความคิดเห็นพร้อมก;. ลบอัฒภาคที่อยู่ด้านหน้าของแต่ละตัวเลือกเพื่อเปิดใช้งาน
push 'redirect-gateway def1 bypass-dhcp' push 'dhcp-option DNS 208.67.222.222' push 'dhcp-option DNS 208.67.220.220'
มองหาไฟล์ผู้ใช้และกลุ่มตัวเลือก. ยกเลิกการใส่ข้อคิดเห็นและเปลี่ยนไฟล์ผู้ใช้เพื่อ openvpn
user openvpn group nogroup
สุดท้ายสองบรรทัดสุดท้ายนี้ไม่ได้อยู่ในการกำหนดค่าเริ่มต้น คุณจะต้องเพิ่มที่ท้ายไฟล์
ตั้งค่าการแยกย่อยการพิสูจน์ตัวตนเพื่อระบุการเข้ารหัสที่แข็งแกร่งขึ้นสำหรับการตรวจสอบผู้ใช้
# Authentication Digest auth SHA512
จากนั้น จำกัด การเข้ารหัสที่ OpenVPN สามารถใช้ได้เฉพาะที่แข็งแกร่งเท่านั้น สิ่งนี้ช่วย จำกัด การโจมตีที่เป็นไปได้สำหรับนักเข้ารหัสที่อ่อนแอ
# Limit Ciphers tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-256-CBC-SHA:TLS-DHE-RSA-WITH-CAMELLIA-256-CBC-SHA:TLS-DHE-RSA-WITH-AES-128-CBC-SHA:TLS-DHE-RSA-WITH-CAMELLIA-128-CBC-SHA
ทั้งหมดนี้มีไว้สำหรับการกำหนดค่า บันทึกไฟล์และออก
เริ่มเซิร์ฟเวอร์
ก่อนที่คุณจะสามารถเริ่มต้นเซิร์ฟเวอร์ได้คุณต้องทำเช่นนั้นopenvpnผู้ใช้ที่คุณระบุ
$ sudo adduser --system --shell /usr/sbin/nologin --no-create-home openvpn
เป็นผู้ใช้พิเศษสำหรับการเรียกใช้ OpenVPN เท่านั้นและจะไม่ทำอย่างอื่น
ตอนนี้เริ่มต้นเซิร์ฟเวอร์
$ sudo systemctl start openvpn $ sudo systemctl start [email protected]
ตรวจสอบว่าทั้งคู่ทำงานอยู่
$ sudo systemctl status openvpn*.service
หากทุกอย่างดูดีให้เปิดใช้งานเมื่อเริ่มต้น
$ sudo systemctl enable openvpn $ sudo systemctl enable [email protected]
การตั้งค่าไคลเอ็นต์
เซิร์ฟเวอร์ของคุณได้รับการตั้งค่าและทำงานแล้ว ถัดไปคุณต้องตั้งค่าการกำหนดค่าไคลเอนต์ของคุณ นี่คือการกำหนดค่าที่คุณจะใช้เพื่อเชื่อมต่ออุปกรณ์กับเซิร์ฟเวอร์ของคุณ กลับไปที่ไฟล์แน่นอนโฟลเดอร์และเตรียมสร้างคีย์ไคลเอ็นต์ คุณสามารถเลือกสร้างคีย์แยกกันสำหรับไคลเอ็นต์แต่ละรายหรือคีย์เดียวสำหรับไคลเอ็นต์ทั้งหมด สำหรับใช้ในบ้านควรใช้คีย์เดียว
$ cd /etc/openvpn/certs $ sudo source ./vars $ sudo ./build-key client
กระบวนการนี้เกือบจะเหมือนกับเซิร์ฟเวอร์หนึ่งดังนั้นให้ปฏิบัติตามขั้นตอนเดียวกัน
การกำหนดค่าไคลเอ็นต์
การกำหนดค่าสำหรับไคลเอ็นต์นั้นคล้ายกับเซิร์ฟเวอร์มาก อีกครั้งคุณมีเทมเพลตที่สร้างไว้ล่วงหน้าเพื่อใช้ในการกำหนดค่าของคุณ คุณจะต้องแก้ไขให้ตรงกับเซิร์ฟเวอร์เท่านั้น
เปลี่ยนเป็นไฟล์ลูกค้าไดเรกทอรี จากนั้นแกะการกำหนดค่าตัวอย่าง
$ cd /etc/openvpn/client $ sudo cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf /etc/openvpn/client/client.ovpn
เปิดไฟล์client.ovpnไฟล์ด้วยโปรแกรมแก้ไขข้อความของคุณ จากนั้นค้นหาไฟล์ระยะไกลตัวเลือก สมมติว่าคุณยังไม่ได้ใช้ VPN ค้นหาโดย Google IP ของฉันคืออะไร รับที่อยู่ที่แสดงและตั้งค่าระยะไกลที่อยู่ IP ไป ทิ้งหมายเลขพอร์ตไว้
remote 107.150.28.83 1194 #That IP ironically is a VPN
เปลี่ยนใบรับรองเพื่อให้สอดคล้องกับใบรับรองที่คุณสร้างขึ้นเช่นเดียวกับที่คุณทำกับเซิร์ฟเวอร์
ca ca.crt cert client.crt key client.key
ค้นหาตัวเลือกของผู้ใช้และยกเลิกการแสดงความคิดเห็น การเรียกใช้ไคลเอ็นต์เป็นไม่มีใคร.
user nobody group nogroup
ไม่ใส่ข้อคิดเห็นtls-authตัวเลือกสำหรับ HMAC
tls-auth ta.key 1
จากนั้นมองหาไฟล์การเข้ารหัสและตรวจสอบให้แน่ใจว่าตรงกับเซิร์ฟเวอร์
cipher AES-256-CBC
จากนั้นเพิ่มข้อ จำกัด การพิสูจน์ตัวตนและการเข้ารหัสที่ด้านล่างของไฟล์
# Authentication Digest auth SHA512 # Cipher Restrictions tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-256-CBC-SHA:TLS-DHE-RSA-WITH-CAMELLIA-256-CBC-SHA:TLS-DHE-RSA-WITH-AES-128-CBC-SHA:TLS-DHE-RSA-WITH-CAMELLIA-128-CBC-SHA
เมื่อทุกอย่างเรียบร้อยแล้วให้บันทึกไฟล์และออก ใช้น้ำมันดินเพื่อบรรจุการกำหนดค่าและใบรับรองเพื่อให้คุณสามารถส่งไปยังไคลเอนต์ได้
$ sudo tar cJf /etc/openvpn/clients/client.tar.xz -C /etc/openvpn/certs/keys ca.crt client.crt client.key ta.key -C /etc/openvpn/clients/client.ovpn
โอนแพ็คเกจนั้นไปยังไคลเอนต์ตามที่คุณเลือก SFTP, FTP และไดรฟ์ USB ล้วนเป็นตัวเลือกที่ยอดเยี่ยม
การส่งต่อพอร์ต
เพื่อให้สิ่งนี้ใช้งานได้คุณต้องกำหนดค่าเราเตอร์ของคุณเพื่อส่งต่อการรับส่งข้อมูล VPN ขาเข้าไปยัง Pi หากคุณใช้ VPN อยู่แล้วคุณต้องตรวจสอบให้แน่ใจว่าไม่ได้เชื่อมต่อกับพอร์ตเดียวกัน หากคุณเป็นเช่นนั้นให้เปลี่ยนพอร์ตในการกำหนดค่าไคลเอนต์และเซิร์ฟเวอร์ของคุณ
เชื่อมต่อกับเว็บอินเทอร์เฟซของเราเตอร์ของคุณโดยพิมพ์ที่อยู่ IP บนเบราว์เซอร์ของคุณ
เราเตอร์ทุกคนต่างกัน ถึงกระนั้นพวกเขาทุกคนก็ควรมีฟังก์ชันนี้อยู่บ้าง ค้นหาบนเราเตอร์ของคุณ
โดยพื้นฐานแล้วการตั้งค่าจะเหมือนกันในเราเตอร์ทุกตัว เข้าสู่พอร์ตเริ่มต้นและสิ้นสุด ควรจะเหมือนกันและเป็นค่าที่คุณกำหนดไว้ในการกำหนดค่าของคุณ จากนั้นสำหรับที่อยู่ IP ให้ตั้งค่าเป็น IP ของ Raspberry Pi บันทึกการเปลี่ยนแปลงของคุณ
เชื่อมต่อกับลูกค้า
ลูกค้าทุกคนมีความแตกต่างกันดังนั้นจึงไม่มีวิธีแก้ปัญหาที่เป็นสากล หากคุณใช้ Windows คุณจะต้องใช้ไฟล์ ไคลเอนต์ Windows OpenVPN .
บน Android คุณสามารถเปิด tarball ของคุณและโอนคีย์ไปยังโทรศัพท์ของคุณ จากนั้นติดตั้งแอป OpenVPN เปิดแอพและเสียบข้อมูลจากไฟล์กำหนดค่าของคุณ จากนั้นเลือกคีย์ของคุณ
บน Linux คุณต้องติดตั้ง OpenVPN เหมือนกับที่คุณทำกับเซิร์ฟเวอร์
$ sudo apt install openvpn
จากนั้นเปลี่ยนเป็น/ etc / openvpnและแกะ tarball ที่คุณส่งไป
$ cd /etc/openvpn $ sudo tar xJf /path/to/client.tar.xz
เปลี่ยนชื่อไฟล์ไคลเอ็นต์
$ sudo mv client.ovpn client.conf
อย่าเพิ่งเริ่มต้นไคลเอนต์ มันจะล้มเหลว คุณต้องเปิดใช้งานการส่งต่อพอร์ตบนเราเตอร์ของคุณก่อน
ปิดความคิด
ตอนนี้คุณควรมีการตั้งค่าที่ใช้งานได้แล้ว ไคลเอนต์ของคุณจะเชื่อมต่อโดยตรงผ่านเราเตอร์ของคุณไปยัง Pi จากนั้นคุณสามารถแชร์และเชื่อมต่อผ่านเครือข่ายเสมือนของคุณได้ตราบใดที่อุปกรณ์ทั้งหมดเชื่อมต่อกับ VPN ไม่มีขีด จำกัด ดังนั้นคุณจึงสามารถเชื่อมต่อคอมพิวเตอร์ทุกเครื่องกับ Pi VPN ได้ตลอดเวลา