امروزه فناوری VPN محبوبیت بیشتری پیدا کرده است. کاربران عادی از VPN برای دسترسی ایمن به اینترنت استفاده می کنند. همچنین به دور زدن وبسایتها و سرویسهای مسدود شده محلی و محافظت در برابر رفتارهای مخرب خارجی کمک میکند. هنگامی که به یک سرور VPN متصل می شوید، یک تونل امن بین رایانه شما و سرور وجود دارد که از خارج قابل دسترسی نیست، بنابراین سرور VPN تبدیل به نقطه دسترسی اینترنت شما می شود. خدمات VPN زیادی وجود دارد، هم رایگان و هم پولی، اما اگر به دلایلی برای شما کار نمی کنند، همیشه می توانید سرور VPN خود را پیکربندی کنید.
برای اجرای VPN خود، باید یک سرور VPS اجاره کنید . نرمافزارهای مختلفی وجود دارند که به شما امکان ایجاد اتصال VPN را میدهند. این نرمافزارها از نظر سیستمعاملهای پشتیبانیشده و الگوریتمهای مورد استفاده با یکدیگر متفاوت هستند. ما به دو رویکرد مستقل برای راهاندازی سرور VPN نگاهی خواهیم انداخت. اولین مورد مبتنی بر پروتکل PPTP است که از قبل منسوخ شده و ناامن تلقی میشود، اما پیکربندی آن واقعاً آسان است. مورد دیگر از نرمافزار مدرن و امن OpenVPN استفاده میکند، اما نیاز به نصب یک برنامه کلاینت شخص ثالث و یک فرآیند راهاندازی کاملتر دارد.
در محیط آزمایشی خود، قصد داریم از یک سرور مجازی با سرور اوبونتو 18.04 استفاده کنیم. فایروال روی سرور خاموش می شود زیرا پیکربندی آن مستحق یک مقاله جداگانه است. ما مراحل نصب ویندوز 10 را شرح خواهیم داد.
تهیه
مهم نیست که کدام سرور VPN را انتخاب کنید، دسترسی به اینترنت با ابزار یکپارچه سیستم عامل راه اندازی می شود. برای باز کردن دسترسی به اینترنت از طریق یک رابط سرویس خارجی، باید اجازه ارسال بسته بین اینترفیس ها را بدهید و ترجمه آدرس شبکه را پیکربندی کنید.
برای فعال کردن قابلیت ارسال بسته، فایل “/etc/sysctl.conf” را باز کنید و مقدار پارامتر “net.ipv4.ip_forward” را به ۱ تغییر دهید.
برای اعمال تغییرات بدون راه اندازی مجدد کامپیوتر، دستور را اجرا کنید
sudo sysctl -p /etc/sysctl.conf
ترجمه آدرس شبکه توسط iptables پیکربندی میشود . ابتدا، نام رابط شبکه خارجی خود را با اجرای دستور "ip link show" بررسی کنید - در مرحله بعدی به آن نیاز خواهید داشت. نام ما "ens3" است.
ترجمه آدرس شبکه را در رابط خارجی خود برای همه گره های شبکه محلی فعال کنید.
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» باید به شکل زیر باشد:
برای اعمال تنظیمات، سرویس pptpd را ریست کرده و آن را به بارگذاری خودکار اضافه کنید.
sudo systemctl restart pptpd
sudo systemctl enable pptpd
پیکربندی سرور به پایان رسیده است.
پیکربندی مشتری
«شروع» - «تنظیمات» - «شبکه و اینترنت» - «VPN» را باز کنید و روی «افزودن اتصال VPN» کلیک کنید.
پارامترهای اتصال را در پنجره باز شده وارد کنید و روی "ذخیره" کلیک کنید
- ارائه دهنده VPN: "ویندوز (توکار)"
- نام اتصال: "vpn_connect" (شما می توانید هر نامی را انتخاب کنید)
- نام یا آدرس سرور: (آدرس IP خارجی سرور را مشخص کنید)
- نوع VPN: "خودکار"
- نوع اطلاعات ورود: «نام کاربری و رمز عبور»
- نام کاربری: vpnuser (نام مشخص شده در فایل “chap-secrets” در سرور)
- کلمه عبور: 1 (همانند فایل “chap-secrets”)
پس از ذخیره پارامترها، اتصال VPN جدید را در پنجره مشاهده خواهید کرد. روی اتصال کلیک چپ کرده و گزینه "اتصال" را انتخاب کنید . در صورت اتصال موفقیتآمیز، وضعیت "متصل" را مشاهده خواهید کرد.
در قسمت گزینهها، آدرسهای داخلی کلاینت و سرور را خواهید یافت. فیلد «آدرس مقصد» آدرس سرور خارجی را نمایش میدهد.
هنگام اتصال، آدرس IP داخلی سرور، که در مورد ما ۱۷۲.۱۶.۰.۱ است ، به عنوان دروازه پیشفرض برای همه بستههای خروجی انتخاب میشود.
با استفاده از هر سرویس آنلاین می توانید مطمئن شوید که آدرس IP خارجی رایانه اکنون با آدرس IP سرور VPN شما یکسان است.
سرور OpenVPN
پیکربندی سرور
اجازه دهید سطح مجوزهای کاربر فعلی را ارتقا دهیم زیرا برای پیکربندی بیشتر به دسترسی ریشه نیاز داریم.
sudo -s
تمام بستههای لازم را نصب کنید. برای مدیریت کلیدهای رمزگذاری به بستهی «Easy-RSA» نیاز خواهیم داشت .
apt install openvpn easy-rsa iptables-persistent
اتصالات ورودی را از طریق پروتکل 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
مقدار Common Name را به صورت پیشفرض باقی بگذارید.
درخواست گواهی سرور تولید شده را امضا کنید.
./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 » بروید، به بخش «COMUNITY» بروید.
به پایین اسکرول کنید و فایل نصبی مربوط به نسخه سیستم عامل خود را دانلود کنید. در مورد ما، ویندوز ۱۱ ARM11 است.
برنامه را نصب کنید و تمام پارامترها را به طور پیش فرض باقی بگذارید.
در مرحله بعد باید فایل زیر را روی سرور آماده کرده و به کامپیوتر مشتری انتقال دهید:
- کلیدهای عمومی و خصوصی؛
- کپی کلید مرکز صدور گواهینامه؛
- قالب فایل پیکربندی
به سرور متصل شوید، امتیازات را افزایش دهید و به دایرکتوری ایجاد شده ما بروید "~/openvpn".
sudo -s
cd ~/openvpn
یک کلید خصوصی و یک درخواست گواهی برای کلاینت ایجاد کنید. به عنوان آرگومان، یک نام دلخواه مشخص کنید؛ در مورد ما، این نام "client1" است.
./easyrsa gen-req client1 nopass
رمز عبوری را که هنگام ایجاد گواهی ریشه تنظیم کردیم وارد کنید و مقدار Common Name را به صورت پیشفرض باقی بگذارید.
درخواست گواهی کلاینت تولید شده را امضا کنید.
./easyrsa sign-req client client1
در این مرحله، برای تأیید امضا، به «بله» پاسخ دهید، سپس رمز عبوری را که در طول تولید گواهی ریشه ایجاد کردهاید، وارد کنید.
برای راحتی، بیایید یک پوشه با نام '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» را اجرا کنید.
روی آیکون برنامه در نوار وظیفه کلیک راست کرده و گزینه «اتصال» را انتخاب کنید . اگر اتصال موفقیتآمیز باشد، آیکون سبز میشود.
از هر سرویس آنلاینی استفاده کنید تا مطمئن شوید آدرس IP عمومی شما تغییر کرده و اکنون با آدرس IP سرور یکسان است.