การติดตั้งและการกำหนดค่า openvpn ubuntu 16.04 การกำหนดเส้นทางและสคริปต์ภายนอก การติดตั้งไฟล์การกำหนดค่าไคลเอนต์

เทคโนโลยีวีพีเอ็นรู้จักกันดีว่าเป็นวิธีการ การเข้าถึงที่ปลอดภัยไปยังทรัพยากรส่วนตัวของบริษัทตลอดจนเนื้อหาต่างๆ ไม่ว่าจะเป็นเสียง วิดีโอ หรือเอกสารสำคัญ ช่วยให้คุณสร้างเครือข่ายส่วนตัว เปลี่ยนเส้นทางเอกสารไปยังคอมพิวเตอร์เครื่องหนึ่งโดยใช้ทรัพยากรของอีกเครื่องหนึ่งหรือหลายเครื่อง Virtual Private Network มีการใช้กันอย่างแพร่หลายในทุกด้าน เบราว์เซอร์ที่ทันสมัย- ไม่ค่อยไปโดยไม่มีมัน ทำงานระยะไกลพนักงานขององค์กรขนาดใหญ่และสำคัญ การตั้งค่า OpenVPN Ubuntu ไม่ใช่แค่สำหรับนักเทคโนโลยีและผู้ที่ชื่นชอบเท่านั้น ความปลอดภัยสูงแต่ยังรวมถึงผู้ที่ไม่อยากทนด้วย ค่าใช้จ่ายสูงเนื้อหาที่ได้รับอนุญาตในประเทศที่ถูกจำกัดการเข้าถึง

ใน การตั้งค่าลินุกซ์ เครือข่ายเสมือนบาง.

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

การติดตั้ง OpenVPN เป็นแอปพลิเคชั่นเทคโนโลยีเครือข่ายส่วนตัวเสมือนที่มีให้ใช้งานฟรี เป็นไปได้ทั้งในระบบปฏิบัติการที่ใช้ Windows และ Linux ตั้งแต่ใน สภาพแวดล้อมลินุกซ์ การปรับแต่งอย่างละเอียดเราจะพิจารณาพารามิเตอร์ทั้งหมดของฟังก์ชันนี้ง่ายกว่า หัวข้อของ Virtual Private Networks ได้รับการกล่าวถึงอย่างกว้างขวางในเว็บไซต์และฟอรั่มที่มีธีมต่างๆ มากมาย ต้องขอบคุณทั้งผู้เชี่ยวชาญและผู้ที่ใช้เทคโนโลยีความปลอดภัยหน้าใหม่ทั่วโลกที่สามารถเข้าร่วมได้ การติดตั้ง OpenVPN Ubuntu ช่วยให้คุณไม่เพียงแต่เพิ่มระดับความปลอดภัยของข้อมูลส่วนบุคคล แต่ยังช่วยจัดกิจกรรมของคุณบนเครือข่ายอย่างเหมาะสมอีกด้วย

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

OpenVPN เป็นซอฟต์แวร์ที่ค่อนข้างใช้งานได้ รวดเร็วและยืดหยุ่น ซึ่งช่วยให้คุณทำงานกับ SSL VPN ได้ มันมีแบบเปิด ซอร์สโค้ด- ซึ่งหมายความว่าใครๆ ก็สามารถใช้ความสามารถของตนเป็นรายบุคคลได้ รวมถึงแก้ไขโค้ดโปรแกรมตามความต้องการของตนเองได้

ในความเป็นจริง เทคโนโลยีนี้นำเสนอการใช้เครือข่ายที่ไม่ปลอดภัยราวกับมี การป้องกันอันทรงพลัง- สิ่งนี้จะมีความเกี่ยวข้องมากหาก:

  1. คุณกำลังใช้การเชื่อมต่ออินเทอร์เน็ตที่มีการรักษาความปลอดภัยต่ำในการเข้าถึง
  2. มีการเซ็นเซอร์การเข้าถึงข้อมูลในสถานที่อยู่อาศัยของคุณ
  3. คุณอยู่ในสถานที่ที่มีฮอตสปอต Wi-Fi สาธารณะ
  4. คุณต้องซ่อนตำแหน่งของคุณอย่างดีจากผู้ใช้เครือข่ายรายอื่น
  5. คุณต้องการปกป้องข้อมูลส่วนบุคคลและรหัสผ่านของคุณให้ดียิ่งขึ้น

คำแนะนำ. เครือข่ายวีพีเอ็นเรียกว่าเสมือนเนื่องจากองค์ประกอบทั้งหมดถูกรวมเข้าด้วยกันโดยใช้ ซอฟต์แวร์ซึ่งใช้การเชื่อมต่อเสมือน

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

แนวคิดพื้นฐาน

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

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

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

กุญแจสาธารณะและใบรับรองเป็นข้อมูลพิเศษที่ใช้ในการเข้ารหัสข้อมูล เมื่อทำการแลกเปลี่ยนข้อมูล พวกเขาไปที่ศูนย์รับรองที่มีการลงนาม ต่อมาพวกเขาก็กลับมาที่ องค์ประกอบแหล่งที่มาเครือข่าย

เรามาฝึกกันต่อ

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

เริ่มต้นด้วยการติดตั้งและกำหนดค่า

ก่อนอื่นคุณต้องเชื่อมต่อกับเซิร์ฟเวอร์และให้คำสั่งต่อไปนี้:

"apt-get อัปเดต
apt-get ติดตั้ง openvpn"

คำแนะนำเหล่านี้จะเริ่มต้นขึ้น การติดตั้ง OpenVPN- ถัดไปคุณต้องติดตั้งและเตรียมใช้ยูทิลิตี้สำหรับสร้างคีย์และใบรับรอง:

"ซีดี /tmp
รับ https://github.com/OpenVPN/easy-rsa/archive/master.zip
apt-get ติดตั้ง unzip
คลายซิป master.zip
cd easy-rsa-master
./build/build-dist.sh
tar xvzf ./EasyRSA-git-development.tgz
cd EasyRSA-git-การพัฒนา"

"./easyrsa init-pki
./easyrsa build-ca
./easyrsa build-server-เซิร์ฟเวอร์เต็ม
./easyrsa build-client-full ไคลเอ็นต์1
./easyrsa gen-dh"

หลังจากรุ่น คุณต้องถ่ายโอนข้อมูลที่ได้รับไปที่ /etc/openvpn/:

"mv ./pki/dh.pem /etc/openvpn/dh.pem
mv ./pki/private/client1.key /etc/openvpn/
mv ./pki/private/server.key /etc/openvpn/
mv ./pki/ca.crt /etc/openvpn/
mv ./pki/issued/client1.crt /etc/openvpn/
mv ./pki/issued/server.crt /etc/openvpn/"

สร้างไฟล์ server.conf ในไดเร็กทอรีเดียวกันโดยใช้พารามิเตอร์ต่อไปนี้:

"โหมดเซิร์ฟเวอร์
ปรับแต่งการพัฒนา
เซิร์ฟเวอร์ 10.128.0.0 255.255.255.0
กด "เปลี่ยนเส้นทางเกตเวย์ def1"
กด "dhcp-option DNS 8.8.8.8"
เซิร์ฟเวอร์ tls
caca.crt
เซิร์ฟเวอร์ใบรับรอง.crt
คีย์เซิร์ฟเวอร์.คีย์
dh dh.pem
เซิร์ฟเวอร์ proto tcp
พอร์ต 1194
ลูกค้าต่อลูกค้า
คอมพ์-lzo
รักษาไว้ 10 120
กริยา 4
รหัส AES-256-CBC
ผู้ใช้ไม่มีใคร
กลุ่มโนกรุ๊ป
ลูกค้าสูงสุด 10"

ปล่อย

"บริการ openvpn เริ่มต้น"

"mkdir vpn
ซีดี VPN
scp vpn-เซิร์ฟเวอร์:/etc/openvpn/client1.crt ./
scp vpn-เซิร์ฟเวอร์:/etc/openvpn/client1.key ./
scp vpn-เซิร์ฟเวอร์:/etc/openvpn/ca.crt ./"

ที่นี่ในบรรทัดระยะไกลคุณต้องเขียนที่อยู่ IP ของเซิร์ฟเวอร์ดังที่แสดงในตัวอย่าง

"ลูกค้า
โปรโต tcp
ปรับแต่งการพัฒนา
ระยะไกล 123.45.67.89 1194
ยืนยันคีย์
ยังคงมีอยู่
caca.crt
ใบรับรอง client1.crt
คีย์ client1.key
รหัส AES-256-CBC
คอมพ์-lzo
กริยา 3"

"sudo openvpn --config ไคลเอนต์.conf"

ในหน้าต่างเทอร์มินัลที่อยู่ติดกันคุณต้องป้อนคำสั่ง:

"ปิง 10.128.0.1
Traceroute mail.ru"

หากทุกอย่างถูกต้อง คุณจะพบว่า 10.128.0.1 ส่ง Ping ได้สำเร็จ อย่างไรก็ตาม แพ็กเก็ตจะไม่ถูกส่งไปยังผู้รับ เนื่องจากไม่ได้กำหนดค่า NAT บนเซิร์ฟเวอร์ เรายังต้องทำขั้นตอนนี้ให้เสร็จสิ้น

บนเซิร์ฟเวอร์ คุณต้องเปิดไฟล์ชื่อ /etc/sysctl.conf และลบความคิดเห็นออกจากบรรทัด “net.ipv4.ip_forward=1” เพื่อให้ใช้งานได้

"echo1 >>/proc/sys/net/ipv4/conf/all/การส่งต่อ"

จากนั้นคุณจะต้องป้อน:

"iptables -A ส่งต่อ -s 10.128.0.0/24 -j ยอมรับ
iptables -A ไปข้างหน้า -d 10.128.0.0/24 -m สถานะ \
--รัฐก่อตั้งขึ้น เกี่ยวข้อง -j ยอมรับ
iptables -t nat -A การโพสต์ -s 10.128.0.0/24\
-j SNAT —to-source (ที่อยู่เซิร์ฟเวอร์)"

"iptables-save > /etc/iptables.rules"

คุณต้องตรวจสอบด้วยว่าบรรทัด “pre-up iptables-restore” เขียนอยู่ในไฟล์ “/etc/network/interfaces”< /etc/iptables.rules». Перезагрузите сервер OpenVPN, чтобы настраивать его дальше.

คุณต้องดำเนินการให้เสร็จสิ้น การตั้งค่า VPNผ่าน ผู้จัดการเครือข่าย- ในการดำเนินการนี้ คุณต้องป้อนคำสั่ง “sudoapt-get install network-manager-openvpn-gnome” คุณสามารถเขียนไฟล์ทั้งหมดที่ระบุไว้ก่อนหน้าลงในการกำหนดค่าในรูปแบบข้อความ

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

VPN (Virtual Private Network) เป็นเทคโนโลยีที่ช่วยให้คุณเชื่อมต่อคอมพิวเตอร์ผ่านอินเทอร์เน็ตเสมือนว่าอยู่ในเครือข่ายท้องถิ่นเดียวกัน ด้วยเหตุนี้ เราจึงสามารถรวมสำนักงานที่ตั้งอยู่ในเมืองและประเทศต่างๆ ให้เป็นเครือข่ายเดียวได้
โดยการติดตั้งเซิร์ฟเวอร์ VPN ที่บ้านและ ส่วนลูกค้าบนสมาร์ทโฟนของคุณ คุณสามารถเข้าถึงอินเทอร์เน็ตผ่านสาธารณะได้ จุด WiFiโดยไม่ต้องกลัวว่ารหัสผ่านของคุณจะถูกดักจับ
การเช่าเซิร์ฟเวอร์ในศูนย์ข้อมูลต่างประเทศมีค่าใช้จ่ายตั้งแต่ 5 ดอลลาร์ต่อเดือน และด้วยการวาง VPN ในภูมิภาคอเมริกา เราจึงสามารถเข้าถึง Spotify, Pandora, Hulu และบริการอื่น ๆ ที่ไม่มีให้บริการในประเทศของคุณ และการเซ็นเซอร์อินเทอร์เน็ตจะไม่ทำให้คุณกังวลอีกต่อไป .

1. ติดตั้ง OpenVPN

มาอัปเดตเซิร์ฟเวอร์ของเราและติดตั้ง OpenVPN และผู้ออกใบรับรอง

อัปเดต Sudo apt sudo apt อัปเกรด sudo apt ติดตั้ง openvpn easy-rsa

OpenVPN เป็นเครือข่ายส่วนตัวเสมือนที่ใช้ TLS/SSL เพื่อเข้ารหัสการรับส่งข้อมูล ซึ่งหมายความว่าเราจะต้องมีใบรับรองที่เชื่อถือได้

2. การจัดตั้งหน่วยงานออกใบรับรอง

มาตั้งค่าผู้ออกใบรับรองกันดีกว่า

Make-cadir ~/openvpn-ca cd ~/openvpn-ca nano vars

เรามาค้นหาส่วนต่อไปนี้:

- - - - - ส่งออก KEY_COUNTRY="US" ส่งออก KEY_PROVINCE="CA" ส่งออก KEY_CITY="SanFrancisco" ส่งออก KEY_ORG="Fort-Funston" ส่งออก KEY_EMAIL=" [ป้องกันอีเมล]" ส่งออก KEY_OU="MyOrganizationalUnit" . . . .

และแทนที่ด้วยข้อมูลของคุณ

- - - - - ส่งออก KEY_COUNTRY="RU " ส่งออก KEY_PROVINCE="SPb " ส่งออก KEY_CITY="Sankt-Peterburg " ส่งออก KEY_ORG="site " ส่งออก KEY_EMAIL="admin@site " ส่งออก KEY_OU="IT " - - - -

ไม่กี่บรรทัดด้านล่างนี้ เราจะเปลี่ยนค่าของ KEY_NAME

ส่งออก KEY_NAME="server" cd ~/openvpn-ca source vars

เพื่อเป็นการตอบสนอง ระบบควรออก:

หมายเหตุ: หากคุณเรียกใช้ ./clean-all ฉันจะทำ rm -rf บน /home/sammy/openvpn-ca/keys

ในกรณีนี้ ให้ล้างไดเร็กทอรีของคีย์ทั้งหมด:

./ทำความสะอาดทั้งหมด

และสร้างผู้ออกใบรับรองหลัก:

./build-ca

ค่าที่ต้องการจะถูกแทนที่โดยอัตโนมัติจากไฟล์ vars ซึ่งเราแก้ไขด้านบน เพียงกด Enter เพื่อยืนยันการเลือกของคุณ

เราได้ติดตั้งผู้ออกใบรับรองซึ่งเราจะใช้เพื่อสร้างไฟล์อื่นๆ ที่เราต้องการ

3. สร้างใบรับรอง คีย์ และไฟล์การเข้ารหัสสำหรับเซิร์ฟเวอร์

ก่อนอื่นเรามาสร้างกัน ใบรับรอง OpenVPNและคีย์สำหรับเซิร์ฟเวอร์ เมื่อต้องการทำเช่นนี้ ให้เรียกใช้คำสั่งต่อไปนี้:

./build-key-เซิร์ฟเวอร์เซิร์ฟเวอร์

เรายอมรับค่าเริ่มต้นทั้งหมด ในตอนท้ายเราเลือก "y" สองครั้ง
ตอนนี้เรามาสร้างคีย์โปรโตคอล Diffie-Hellman ด้วยคำสั่ง:

./build-dh

และลายเซ็น HMAC เพื่อเสริมความสามารถของเซิร์ฟเวอร์ในการตรวจสอบความสมบูรณ์และความถูกต้องของข้อมูล TSL ที่ส่ง:

Openvpn --genkey --คีย์ลับ/ta.key

4. สร้างใบรับรองและคู่คีย์สำหรับไคลเอ็นต์

พิจารณาขั้นตอนการสร้างคีย์และใบรับรองสำหรับไคลเอ็นต์ไคลเอ็นต์1 หากมีลูกค้าหลายราย กระบวนการสร้างจะคล้ายกัน การเชื่อมต่ออัตโนมัติเราจะสร้างไฟล์โดยไม่มีรหัสผ่าน เราใช้คำสั่ง build-key:

Cd ~/openvpn-ca แหล่งที่มา vars ./build-key client1

5. การตั้งค่าบริการ OpenVPN

คัดลอกไฟล์ที่สร้างขึ้น (ใบรับรองและคีย์ CA, ใบรับรองเซิร์ฟเวอร์และคีย์, ลายเซ็น HMAC, ไฟล์ Diffie-Hellman) จากไดเร็กทอรี ~/openvpn-ca/keys ไปยัง /etc/openvpn

Cd ~/openvpn-ca/keys sudo cp ca.crt ca.key server.crt server.key ta.key dh2048.pem /etc/openvpn

Gunzip -c /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz | sudo tee /etc/openvpn/server.conf sudo นาโน /etc/openvpn/server.conf

เรามาค้นหาส่วน HMAC และยกเลิกการใส่เครื่องหมายข้อคิดเห็นในบรรทัดด้วย tls-auth และยังเพิ่มพารามิเตอร์ key-direction ด้วย:

Tls-auth ta.key 0 # ไฟล์นี้เป็นคีย์ลับทิศทาง 0

จากนั้นเรามองหาส่วนการเข้ารหัสและยกเลิกการใส่เครื่องหมายบรรทัดด้วยรหัส AES-128-CBC จากนั้นจึงเพิ่มอัลกอริธึม HMAC:

รหัส AES-128-CBC รับรองความถูกต้อง SHA256

และสุดท้าย ค้นหาผู้ใช้และกลุ่มบรรทัดแล้วยกเลิกการใส่เครื่องหมายข้อคิดเห็น:

ผู้ใช้ไม่มีใครจัดกลุ่ม nogroup

6. การเปิดใช้งานบริการ OpenVPN

เพื่อที่จะใช้เซิร์ฟเวอร์ของเราตามวัตถุประสงค์ เซิร์ฟเวอร์จะต้องสามารถเปลี่ยนเส้นทางการรับส่งข้อมูลได้

sudo นาโน /etc/sysctl.conf

ค้นหาและยกเลิกการใส่เครื่องหมายข้อคิดเห็นบรรทัด:

net.ipv4.ip_forward=1

หากต้องการใช้การตั้งค่าที่เปลี่ยนแปลง:

sudo sysctl -p

มาอธิบายว่าเซิร์ฟเวอร์ของเราจะเริ่มอย่างไร เนื่องจากชื่อของไฟล์คอนฟิกูเรชันคือ server.conf เราจะให้คำสั่งต่อไปนี้:

sudo systemctl เริ่ม openvpn@เซิร์ฟเวอร์

ตรวจสอบว่าเซิร์ฟเวอร์เริ่มทำงานแล้วหรือไม่:

sudo systemctl สถานะ openvpn@เซิร์ฟเวอร์

และอินเทอร์เฟซของ tun ขึ้นหรือไม่?

ip addr แสดง tun0

หากทุกอย่างใช้งานได้ ให้เพิ่มการตั้งค่าเพื่อเริ่มต้น:

sudo systemctl เปิดใช้งาน openvpn@เซิร์ฟเวอร์

7. สคริปต์สำหรับการตั้งค่าไคลเอนต์

mkdir -p ~/client-configs/files chmod 700 ~/client-configs/files cp /usr/share/doc/openvpn/ examples/sample-config-files/ client.conf ~/client-configs/base.conf

มาทำการเปลี่ยนแปลงไฟล์ base.conf กัน

นาโน ~/client-configs/base.conf - - # ชื่อโฮสต์/IP และพอร์ตของเซิร์ฟเวอร์ - คุณสามารถมีรายการระยะไกลหลายรายการ # เพื่อโหลดบาลานซ์ระหว่างเซิร์ฟเวอร์ เซิร์ฟเวอร์ระยะไกล_IP_address 1194 - -

แทนที่จะเป็น server_IP_address เราจะเขียนที่อยู่ IP ของเซิร์ฟเวอร์ OpenVPN ของเรา

ผู้ใช้ proto udp ไม่มีใครจัดกลุ่ม nogroup

เราจะจัดเก็บใบรับรองและคีย์โดยตรงในไฟล์การกำหนดค่า ซึ่งเราจะสร้างในภายหลัง ดังนั้นเรามาแสดงความคิดเห็นในบรรทัดกัน แคลิฟอร์เนียใบรับรองและ สำคัญ

# พาร์ม SSL/TLS # ดูการกำหนดค่าเซิร์ฟเวอร์ ไฟล์สำหรับเพิ่มเติม # คำอธิบาย วิธีที่ดีที่สุดคือใช้ # คู่ไฟล์ .crt/.key แยกต่างหาก # สำหรับแต่ละลูกค้า. ไฟล์ ca # ไฟล์เดียวสามารถใช้ได้กับไคลเอนต์ทั้งหมด #ca ca.crt #cert client.crt #key client.key

เรามานำการตั้งค่าของส่วนไคลเอนต์ไปสู่การตั้งค่าเดียวกันของเซิร์ฟเวอร์

ตรวจสอบการมีอยู่ของไฟล์ /etc/openvpn/update-resolv-conf บนระบบไคลเอ็นต์ของคุณ หากมีอย่างใดอย่างหนึ่ง สามบรรทัดสุดท้ายจะต้องไม่มีข้อคิดเห็น

รหัส AES-128-CBC รับรองความถูกต้องคีย์ SHA256 ทิศทาง 1 # สคริปต์ความปลอดภัย 2 # ขึ้น /etc/openvpn/update-resolv-conf # ลง /etc/openvpn/update-resolv-conf

ในที่สุดเรามาสร้างสคริปต์ที่เราจะสร้างไฟล์การกำหนดค่าสำหรับลูกค้ากันดีกว่า

นาโน ~/client-configs/make_config.sh

มาแทรกข้อความ:

#!/bin/bash # อาร์กิวเมนต์แรก: ตัวระบุไคลเอ็นต์ KEY_DIR=~/openvpn-ca/keys OUTPUT_DIR=~/client-configs/files BASE_CONFIG=~/client-configs/base.conf cat $(BASE_CONFIG) \<(echo -e "")\$(KEY_DIR)/ca.crt\<(echo -e "\n ")\$(KEY_DIR)/$(1).crt\<(echo -e "\n ")\$(KEY_DIR)/$(1).key\<(echo -e "\n ")\$(KEY_DIR)/ta.key\<(echo -e "") \ > $(OUTPUT_DIR)/$(1).ovpn

มาบันทึกและปิดไฟล์ จากนั้นทำให้สามารถเรียกใช้งานได้:

Chmod 700 ~/client-configs/make_config.sh

8. การสร้างไฟล์การกำหนดค่าไคลเอนต์

cd ~/client-configs ./make_config.sh ไคลเอนต์1

มาตรวจสอบสิ่งที่เกิดขึ้น:

Ls ~/client-configs/files

ด้วยเหตุนี้เราจึงควรได้รับไฟล์

ลูกค้า1.ovpn

พร้อมการตั้งค่าการเชื่อมต่อ ใบรับรอง และคีย์

ไฟล์นี้จะต้องถูกส่งไปยังคอมพิวเตอร์ไคลเอนต์โดยใช้การเชื่อมต่อที่ปลอดภัย บน Linux คุณสามารถใช้คำสั่ง scp บน คอมพิวเตอร์ไคลเอนต์มาวิ่งกันเถอะ:

Scp viktor@openvpn_server_ip :client-configs/files/client1.ovpn ~/

คัดลอกไฟล์ “client1.ovpn” จาก เซิร์ฟเวอร์ระยะไกลไปยังเครื่องคอมพิวเตอร์ของคุณ

9. การติดตั้งไฟล์การกำหนดค่าไคลเอนต์

เราจะดำเนินการขั้นตอนต่อไปนี้เฉพาะบนคอมพิวเตอร์ไคลเอนต์ที่ใช้ Ubuntu เท่านั้น มาติดตั้ง OpenVPN กัน

อัปเดต Sudo apt-get sudo apt-get ติดตั้ง openvpn

ตรวจสอบว่ามีไฟล์ /etc/openvpn/update-resolv-conf อยู่ในระบบของเราหรือไม่

LS /etc/openvpn.ls

หากเราส่งออก:

อัปเดต-แก้ไข-Conf

มาแก้ไขไฟล์การกำหนดค่า client1 .ovpn ซึ่งเราดาวน์โหลดจากเซิร์ฟเวอร์

นาโนไคลเอ็นต์1 .ovpn

ยกเลิกการแสดงความคิดเห็นในบรรทัดต่อไปนี้:

ความปลอดภัยของสคริปต์ 2 ขึ้นไป /etc/openvpn/update-resolv-conf down /etc/openvpn/update-resolv-conf

มาบันทึกและปิดไฟล์กัน

ตอนนี้เรามาลองเริ่มการเชื่อมต่อกัน:

Sudo openvpn --config ไคลเอนต์1 .ovpn

หากคุณทำทุกอย่างถูกต้อง คุณจะสิ้นสุดการเชื่อมต่อกับเซิร์ฟเวอร์

คุณต้องการเข้าถึงอินเทอร์เน็ตที่ปลอดภัยจากสมาร์ทโฟนหรือแล็ปท็อปของคุณเมื่อเชื่อมต่อกับเครือข่ายที่ไม่ปลอดภัยผ่าน WiFi ของโรงแรมหรือร้านกาแฟหรือไม่? เครือข่ายส่วนตัวเสมือน (VPN) ช่วยให้คุณใช้เครือข่ายที่ไม่ปลอดภัยได้เหมือนกับว่าคุณอยู่ในเครือข่ายส่วนตัว การรับส่งข้อมูลทั้งหมดของคุณในกรณีนี้ต้องผ่านเซิร์ฟเวอร์ VPN

เมื่อใช้ร่วมกับการใช้การเชื่อมต่อ HTTPS การตั้งค่าที่อธิบายไว้ด้านล่างจะช่วยให้คุณสามารถรักษาความปลอดภัยข้อมูลส่วนตัวของคุณ เช่น การเข้าสู่ระบบและรหัสผ่าน เช่นเดียวกับการซื้อของคุณ ยิ่งกว่านั้นคุณสามารถเลี่ยงได้ ข้อ จำกัด ในระดับภูมิภาคและการเซ็นเซอร์ ตลอดจนซ่อนตำแหน่งของคุณและการรับส่งข้อมูล HTTP ที่ไม่ได้เข้ารหัสจากเครือข่ายที่ไม่ปลอดภัย

คุณสามารถถ่ายโอนโปรไฟล์จากคอมพิวเตอร์ไปยังโทรศัพท์ของคุณได้โดยการเชื่อมต่อ อุปกรณ์แอนดรอยด์ไปยังคอมพิวเตอร์ของคุณผ่าน USB และคัดลอกไฟล์ คุณยังสามารถย้ายไฟล์โปรไฟล์โดยใช้การ์ด SD ได้โดยการคัดลอกโปรไฟล์ไปยังการ์ดและใส่การ์ดลงในอุปกรณ์ Android ของคุณ

เปิดแอปพลิเคชัน OpenVPN และคลิกที่เมนูเพื่อนำเข้าโปรไฟล์

สารประกอบ

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

ขั้นตอนที่ 13 ทดสอบการเชื่อมต่อ VPN

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

ไซต์นี้จะส่งคืนที่อยู่ IP ที่กำหนดให้คุณโดยผู้ให้บริการอินเทอร์เน็ตของคุณ เพื่อจะตรวจสอบว่าอันไหน เซิร์ฟเวอร์ DNSกำลังใช้งานอยู่ คลิ๊กที่ การทดสอบเพิ่มเติม.

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

ขั้นตอนที่ 14: เพิกถอนใบรับรองไคลเอ็นต์

ในบางครั้ง คุณอาจต้องเพิกถอนใบรับรองไคลเอ็นต์เพื่อป้องกันการเข้าถึงเซิร์ฟเวอร์ VPN

ในการดำเนินการนี้ ให้ไปที่ไดเร็กทอรีผู้ออกใบรับรองของคุณแล้วป้อนคำสั่ง:

  • ซีดี ~/openvpn-ca.cd
  • แหล่งที่มา
  • ./เพิกถอน-ไคลเอ็นต์เต็ม3

ผลลัพธ์ของคำสั่งนี้จะลงท้ายด้วยข้อผิดพลาด 23 ซึ่งเป็นเรื่องปกติ จากการทำงานนี้ ไฟล์ crl.pem จะถูกสร้างขึ้นในไดเร็กทอรีคีย์พร้อมข้อมูลที่จำเป็นในการเพิกถอนใบรับรอง

ย้ายไฟล์นี้ไปที่ไดเร็กทอรี /etc/openvpn:

  • sudo cp ~/openvpn-ca/keys/crl.pem /etc/openvpn
  • sudo นาโน /etc/openvpn/server.conf

เพิ่มบรรทัด crl-verify ต่อท้ายไฟล์ เซิร์ฟเวอร์ OpenVPN จะตรวจสอบรายการเพิกถอนใบรับรองทุกครั้งที่มีคนเชื่อมต่อกับเซิร์ฟเวอร์

/etc/openvpn/server.conf

Crl-ยืนยัน crl.pem

บันทึกและปิดไฟล์

รีสตาร์ท OpenVPN เพื่อให้กระบวนการเพิกถอนใบรับรองเสร็จสมบูรณ์:

  • sudo systemctl รีสตาร์ท openvpn @ เซิร์ฟเวอร์

ตอนนี้ไคลเอนต์จะไม่สามารถสร้างการเชื่อมต่อกับเซิร์ฟเวอร์ OpenVPN โดยใช้ใบรับรองเก่าได้

หากต้องการเพิกถอนใบรับรองเพิ่มเติม ให้ทำตามขั้นตอนเหล่านี้:

    สร้าง รายการใหม่ใบรับรองที่ถูกเพิกถอนโดยใช้คำสั่ง vars ต้นทางในไดเร็กทอรี ~/openvpn-ca และดำเนินการคำสั่ง revoid-full ด้วยชื่อไคลเอ็นต์

    คัดลอกรายการเพิกถอนใบรับรองใหม่ไปยังไดเร็กทอรี /etc/openvpn ดังนั้นจึงเขียนทับรายการเก่า

    เริ่มบริการ OpenVPN ใหม่

ขั้นตอนนี้สามารถใช้เพื่อเพิกถอนใบรับรองใดๆ ที่คุณสร้างไว้ก่อนหน้านี้ได้

บทสรุป

ยินดีด้วย! ตอนนี้คุณสามารถเข้าถึงอินเทอร์เน็ตได้อย่างปลอดภัย การรับส่งข้อมูลทั้งหมดของคุณได้รับการปกป้องจากการดักฟังโดยเซ็นเซอร์และผู้บุกรุก

สำหรับการกำหนดค่า ลูกค้าเพิ่มเติมทำซ้ำขั้นตอน 6 และ 11-13 สำหรับอุปกรณ์ใหม่แต่ละเครื่อง หากต้องการเพิกถอนการเข้าถึงสำหรับไคลเอ็นต์เฉพาะ ให้ใช้ขั้นตอน 14 .

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

และเมื่อไม่นานมานี้ฉันสังเกตเห็นว่าในบรรดาขยะที่เก็บไว้นั้น /etc/init.dสคริปต์ที่มีชื่อแฝงตัวอยู่อย่างสุภาพ “แล้วไงล่ะ?” - ผู้ดูแลระบบที่มีประสบการณ์จะถามทันที ประเด็นก็คือจนกระทั่งเมื่อไม่นานมานี้มีการเพิ่มขึ้นของอินเทอร์เฟซเครือข่ายรวมถึง ตุน,ผมจัดเฉพาะผ่าน /etc/เครือข่าย/อินเทอร์เฟซการทำงานด้วยตัวเลือก ก่อนขึ้นเพื่อเริ่ม OpenVPN daemon และตัวเลือกต่างๆ ก่อนลงเพื่อหยุดมัน "ความอับอาย" ทั้งหมดนี้ถูกทำให้เจือจางลงทุกหนทุกแห่งด้วยคำสั่งต่าง ๆ ที่จัดการตารางเส้นทาง... โดยทั่วไปแล้วผลลัพธ์ที่ได้คือภาพที่ค่อนข้างยุ่งยาก โดยหลักการแล้วทุกอย่างทำงานได้ค่อนข้างดี แต่เนื่องจากนักพัฒนามีวิธีที่แตกต่างกัน (วิธี Ubuntu?) ทำไมไม่ลองใช้มันโดยเฉพาะอย่างยิ่งเมื่อสิ่งนี้จะช่วยบรรเทาลงได้อย่างมาก /etc/เครือข่าย/อินเทอร์เฟซ- แล้วฉันได้อะไรมา?

การติดตั้ง OpenVPN

การติดตั้ง OpenVPN บน Ubuntu ไม่จำเป็นต้องใช้เทคนิคใดๆ ทั้งสิ้น:

$ sudo apt-get ติดตั้ง openvpn

อย่าลืมยืนยันว่ามีการติดตั้งการอ้างอิงทั้งหมดแล้ว

ผู้ที่ต้องการ/จำเป็นต้องติดตั้ง OpenVPN จากซอร์สโค้ดจะต้องทำความคุ้นเคย

หากคุณสนใจ แพ็คเกจไบนารีสำหรับแพลตฟอร์มอื่นๆ โปรดไปที่

ตำแหน่งของไฟล์สำคัญ

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

  • คีย์เข้ารหัสส่วนตัวของลูกค้าในรูปแบบ .pem(ลองเรียกไฟล์ ลูกค้า.คีย์);
  • ใบรับรองไคลเอ็นต์ที่ลงนามโดยผู้ออกใบรับรองในรูปแบบ .pem, (ลองตั้งชื่อไฟล์ ลูกค้า.crt);
  • ใบรับรองผู้ออกใบรับรองเซิร์ฟเวอร์ในรูปแบบ .pemที่มีการเซ็นชื่อไฟล์ ลูกค้า.crt(ลองเรียกไฟล์ แคลิฟอร์เนีย)

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

$ sudo chown -R root.root /media/keys
$ sudo chmod 0700 /สื่อ/คีย์
$ sudo chmod 0600 /สื่อ/คีย์/*
# ls -la /media/keys
drwx------ 2 รูต รูท 1,024 2010-08-18 15:32 .
drwx------ 5 รูต รูท 1,024 2010-08-18 15:24 ..
-rw------- 1 รูท รูท 1265 18-08-2553 22:27 น. crt
-rw------- 1 รูทรูท 3821 18-08-2553 15:13 client.crt
-rw------- 1 รูทรูท 887 18-08-2553 15:13 client.key

ไฟล์การกำหนดค่า

โดยทั่วไปไฟล์การกำหนดค่า OpenVPN จะอยู่ในไดเร็กทอรีหรือ /usr/local/etc/openvpn- ในบทความนี้ ฉันจะถือว่าคุณได้ติดตั้ง OpenVPN จากที่เก็บ Ubuntu และไดเร็กทอรีสำหรับจัดเก็บการกำหนดค่าคือ .

หากคุณเชื่อมต่อกับเซิร์ฟเวอร์ OpenVPN ที่คุณไม่ได้กำหนดค่า โดยปกติแล้วบุคคลนี้ควรให้ไฟล์การกำหนดค่า "ฐาน" แก่คุณซึ่งมีชุดพารามิเตอร์ขั้นต่ำที่จำเป็น ท่ามกลาง พารามิเตอร์การกำหนดค่า OpenVPN เป็นรายบุคคลสำหรับโฮสต์ไคลเอ็นต์ โดยส่วนใหญ่มักจะเป็นเส้นทางไปยังไฟล์คีย์และใบรับรอง เช่นเดียวกับเส้นทางไปยังสคริปต์ภายนอกและสคริปต์การเริ่มต้น

สมมติว่าเซิร์ฟเวอร์ที่คุณกำลังเชื่อมต่อถูกเรียก myvpnsrv.com- การตั้งชื่อไฟล์การกำหนดค่าค่อนข้างสะดวก (อาจมีหลายไฟล์หากคุณใช้การเชื่อมต่อหลายรายการหรือหลายตัวเลือกสำหรับการเชื่อมต่อ) ตามชื่อเซิร์ฟเวอร์ ในตัวอย่างของเรา ไฟล์การกำหนดค่าจะอยู่ในนั้น /etc/openvpn/myvpnsrv.confโดยมีเนื้อหาดังนี้

ลูกค้า
myvpnsrv.com ระยะไกล
ca /media/keys/ca.crt
คีย์ /media/keys/client.key
ใบรับรอง /media/keys/client.crt
ภูต
ปรับแต่งการพัฒนา
โปรโต udp
คอมพ์-lzo

บรรทัดแรกบอก OpenVPN ว่าการเชื่อมต่อจะอยู่ในโหมดไคลเอนต์

ค่าพารามิเตอร์ ระยะไกลระบุชื่อโฮสต์หรือที่อยู่ IP ของเซิร์ฟเวอร์

ค่าพารามิเตอร์ แคลิฟอร์เนีย, กุญแจและ ใบรับรองกำหนดเส้นทางไปยังไฟล์ใบรับรอง CA, คีย์ส่วนตัว และใบรับรองไคลเอ็นต์ ตามลำดับ

โดยการระบุพารามิเตอร์ ภูตเราบังคับให้ OpenVPN แยกออกจากคอนโซลและทำงานในเบื้องหลัง

พารามิเตอร์ ผู้พัฒนาระบุประเภทของอินเทอร์เฟซเครือข่ายที่จะใช้เพื่อแลกเปลี่ยนการรับส่งข้อมูลที่เข้ารหัสกับเซิร์ฟเวอร์ อาจสร้างความแตกต่าง ตุนหรือ แตะ- คุณสามารถดูความแตกต่างพื้นฐานระหว่างอินเทอร์เฟซทั้งสองประเภทนี้ได้

พารามิเตอร์ โปรโตกำหนดโปรโตคอลที่จะห่อการรับส่งข้อมูลที่เข้ารหัส ใช้ UDP

ความพร้อมใช้งานของพารามิเตอร์ คอมพ์-lzoบังคับให้ OpenVPN บีบอัดการรับส่งข้อมูล ซึ่งมีประโยชน์มากเมื่อคุณมีช่องทางการรับส่งข้อมูลที่ "แคบ"

การกำหนดเส้นทางและสคริปต์ภายนอก

เหนือสิ่งอื่นใด OpenVPN ช่วยให้คุณสามารถเรียกใช้โปรแกรมภายนอกหลังจากเริ่มต้นระบบ เช่นเดียวกับก่อนและหลังการหยุด daemon สิ่งที่มีประโยชน์มากหากคุณต้องการปรับแต่งตารางเส้นทางเมื่อยกอุโมงค์

สังเกตจุดละเอียดอ่อนจุดหนึ่งทันที เพื่อให้ OpenVPN daemon สามารถเปิดโปรแกรมภายนอกได้ จะต้องได้รับอนุญาตอย่างชัดเจนให้ทำเช่นนั้นโดยส่งพารามิเตอร์ ความปลอดภัยของสคริปต์โดยมีค่าไม่ต่ำกว่า 2 อย่างไรก็ตาม ความปลอดภัย

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

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

ตอนนี้เล็กน้อยเกี่ยวกับลักษณะเฉพาะของการเรียกโปรแกรมภายนอกโดย OpenVPN daemon ความจริงก็คือพวกเขาไม่ได้ถูกเรียกว่า "โง่" เท่านั้น แต่ยังมีการส่งผ่านพารามิเตอร์การเชื่อมต่อเพิ่มเติมอีกด้วยซึ่งสะดวกมากเมื่อทำงานกับตารางเส้นทาง

รูปแบบสำหรับการเรียกโปรแกรมภายนอกโดย OpenVPN daemon ระหว่างการเริ่มต้น อินเตอร์เฟซจูนต่อไป:

tun_dev tun_mtu link_mtu ifconfig_local_ip ifconfig_remote_ip

  • tun-dev— ชื่ออินเทอร์เฟซเครือข่าย เช่น tun1
  • tun_mtu— MTU ของอินเทอร์เฟซเครือข่าย
  • link_mtu— การเชื่อมต่อ MTU;
  • ifconfig_local_ip— ที่อยู่ IP ของลูกค้า (ด้าน "ของเรา")
  • ifconfig_remote_ip— ที่อยู่ IP ไคลเอนต์ (ฝั่งเซิร์ฟเวอร์);
  • เริ่มต้น— ส่งถ้าโปรแกรมถูกเรียกในขณะที่ daemon กำลังเริ่มทำงาน
  • รีสตาร์ท— ส่งถ้าโปรแกรมถูกเรียกระหว่างการรีสตาร์ท daemon (ตัวอย่างเช่น หากการเชื่อมต่อขาดหาย)

สำหรับ แตะอินเทอร์เฟซรูปแบบจะเหมือนกัน ยกเว้นว่าแทนที่จะเป็น ifconfig_remote_ipส่ง ifconfig_netmaskซึ่งมีซับเน็ตมาสก์ที่ลูกค้าของเราตั้งอยู่

นอกจากนี้ควรสังเกตด้วยว่าพารามิเตอร์ทั้งหมดที่คุณจะผ่าน โปรแกรมภายนอก, โดยใช้ ขึ้น/ลงจะถูกทดแทน ก่อนพารามิเตอร์ที่ระบุไว้ข้างต้น

ฉันคิดว่านั่นเป็นทฤษฎีที่เพียงพอ มาเริ่มเรื่องธุรกิจกันดีกว่า สมมติว่าคุณต้องแก้ไขตารางเส้นทางของโฮสต์ของคุณเมื่อคุณเริ่ม/รีสตาร์ท/หยุด OpenVPN daemon สำหรับอินเทอร์เฟซเครือข่ายสองรายการ ฉันแก้ไขปัญหานี้ด้วยสคริปต์ทุบตีต่อไปนี้:

#!/bin/bash case $(1) in "up") case $(2) in "tun0") กฎ ip เพิ่ม ... เพิ่มเส้นทาง ip ... ;;

"tun1") เพิ่มกฎ ip ... เพิ่มเส้นทาง ip ... ;;

อีแซค ;; "ลง") กรณี $(2) ใน "tun0") กฎ ip เดล ... ip เส้นทางเดล ... ;;
"tun1") กฎ ip เดล ... เดลเส้นทาง ip ... ;;

อีแซค ;; อีแซค

  • $1 ขึ้นหรือ ลง;
  • $2 และสคริปต์ถูกเรียกโดยพารามิเตอร์ OpenVPN สองตัว: ขึ้น "/usr/local/bin/routes.sh ขึ้น"หรือ ลง "/usr/local/bin/routes.sh ลง";
  • $3 นั่นคือสคริปต์ที่เรียกใช้จะได้รับพารามิเตอร์ต่อไปนี้โดยประมาณ:
  • $4 — ชื่ออินเทอร์เฟซ ในระบบผมกำลังพิจารณาว่าอาจเป็นได้
  • $5 tun0
  • $6 ทัน1
  • $7 เริ่มต้นหรือ รีสตาร์ท(ฉันละเว้นพารามิเตอร์โดยสิ้นเชิงดังนั้นการจัดการกับเส้นทางจะดำเนินการเสมอแม้ว่าอินเทอร์เฟซเครือข่ายจะไม่ถูกปิดใช้งาน แต่จะมีการรีสตาร์ท daemon "ปกติ" เท่านั้นเนื่องจากขาดการสื่อสาร)

ดำเนินไปโดยไม่ได้บอกว่าคุณสามารถ (และควร) ใช้ค่าพารามิเตอร์ $3 - $6 ตัวอย่างเช่น หากคุณต้องการรวมการรับส่งข้อมูลบางส่วนผ่านอุโมงค์ VPN คุณสามารถใช้บางอย่างเช่น:

เพิ่มเส้นทาง ip จาก 192.168.0.0/24 ผ่าน $(6)

ใช้ค่าตัวแปร $6 เพื่อกำหนดที่อยู่ของเราเตอร์ที่ควรกำหนดเส้นทางการรับส่งข้อมูล

การเริ่มต้นและหยุด daemon

ที่จริงแล้วทำไมการเต้นทั้งหมดนี้ด้วยการเรียกสคริปต์ภายนอกและละทิ้งสิ่งเก่าที่ดี /etc/เครือข่าย/อินเทอร์เฟซ- นี่คือสิ่งที่เกี่ยวกับ

เปิดไฟล์ /etc/default/openvpnและในตัวแปร สตาร์ทอัตโนมัติระบุชื่อของไฟล์การกำหนดค่า (หรือหลายไฟล์โดยคั่นด้วยช่องว่าง) จากไดเร็กทอรีโดยการกัดส่วนขยาย ".conf" สำหรับตัวอย่างของเรา มันจะมีลักษณะดังนี้:

เริ่มอัตโนมัติ = "myvpnsrv"

หรือหากคุณต้องการให้ OpenVPN ทำการเชื่อมต่อตามไฟล์การกำหนดค่าทั้งหมดที่พบ:

ตอนนี้ “เม็ดเดียวก็เพียงพอแล้ว” ในรูปแบบ:

บริการ sudo openvpn เริ่มต้น

และสคริปต์จาก /etc/init.d/openvpnจะเปิดตัว OpenVPN อย่างระมัดระวังสำหรับการกำหนดค่าที่พบทั้งหมด

การหยุดภูตก็ไม่ใช่เรื่องยากเช่นกัน:

บริการ sudo openvpn หยุด

และสุดท้าย หากคุณต้องการสิ่งที่มีอยู่ ไฟล์การกำหนดค่าไม่ได้รับการประมวลผล ก็เพียงพอแล้วที่จะกำหนดไว้ /etc/default/openvpn.

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

คุณสมบัติ OpenVPN:

  • รหัสที่ตั้งไว้ล่วงหน้าเป็นวิธีการตรวจสอบสิทธิ์ที่ง่ายที่สุด
  • การตรวจสอบสิทธิ์ใบรับรองเป็นวิธีที่ยืดหยุ่นที่สุดในการตั้งค่า
  • การใช้ล็อกอินและรหัสผ่าน - สามารถใช้ได้โดยไม่ต้องสร้างใบรับรองไคลเอ็นต์ ( ใบรับรองเซิร์ฟเวอร์ยังจำเป็นอยู่)
  • การบีบอัดข้อมูลจราจรโดยใช้ lzo
  • ใช้โปรโตคอล TCP/UDP ที่คุณเลือก
  • การใช้อุโมงค์ IP/อุโมงค์อีเธอร์เน็ต

หากต้องการติดตั้งให้รันคำสั่ง:

apt-get ติดตั้ง openvpn

แน่นอนว่าวิธีการหลักในการตรวจสอบสิทธิ์คือใบรับรอง และนั่นคือจุดที่เราจะเริ่มต้น

เราจะต้อง:

  • ใบรับรองเซิร์ฟเวอร์ รหัสเซิร์ฟเวอร์ (ความลับ)
  • ใบรับรองไคลเอ็นต์ รหัสไคลเอ็นต์ (ความลับ)
  • คีย์ Diffie Hellman สำหรับเซสชัน TLS
  • ใบรับรอง CA (สร้างผู้ออกใบรับรองเพื่อลงนามใบรับรองเซิร์ฟเวอร์และ ลูกค้า วิธีนี้สะดวกในการจัดการใบรับรอง)
  • รหัส CA (เป็นความลับมาก)
  • คีย์สุดท้ายสำหรับการตรวจสอบสิทธิ์ TLS (ลายเซ็น HMAC)

อย่าตกใจไปทันทีหากคุณไม่เก่งเรื่องใบรับรอง พวกเขาคิดทุกอย่างมาให้คุณ OpenVPN มีชุดสคริปต์สำหรับการสร้างใบรับรอง ง่าย-rsaตั้งอยู่ที่ /usr/share/easy-rsa/ เราจะสร้างโฟลเดอร์และย้าย easy-rsa ไปที่ /etc/openvpn/easy-rsa เพื่อความสะดวก

mkdir /etc/openvpn/easy-rsa.mkdir
cp -r /usr/share/easy-rsa /etc/openvpn/easy-rsa

ส่งออก KEY_SIZE=2048 #ขนาดคีย์ [ป้องกันอีเมล]ส่งออก CA_EXPIRE=3650 #CA ระยะเวลาความถูกต้องของใบรับรอง คือ วัน

ส่งออก KEY_EXPIRE=3650 #Certificate อายุการใช้งาน วัน

ส่งออก KEY_COUNTRY="US" #Country ส่งออก KEY_PROVINCE="CA" #ใช้เฉพาะในสหรัฐอเมริกา ส่งออก KEY_CITY="SanFrancisco" #City ส่งออก KEY_ORG="Fort-Funston" #Organization ส่งออก KEY_EMAIL="
" #เซิร์ฟเวอร์เมล ส่งออก KEY_OU="MyOrganizationalUnit" #หน่วยของฉัน
ไม่จำเป็นต้องเปลี่ยนแปลงคีย์การส่งออก ในระหว่างกระบวนการสร้างใบรับรองและคีย์ คุณสามารถป้อนข้อมูลด้วยตนเองได้ เราเปิดตัวเชลล์สคริปต์และสร้างใบรับรอง CA:ซีดี /etc/openvpn/easy-rsa/
แหล่งที่มา

./ทำความสะอาดทั้งหมด

# ล้างใบรับรองทั้งหมดในโฟลเดอร์ /etc/openvpn/keys

./build-ca ตอนนี้เรามาสร้างใบรับรองและรหัสเซิร์ฟเวอร์กันดีกว่า:./build-key-เซิร์ฟเวอร์เซิร์ฟเวอร์ กรอกข้อมูลในช่องสำหรับคำถามรหัสผ่านท้าทาย: , ชื่อบริษัทเพิ่มเติม:

เราตอบ N เราลงนามในใบรับรอง

ลงนามใบรับรอง?

เราตอบ

ย. ./build-dh คีย์การรับรองความถูกต้อง TLS: openvpn --genkey --คีย์ลับ/ta.keyเป้าหมายสุดท้ายคือคีย์ไคลเอ็นต์และใบรับรอง ซึ่งสามารถทำได้ทั้งบนเซิร์ฟเวอร์และโอนคีย์ไปยังไคลเอนต์ผ่าน

ได้รับการคุ้มครองช่องหรือสร้างบน

เครื่องไคลเอนต์ และลงนามกับหน่วยงานออกใบรับรองของเซิร์ฟเวอร์ เพื่อความง่าย เราจะสร้างทุกอย่างบนเซิร์ฟเวอร์ จากนั้นจึงโอนคีย์และใบรับรองไปยังไคลเอ็นต์.

./build-key ผู้ใช้

  • # หากคุณมีลูกค้าจำนวนมาก โดยการเปรียบเทียบ เราจะเปลี่ยนชื่อ user1, user2 ฯลฯ
  • คุณยังสามารถสร้างรหัสไคลเอนต์ที่ป้องกันด้วยรหัสผ่านด้วยคำสั่ง
  • แคลิฟอร์เนีย
  • ./build-key-pass ผู้ใช้

ลูกค้าจะต้องมีคีย์ต่อไปนี้: user.crtผู้ใช้คีย์

ทาคีย์

พอร์ตเซิร์ฟเวอร์โหมด 1194 #Port โปรโต udp #โปรโตคอล dev tun #ประเภทการเชื่อมต่อ ca ca.crt #Path ไปยังใบรับรอง ใบรับรอง server.crt คีย์ server.key #Path ไปยังคีย์เซิร์ฟเวอร์ dh dh2048.pem #เส้นทางสู่dh. เซิร์ฟเวอร์ 10.0.0.1 255.255.255.0 ไฟล์ ifconfig-pool-persist ipp.txt # ซึ่งการเชื่อมต่อ “โปรไฟล์ไคลเอนต์ ที่อยู่ IP ที่จัดสรร” จะถูกจัดเก็บ Keepalive 10 120 # กำหนดจำนวนวินาทีสำหรับ ping และ ping-restart ตามลำดับ comp-lzo #เปิดใช้งานการบีบอัดทราฟฟิก คีย์คงอยู่ #เมื่อได้รับสัญญาณ SIGUSR1 หรือทริกเกอร์ ping-restart ไม่จำเป็นต้องอ่านใบรับรองซ้ำอีกครั้ง เนื่องจากเซิร์ฟเวอร์ไม่มีสิทธิ์เพียงพอในการปรับแต่ง # เหมือนกันสำหรับ อุโมงค์ สถานะ openvpn-status.log บันทึก /var/log/openvpn.log กริยา 3 #รายละเอียดบันทึก 0-11 tls-auth ta.key 0 #tls รหัสการอนุญาต AES-256-CBC #การเข้ารหัสที่แนะนำอย่างเป็นทางการ หรือ AES-128-CBC auth SHA512 # โดยค่าเริ่มต้น จะใช้ SHA1 ซึ่งไม่ปลอดภัยอีกต่อไป #client-to-client ช่วยให้ไคลเอนต์เซิร์ฟเวอร์ VPN สามารถสื่อสารระหว่างกัน ลูกค้าสูงสุด 5 # ขีดจำกัด จำนวนสูงสุดไคลเอนต์ที่เชื่อมต่อพร้อมกัน #สิทธิ์เซิร์ฟเวอร์ VPN ที่ต่ำกว่าสำหรับผู้ใช้ที่มีความปลอดภัยมากขึ้น ไม่มีการจัดกลุ่ม nogroup

เราเริ่มต้นเซิร์ฟเวอร์และหากทุกอย่างเรียบร้อยดีอินเทอร์เฟซ tun0 จะปรากฏขึ้น:

root@debian:/# บริการ openvpn เริ่มต้น (รีสตาร์ท)

หากเกิดปัญหาใดๆ ให้ดูที่บันทึกและค้นหา:

วารสารctl | grep ovpn-เซิร์ฟเวอร์

ตอนนี้เราจำเป็นต้องกำหนดค่าไคลเอนต์เพื่อเชื่อมต่อกับเซิร์ฟเวอร์ ตัวอย่างเช่น ฉันจะแสดงการตั้งค่าบน Windows ขั้นแรก ดาวน์โหลดไคลเอนต์จากเว็บไซต์อย่างเป็นทางการ (https://openvpn.net/) หลังการติดตั้ง เราจะต้องสร้างไฟล์กำหนดค่าที่มีลักษณะคล้าย *.ovpn และคุณสามารถสร้างมันในโปรแกรมแก้ไขข้อความใดก็ได้

ลูกค้า.ovpn :

ไคลเอนต์โปรโตพอร์ต udp 1194 dev tun ระยะไกล 192.168.0.1 ที่อยู่เซิร์ฟเวอร์ #OpenVPN

ca ca.crt ใบรับรอง client.crt คีย์ client.key tls-auth ta.key 1 รับรองความถูกต้องรหัส SHA512 AES-256-CBC comp-lzo

คุณอาจต้องเข้าถึงอินเทอร์เน็ตผ่าน VPN ในการดำเนินการนี้ คุณต้องเปิดใช้งานการส่งต่อบนเซิร์ฟเวอร์:
เราเปิดใช้งานการส่งต่อในเคอร์เนล โดยยกเลิกการใส่เครื่องหมายบรรทัดในไฟล์ /etc/sysctl.conf:

net.ipv4.ip_forward=1
เพื่อไม่ให้รีบูต เราจะแจ้งเคอร์เนลว่าเปิดใช้งานการส่งต่อแล้ว:

เสียงสะท้อน 1 > /proc/sys/net/ipv4/conf/all/forwarding ตอนนี้เรายังต้องกำหนดค่าไอพีเทเบิล

เพื่อสำรวจแพ็กเก็ต NAT:

iptables -t nat -A การโพสต์ -s 10.8.0.0/24 -o eth0 -j MASQUERADE

กด "redirect-gateway" # เมื่อเชื่อมต่อกับเซิร์ฟเวอร์สำเร็จ ไคลเอนต์จะถูกติดตั้งเกตเวย์เริ่มต้นใหม่จากเซิร์ฟเวอร์ VPN กด "dhcp-option DNS 8.8.8.8" # ส่ง ที่อยู่ DNSเซิร์ฟเวอร์

นี่เป็นการเสร็จสิ้นการตั้งค่าพื้นฐาน สนุกกับการใช้มัน