מאגר המידע הוראות פשוטות לעבודה עם שירות Profitserver
ראשי מאגר המידע הגדרת שרת VPN בלינוקס: PPTP או OpenVPN?

הגדרת שרת VPN בלינוקס: PPTP או OpenVPN?


כיום, טכנולוגיית VPN הופכת פופולרית יותר. משתמשים רגילים משתמשים ב-VPN כדי לגשת בבטחה לאינטרנט. זה גם עוזר לעקוף אתרים ושירותים חסומים מקומיים ולהגן מפני התנהגות זדונית חיצונית אפשרית. כאשר אתה מתחבר לשרת VPN, ישנה מנהרה בטוחה בין המחשב שלך לשרת שלא ניתן לגשת אליה מבחוץ, כך ששרת ה-VPN הופך לנקודת הגישה שלך לאינטרנט. יש הרבה שירותי VPN בחוץ, גם בחינם וגם בתשלום, אבל אם הם לא עובדים בשבילך מסיבה כלשהי, אתה תמיד יכול להגדיר את שרת ה-VPN שלך.

כדי להפעיל את ה-VPN שלך, עליך לשכור שרת VPS . ישנן תוכנות שונות המאפשרות לך ליצור חיבור VPN. הן שונות זו מזו במערכות ההפעלה הנתמכות ובאלגוריתמים שבהם נעשה שימוש. נבחן שתי גישות עצמאיות להגדרת שרת VPN. הראשונה מבוססת על פרוטוקול PPTP שכבר נחשב מיושן ולא מאובטח, אך קל מאוד להגדיר אותו. השנייה משתמשת בתוכנה מודרנית ומאובטחת OpenVPN אך דורשת התקנת יישום לקוח של צד שלישי ותהליך התקנה יסודי יותר.

בסביבת הבדיקה שלנו, אנו הולכים להשתמש בשרת וירטואלי המופעל על ידי Ubuntu Server 18.04. חומת אש עומדת להיות כבויה בשרת כי התצורה שלה ראויה למאמר נפרד. נתאר את תהליך ההתקנה ב-Windows 10.

הכנה

לא משנה באיזה שרת VPN תבחר, הגישה לאינטרנט תוגדר באמצעים משולבים של מערכת ההפעלה. על מנת לפתוח גישה לאינטרנט דרך ממשק שירות חיצוני יש לאפשר העברת מנות בין הממשקים ולהגדיר תרגום כתובות רשת.

כדי להפעיל העברת חבילות, פתחו את הקובץ "/etc/sysctl.conf" ושנו את ערך הפרמטר "net.ipv4.ip_forward" ל- 1.

הפעל העברת מנות להגדרת VPN

על מנת להחיל שינויים מבלי לאתחל את המחשב, הפעל את הפקודה

sudo sysctl -p /etc/sysctl.conf

תרגום כתובות רשת מוגדר באמצעות iptables . ראשית, בדוק את שם ממשק הרשת החיצוני שלך על ידי הפעלת הפקודה "ip link show" - תזדקק לה בשלב הבא. השם שלנו הוא "ens3".

הצגת קישור ל- ip

אפשר תרגום כתובות רשת בממשק החיצוני שלך עבור כל צמתי הרשת המקומית.

sudo iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE

שימו לב שאתם צריכים לציין את השם האמיתי של הממשק של השרת שלכם, הוא יכול להיות שונה משלנו.

כברירת מחדל, כל הכללים שנוצרו על ידי iptables מאופסים לאחר הפעלה מחדש של השרת. כדי למנוע זאת, השתמש בכלי "iptables-persistent" . התקן את החבילה הבאה:

sudo apt install iptables-persistent

בשלב מסוים במהלך תהליך ההתקנה, תראו חלון תצורה שיציע לכם לשמור את הכללים הנוכחיים של iptables. מכיוון שהכללים כבר מוגדרים, פשוט אשרו ולחצו פעמיים על "כן" . כעת הכללים יוחלו אוטומטית לאחר הפעלה מחדש של השרת.

הפעל את תרגום הכתובות

שרת PPTP

תצורת שרת

התקן את החבילה:

sudo apt install pptpd

לאחר סיום ההתקנה, פתחו את הקובץ "/etc/pptpd.conf" בכל עורך טקסט וערוך אותו כך:

option /etc/ppp/pptpd-options #path to the settings file
logwtmp #client connections logging mechanism
connections 100 #number of simultaneous connections
localip 172.16.0.1 #the address that will serve as a client gateway
remoteip 172.16.0.2-200 #range of addresses

לאחר מכן, ערוך את הקובץ "/etc/ppp/pptpd-options" . רוב הפרמטרים מוגדרים כברירת מחדל.

#name of the service for new client records
name pptpd
#restrict obsolete authentication methods
refuse-pap
refuse-chap
refuse-mschap
#allow a more secure authentication method
require-mschap-v2
#enable encryption
require-mppe-128
#specify dns servers for clients (use any available servers)
ms-dns 8.8.8.8
ms-dns 8.8.4.4
proxyarp
nodefaultroute
lock
nobsdcomp
novj
novjccomp
nologfd

בשלב הבא, תצטרכו ליצור רשומה עבור חיבורי לקוח. נניח שאתם רוצים להוסיף משתמש "vpnuser" עם הסיסמה "1" ולאפשר עבורו כתובות דינמיות. פתחו את הקובץ "/etc/ppp/chap-secrets" והוסיפו את השורה הבאה עם פרמטרי המשתמש בסוף הקובץ:

vpnuser pptpd 1 *

הערך "pptpd" הוא שם השירות שציינו בקובץ "pptpd-options" . במקום "*" ניתן לציין כתובת IP קבועה. בתוצאה, הקובץ "chap-secrets" אמור להיראות כך:

הגדרת שרת VPN

כדי להחיל את ההגדרות, אפס את שירות ה- pptpd והוסף אותו לטעינה אוטומטית.

sudo systemctl restart pptpd
sudo systemctl enable pptpd

תצורת השרת הסתיימה.

תצורת לקוח

פתחו את "התחל" - "הגדרות" - "רשת ואינטרנט" - "VPN" ולחצו על "הוסף חיבור VPN".

הגדר לקוח לחיבור VPN

הזן את פרמטרי החיבור בחלון שנפתח ולחץ על "שמור"

  • ספק VPN: "Windows (מובנה)"
  • שם חיבור: "vpn_connect" (אתה יכול לבחור כל שם)
  • שם או כתובת שרת: (ציין את כתובת ה-IP החיצונית של השרת)
  • סוג VPN: "אוטומטי"
  • סוג פרטי הכניסה: "שם משתמש וסיסמה"
  • שם משתמש: vpnuser (שם צוין בקובץ "chap-secrets" בשרת)
  • סיסמה: 1 (כמו בקובץ "סודות הצ'אפ")

לאחר שמירת הפרמטרים, תראו את חיבור ה-VPN החדש בחלון. לחצו לחיצה שמאלית על החיבור ובחרו "התחבר" . במקרה של חיבור מוצלח, תראו את הסטטוס "מחובר".

הוספת חיבור VPN

באפשרויות, תמצאו את הכתובות הפנימיות של הלקוח והשרת. השדה "כתובת יעד" מציג את כתובת השרת החיצוני.

כיצד להגדיר שרת VPN בעצמך

כאשר מחובר, כתובת ה-IP הפנימית של השרת, 172.16.0.1 במקרה שלנו, הופכת לשער ברירת המחדל עבור כל החבילות היוצאות.

בדוק כתובת IP חיצונית

באמצעות כל שירות מקוון אתה יכול לוודא שכתובת ה-IP החיצונית של המחשב זהה כעת לכתובת ה-IP של שרת ה-VPN שלך.

שרת OpenVPN

תצורת שרת

בואו נקדם את רמת ההרשאות של המשתמש הנוכחי מכיוון שלצורך ההגדרה הנוספת שלנו נצטרך גישת שורש.

sudo -s

התקן את כל החבילות הדרושות. נצטרך את חבילת "Easy-RSA" כדי לנהל את מפתחות ההצפנה.

apt install openvpn easy-rsa iptables-persistent

אפשר חיבורים נכנסים בפורט 1194 דרך פרוטוקול UDP והחיל את כללי iptables.

sudo iptables -I INPUT -p udp --dport 1194 -j ACCEPT

sudo netfilter-persistent save

צור ספרייה עם קבצים שהועתקו מחבילת "Easy-RSA" ונווט לתוכה.

make-cadir ~/openvpn

cd ~/openvpn

יצירת תשתית מפתח ציבורי (PKI).

./easyrsa init-pki

צור את אישור הבסיס של רשות האישורים (CA).

./easyrsa build-ca

במהלך תהליך היצירה, תתבקשו להגדיר ולזכור סיסמה. תצטרכו גם לענות על שאלות ולהזין מידע על בעל המפתח. ניתן להשאיר את ערכי ברירת המחדל המופיעים בסוגריים מרובעים. לחצו על "Enter" כדי לסיים את הקלט.

צור מפתח פרטי ובקשת אישור. כארגומנט, ציין שם שרירותי; במקרה שלנו, זה "vpn-server".

./easyrsa gen-req vpn-server nopass

השאר את הערך 'שם נפוץ' כברירת מחדל.

חתום על בקשת אישור השרת שנוצרה.

./easyrsa sign-req server vpn-server

בשלב זה, ענה "כן" כדי לאשר את החתימה, לאחר מכן הזן את הסיסמה שנוצרה במהלך יצירת אישור הבסיס.

צור פרמטרים של דיפי-הלמן. פרמטרים אלה משמשים להחלפת מפתחות מאובטחת בין השרת ללקוח.

./easyrsa gen-dh

כל הקבצים הדרושים נוצרו. בואו ניצור תיקייה בשם "keys" בספריית העבודה של OpenVPN כדי לאחסן את המפתחות ולהעתיק לשם את הקבצים שנוצרו.

mkdir /etc/openvpn/keys

sudo cp pki/ca.crt pki/issued/vpn-server.crt pki/private/vpn-server.key pki/dh.pem /etc/openvpn/keys

הגדרת NAT באמצעות iptables כללים. צור קובץ בשם nat ולפתוח אותו לעריכה ב- /etc/openvpn/ במדריך.

#!/bin/sh

# Reset firewall settings
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X

# (eth0 in our case, may vary)
iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT

# (eth0 in our case, may vary)
iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT

# Allow OpenVPN connections (eth0 in our case, may vary)
iptables -A INPUT -i eth0 -p udp --dport 1194 -j ACCEPT

iptables -A INPUT -i tun0 -j ACCEPT

# (eth0 in our case, may vary):
iptables -A FORWARD -i eth0 -o tun0 -j ACCEPT
iptables -A FORWARD -i tun0 -o eth0 -j ACCEPT

# (eth0 in our case, may vary)
iptables -A FORWARD -i eth0 -o tun0 -m state --state ESTABLISHED,RELATED -j ACCEPT

# Enable masquerading for the local network (eth0 in our case, may vary)
iptables -t nat -A POSTROUTING -o eth0 -s 10.8.0.0/24 -j MASQUERADE

# Deny incoming connections from outside
iptables -A INPUT -i eth0 -j DROP

# Deny transit traffic from outside (eth0 in our case, may vary)
iptables -A FORWARD -i eth0 -o tun0 -j DROP

sudo netfilter-persistent save

שמור את הקובץ והפוך אותו לקובץ הרצה.

sudo chmod 755 /etc/openvpn/nat

העתק את תבנית תצורת השרת.

cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf /etc/openvpn/

פתחו את הקובץ "/etc/openvpn/server.conf" לצורך עריכה, ודאו שהוא מכיל את השורות הבאות, וערו אותן במידת הצורך:

#Port, protocol, and interface

port 1194

proto udp

dev tun
#Path to the encryption keys

ca /etc/openvpn/keys/ca.crt

cert /etc/openvpn/keys/vpn-server.crt

key /etc/openvpn/keys/vpn-server.key

dh /etc/openvpn/keys/dh.pem

#SHA256 Hashing Algorithm

auth SHA256
#Switching off additional encryption

#tls-auth ta.key 0
#Network parameters

server 10.8.0.0 255.255.255.0

ifconfig-pool-persist /var/log/openvpn/ipp.txt

push "redirect-gateway def1 bypass-dhcp"

push "dhcp-option DNS 8.8.8.8"

push "dhcp-option DNS 8.8.4.4"
#Ping every 10 seconds to check the connection.

keepalive 10 120
#Set up AES-256 encryption for the tunnel.

cipher AES-256-GCM
#Demoting the service OpenVPN after launch

user nobody

group nogroup
#Switching on parameters saving after reboot

persist-key

persist-tun
#Set log verbosity

verb 3
#Redirecting logs

log-append /var/log/openvpn/openvpn.log
#Script the rule installation launch.

up /etc/openvpn/nat

הפעל העברת תעבורה בשרת.

sudo sysctl -w net.ipv4.ip_forward=1

echo 'net.ipv4.ip_forward=1' | sudo tee -a /etc/sysctl.conf

הפעל את OpenVPN כדי להחיל את התצורה.

systemctl restart openvpn@server

תצורת השרת הסתיימה!

תצורת לקוח

עבור לאתר הרשמי של OpenVPN " https://openvpn.net ", עבור אל הקטע "קהילה".

Заходим на официальный сайт проекта "https://openvpn.net", переходим в раздел "COMUNITY".

גללו למטה והורידו את קובץ ההתקנה עבור גרסת מערכת ההפעלה שלכם. במקרה שלנו, מדובר ב-Windows 11 ARM64.

пролистываем вниз ו- скачиваем инсталлятор для своей версии операционной системы. В нашем случае это Windows 11 ARM64.

התקן את האפליקציה תוך השארת כל הפרמטרים כברירת מחדל.

בשלב הבא תצטרכו להכין את הקובץ הבא בשרת ולהעבירם למחשב הלקוח:

  • מפתחות ציבוריים ופרטיים;
  • עותק של מפתח מרכז האישורים;
  • תבנית קובץ תצורה.

התחבר לשרת, העלה הרשאות ונווט אל הספרייה שיצרנו "~/openvpn".

sudo -s

cd ~/openvpn

צור מפתח פרטי ובקשת אישור עבור הלקוח. כארגומנט, ציין שם שרירותי; במקרה שלנו, זה "client1".

./easyrsa gen-req client1 nopass

הזן את הסיסמה שקבענו בעת יצירת אישור הבסיס והשאר את ערך השם המשותף כברירת מחדל.

Вводим пароль, который мы устанавливали при создании корневого сертификата и оставляем значение שם נפוץ по умол.

חתום על בקשת אישור הלקוח שנוצרה.

./easyrsa sign-req client client1

בשלב זה, ענה "כן" כדי לאשר את החתימה, לאחר מכן הזן את הסיסמה שנוצרה במהלך יצירת אישור הבסיס.

На этом шаге отвечаем "yes" для подтверждения подписи, после чего вводим пароль, который был созандисан пароль сертификата.

לנוחיותנו, בואו ניצור תיקייה בשם 'client1' בתיקיית הבית ונעתיק לתוכה את כל הקבצים המיועדים להעברה למחשב הלקוח.

mkdir ~/client1

cp pki/issued/client1.crt pki/private/client1.key pki/ca.crt ~/client1/

העתק את תבנית קובץ התצורה של הלקוח לאותה ספרייה. שנה את סיומת הקובץ ל- ".ovpn" בעת ההעתקה.

cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client1/client.ovpn

שנה את הבעלים של הספרייה וכל הקבצים "~/client1/" כדי שנוכל להפיץ אותם ללקוח. במקרה שלנו, בואו נהפוך את "mihail" לבעלים.

chown -R mihail:mihail ~/client1

עבור למחשב הלקוח והעתק את תוכן התיקייה "~/client1/" . ניתן לעשות זאת בעזרת כלי השירות "PSCP" , שמגיע עם Putty.

PSCP -r mihail@[IP_сервера]:/home/mihail/client1 c:\client1

ניתן לאחסן את קבצי המפתחות "ca.crt" , "client1.crt" , "client1.key" בכל מקום שתרצו. במקרה שלנו, הם נמצאים בתיקייה "c:\Program Files\OpenVPN\keys" , ואנחנו מעבירים את קובץ התצורה "client.ovpn" לתיקייה "c:\Program Files\OpenVPN\config".

עכשיו בואו ניגש להגדרת הלקוח. פתחו את הקובץ "c:\Program Files\OpenVPN\config\client.ovpn" בעורך טקסט וערוך את השורות הבאות:

#announce that this is the client

client
#interface and protocol just like on the server

dev tun

proto udp
#IP address of the server and port

remote ip_address 1194
#saving parameters after reload

persist-key

persist-tun
#key paths

ca “c:\\Program Files\\OpenVPN\\keys\\ca.cert”

cert “c:\\Program Files\\OpenVPN\\keys\\client1.crt”

key “c:\\Program Files\\OpenVPN\\keys\\client1.key”
#enable server verification

remote-cert-tls server
#disable extra encryption

#tls-auth ta.key 1

cipher AES-256-CBC

auth-nocache

verb 3

השאר את השאר ללא פגע.

שמור את הקובץ והפעל את יישום הלקוח "OpenVPN GUI".

הגדרת ה-VPN הסתיימה

לחצו לחיצה ימנית על סמל האפליקציה בשורת המשימות ובחרו "התחבר" . אם החיבור הצליח, הסמל יהפוך לירוק.

השתמש בכל שירות מקוון כדי לוודא שכתובת ה-IP הציבורית שלך השתנתה וכעת היא זהה לכתובת ה-IP של השרת.

❮ מאמר קודם הגדרת שרת FTP
המאמר הבא ❯ כיצד להגדיר Wireguard VPN בשרת שלך

שאל אותנו לגבי VPS

אנחנו תמיד מוכנים לענות על שאלותיכם בכל שעה ביום ובלילה.