এই নিবন্ধে আমরা একটি OpenVPN এর ইনস্টলেশন এবং কনফিগারেশন বিবেচনা করব Linux CentOS/RHEL (7/8) চালিত সার্ভার এবং একটি কনফিগার করা OpenVPN সার্ভার ব্যবহার করে NAT-এর পিছনে দুটি দূরবর্তী কম্পিউটার (বা অফিস) একটি একক নেটওয়ার্কে কীভাবে যোগ দিতে হয় তা দেখান। VPN ক্লায়েন্টদের সার্টিফিকেট ব্যবহার করে প্রমাণীকরণ করা হবে।
VPN প্রযুক্তির একটি সেট যা পাবলিক নেটওয়ার্ক বা ইন্টারনেটের মাধ্যমে একটি নিরাপদ নেটওয়ার্ক তৈরি করতে দেয়। একটি VPN ব্যবহার করে, আপনি ইন্টারনেটের মাধ্যমে একটি নিরাপদ স্থানীয় নেটওয়ার্কে বিভিন্ন ডিভাইস বা নেটওয়ার্ক সংযোগ করতে পারেন৷
ওপেনভিপিএন OpenSSL-এর উপর ভিত্তি করে VPN প্রযুক্তির ওপেন সোর্স SSL/TLS-ভিত্তিক বাস্তবায়নের মধ্যে একটি। OpenVPN ব্যবহার করে, আপনি একটি NAT ডিভাইসের পিছনে দূরবর্তী অফিস এবং পৃথক কম্পিউটার উভয়ই একটি একক নেটওয়ার্কে সংযুক্ত করতে পারেন।
ওপেনভিপিএন এবং ইজি-আরএসএ ইনস্টল করুন
প্রথম ধাপে, আপনাকে অবশ্যই EPEL সংগ্রহস্থলের সাথে সংযোগ করতে হবে এবং আপনার হোস্ট আপডেট করতে হবে:
# yum install epel-release -y
# yum update -y
সিস্টেম আপডেট হওয়ার পরে, OpenVPN ইনস্টল করুন৷ এবং Easy-RSA yum প্যাকেজ ম্যানেজার ব্যবহার করে (ভিপিএন সার্ভারে PKI কী অবকাঠামো বাস্তবায়নের জন্য আমাদের এটির প্রয়োজন হবে)।
# yum install openvpn easy-rsa -y
কিভাবে Easy-RSA কনফিগার করবেন এবং X.509 সার্টিফিকেট তৈরি করবেন?
সমস্ত সহজ-আরএসএ কপি করুন /etc/openvpn/-এর স্ক্রিপ্ট :
# cp -r /usr/share/easy-rsa /etc/openvpn/
/etc/openvpn/easy-rsa/3/-এ যান এবং vars তৈরি করুন সেখানে ফাইল:
# cd /etc/openvpn/easy-rsa/3/
# nano vars
ফাইলের বিষয়বস্তু যোগ করুন (আপনি আপনার প্রয়োজন অনুযায়ী কনফিগারেশন পরিবর্তন করতে পারেন):
set_var EASYRSA "$PWD" set_var EASYRSA_PKI "$EASYRSA/pki" set_var EASYRSA_DN "cn_only" set_var EASYRSA_REQ_COUNTRY "DE" set_var EASYRSA_REQ_PROVINCE "MUN" set_var EASYRSA_REQ_CITY "BY" set_var EASYRSA_REQ_ORG "WOSHUB" set_var EASYRSA_REQ_EMAIL "[email protected]" set_var EASYRSA_REQ_OU "IT dept" set_var EASYRSA_KEY_SIZE 4096 set_var EASYRSA_ALGO rsa set_var EASYRSA_CA_EXPIRE 7500 set_var EASYRSA_CERT_EXPIRE 3650 set_var EASYRSA_NS_SUPPORT "no" set_var EASYRSA_NS_COMMENT "CERTIFICATE AUTHORITY" set_var EASYRSA_EXT_DIR "$EASYRSA/x509-types" set_var EASYRSA_SSL_CONF "$EASYRSA/openssl-1.0.cnf" set_var EASYRSA_DIGEST "sha512"
আপনি ফাইলে যেকোন ডেটা নির্দিষ্ট করতে পারেন, এটি সার্ভারের কনফিগারেশন এবং পরবর্তী অপারেশনকে প্রভাবিত করবে না।
ফাইলটি অবশ্যই এক্সিকিউটেবল হতে হবে, তাই চালান:
# chmod +x vars
OpenVPN সার্টিফিকেট এবং কী তৈরি করুন
একটি কী তৈরি করার আগে, PKI শুরু করুন ডিরেক্টরি এবং একটি CA তৈরি করুন কী।# cd /etc/openvpn/easy-rsa/3/
# ./easyrsa init-pki
Note: using Easy-RSA configuration from: ./vars init-pki complete; you may now create a CA or requests. Your newly created PKI dir is: /etc/openvpn/easy-rsa/3/pki
একটি CA তৈরি করুন৷ কী:
# ./easyrsa build-ca
কমান্ড চালানোর পরে, কী এবং সার্টিফিকেট তৈরি করতে আপনাকে পাসওয়ার্ড লিখতে হবে। শংসাপত্রগুলিতে স্বাক্ষর করার জন্য আপনার পরে পাসওয়ার্ডের প্রয়োজন হবে৷
একটি সার্ভার কী তৈরি করুন (সার্ভারের নাম হল vpn.woshub.com ):
নোপাস বিকল্প পাসওয়ার্ড নিষ্ক্রিয় করে
# ./easyrsa gen-req vpn.woshub.com nopass
Note: using Easy-RSA configuration from: ./vars Using SSL: openssl OpenSSL 1.0.2k-fips 26 Jan 2017 Generating a 4096 bit RSA private key .........................++ writing new private key to '/etc/openvpn/easy-rsa/3/pki/private/vpn.woshub.com.key.R4IYCbD1zP' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Common Name (eg: your user, host, or server name) [vpn.woshub.com]: Keypair and certificate request completed. Your files are: req: /etc/openvpn/easy-rsa/3/pki/reqs/vpn.woshub.com.req key: /etc/openvpn/easy-rsa/3/pki/private/vpn.woshub.com.key
একটি শংসাপত্র ইস্যু করার সময়, Enter টিপুন৷ কমন নেম কলামে।
আমাদের CA শংসাপত্র ব্যবহার করে vpn.woshub.com কী সাইন করুন:
# ./easyrsa sign-req server vpn.woshub.com
শংসাপত্রে স্বাক্ষর করার জন্য, CA ইস্যু করার সময় আমাদের সেট করা পাসওয়ার্ডের প্রয়োজন হবে৷ সার্টিফিকেট:
স্ক্রিনশটে দেখানো হয়েছে, আপনাকে হ্যাঁ লিখতে হবে এবং CA পাসওয়ার্ড প্রক্রিয়াধীন।
শংসাপত্রগুলি কোনও ত্রুটি ছাড়াই তৈরি হয়েছে তা নিশ্চিত করতে, এই কমান্ডটি চালান:
# openssl verify -CAfile pki/ca.crt pki/issued/vpn.woshub.com.crt
pki/issued/vpn.woshub.com.crt: OK
সমস্ত OpenVPN সার্ভার সার্টিফিকেট তৈরি করা হয়েছে৷
৷- মূল শংসাপত্র
pki/ca.crt
- ব্যক্তিগত সার্ভার কী
pki/private/vpn.woshub.com.key
- সার্ভার সার্টিফিকেট
pki/issued/vpn.woshub.com.crt
একটি ক্লায়েন্ট কী তৈরি করতে, নিম্নলিখিত কমান্ডটি চালান:
# ./easyrsa gen-req client_name nopass
চলুন admin1 তৈরি করি ক্লায়েন্ট কী:# ./easyrsa gen-req admin1 nopass
Note: using Easy-RSA configuration from: ./vars Using SSL: openssl OpenSSL 1.0.2k-fips 26 Jan 2017 Generating a 4096 bit RSA private key ..........++ writing new private key to '/etc/openvpn/easy-rsa/3/pki/private/admin1.key.R5OY6reT2e' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Common Name (eg: your user, host, or server name) [admin1]: Keypair and certificate request completed. Your files are: req: /etc/openvpn/easy-rsa/3/pki/reqs/admin1.req key: /etc/openvpn/easy-rsa/3/pki/private/admin1.key
আপনাকে অবশ্যই CA সার্টিফিকেট ব্যবহার করে স্বাক্ষর করতে হবে, যেমন সার্ভার কী:
# ./easyrsa sign-req client admin1
ব্যবহারকারীর জন্য শংসাপত্র তৈরি করা হয়েছে৷
৷অতিরিক্তভাবে, কী বিনিময়ের জন্য ব্যবহার করার জন্য আপনাকে একটি ডিফি-হেলম্যান কী তৈরি করতে হবে:
# ./easyrsa gen-dh
এটি তৈরি করতে কিছু সময় লাগে:
তারপর একটি TSL শংসাপত্র তৈরি করুন:
# openvpn --genkey --secret ta.key
যদি পরে আমরা ক্লায়েন্ট সার্টিফিকেট প্রত্যাহার করতে যাচ্ছি, তাহলে আমাদের একটি CRL কী তৈরি করতে হবে:
# ./easyrsa gen-crl
Note: using Easy-RSA configuration from: ./vars Using SSL: openssl OpenSSL 1.0.2k-fips 26 Jan 2017 Using configuration from /etc/openvpn/easy-rsa/3/pki/safessl-easyrsa.cnf Enter pass phrase for /etc/openvpn/easy-rsa/3/pki/private/ca.key: An updated CRL has been created. CRL file: /etc/openvpn/easy-rsa/3/pki/crl.pem
একটি শংসাপত্র প্রত্যাহার করতে, এই কমান্ডটি চালান:
./easyrsa revoke admin1
— যেখানে admin1 শংসাপত্রের নাম হল
প্রয়োজনীয় সার্টিফিকেট তৈরি করা হয়েছে। এখন সেগুলোকে কাজের ডিরেক্টরিতে কপি করুন।
এখানে সার্ভার সার্টিফিকেট আছে:
# cp pki/ca.crt /etc/openvpn/server/
# cp pki/issued/vpn.woshub.com.crt /etc/openvpn/server/
# cp pki/private/vpn.woshub.com.key /etc/openvpn/server/
# cp pki/private/dh.pem /etc/openvpn/server/
# cp pki/private/ta.key /etc/openvpn/server/
# cp pki/crl.pem /etc/openvpn/server/
এখানে ক্লায়েন্ট সার্টিফিকেট আছে:
# cp pki/issued/admin1.crt /etc/openvpn/client/
# cp pki/private/admin1.key /etc/openvpn/client/
OpenVPN সার্ভার কনফিগারেশন ফাইল, ফায়ারওয়াল নিয়ম
ওপেনভিপিএন কনফিগারেশন ফাইলের সেটিংসে যাওয়া যাক। প্রথমত, আপনার OpenVPN কনফিগারেশন ফাইল server.conf তৈরি করুন :
# cd /etc/openvpn/ && nano server.conf
ফাইলের বিষয়বস্তু নিম্নরূপ পরিবর্তন করুন:
# Specify the port, protocol and device port 1194 proto udp dev tun # Specify the paths to the server certificates ca /etc/openvpn/server/ca.crt cert /etc/openvpn/server/vpn.woshub.com.crt key /etc/openvpn/server/vpn.woshub.com.key # Paths to key CRL and DH dh /etc/openvpn/server/dh.pem crl-verify /etc/openvpn/server/crl.pem # Specify the IP settings of the network VPN clients will get addresses from server 10.1.2.0 255.255.255.0 push "redirect-gateway def1" # Specify the assigned DNS servers push "dhcp-option DNS 8.8.8.8" push "dhcp-option DNS 8.8.4.4" # Allow connection to different clients with the same key duplicate-cn # TLS protection tls-auth /etc/openvpn/server/ta.key 0 cipher AES-256-CBC tls-version-min 1.2 tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256 auth SHA512 auth-nocache # Other configuration details keepalive 20 60 persist-key persist-tun comp-lzo yes daemon user nobody group nobody # Path to the log file log-append /var/log/openvpn.log verb 3
তারপর ফাইলটি সংরক্ষণ করুন। আমি আমার VPN সার্ভারের জন্য ডিফল্ট UDP পোর্ট 1194 নির্দিষ্ট করেছি, কিন্তু আপনি আপনার OpenVPN-এর জন্য আপনার সার্ভারে যেকোনো বিনামূল্যের পোর্ট নির্দিষ্ট করতে পারেন।
এখন আপনাকে বিভাগগুলির মধ্যে সংযোগ এবং রাউটিংকে অনুমতি দেওয়ার জন্য ফায়ারওয়াল নিয়মগুলি সেট করতে হবে৷
আপনি যদি ফায়ারওয়ালড ব্যবহার করেন, তাহলে ফরোয়ার্ডিং সক্রিয় করুন কার্নেল মডিউল প্রথম:
# echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf
# sysctl -p
net.ipv4.ip_forward = 1
ফায়ারওয়ালডে openvpn পরিষেবা যোগ করুন , এবং tun0 বিশ্বস্ত অঞ্চলে ইন্টারফেস:
# firewall-cmd --permanent --add-service=openvpn
# firewall-cmd --permanent --zone=trusted --add-interface=tun0
ফায়ারওয়ালড বিশ্বস্ত অঞ্চলের জন্য 'মাস্কেরেড' সক্রিয় করুন:# firewall-cmd --permanent --zone=trusted --add-masquerade
NAT সক্রিয় করুন:
# firewall-cmd --permanent --direct --passthrough ipv4 -t nat -A POSTROUTING -s 10.1.2.0/24 -o Server_IP -j MASQUERADE
# firewall-cmd –reload
# iptables -t nat -A POSTROUTING -s 10.1.2.0/24 -o eth0 -j MASQUERADE
# iptables -A INPUT -p udp –dport 1194 -j ACCEPT
# service iptables save
OpenVPN পরিষেবা চালান এবং এটিকে স্টার্টআপে যোগ করুন:
# systemctl start openvpn@server
# systemctl enable openvpn@server
নিশ্চিত করুন যে udp\1194 পোর্টটি openvpn পরিষেবা দ্বারা শুনছে:
# lsof -i:1194
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME openvpn 12327 nobody 5u IPv4 45122 0t0 UDP *:openvpn
নেটওয়ার্ক ইন্টারফেসের আইপি সেটিংস চেক করুন:
# ip a
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 100 link/none inet 10.1.2.1 peer 10.1.2.2/32 scope global tun0 valid_lft forever preferred_lft forever
আপনি দেখতে পাচ্ছেন, কনফিগারেশনের সময় নির্দিষ্ট করা নেটওয়ার্ক tun0-এ যোগ করা হয়েছে ডিভাইস।
আপনার ওপেনভিপিএন কাজ করার জন্য এই ন্যূনতম সেটিংস।
ওপেনভিপিএন ব্যবহার করে একাধিক অফিস (কম্পিউটার) কিভাবে সংযুক্ত করবেন?
আসুন দেখি কিভাবে NAT-এর মাধ্যমে ইন্টারনেট অ্যাক্সেস সহ দুটি দূরবর্তী কম্পিউটার থেকে OpenVPN সার্ভারের সাথে সংযোগ করা যায় এবং একটি একক নেটওয়ার্কে যুক্ত করা যায়। উইন্ডোজ চলমান একটি কম্পিউটার থেকে একটি OpenVPN সার্ভারে সংযোগ করতে, আমি একটি অফিসিয়াল ক্লায়েন্ট ব্যবহার করছি। আপনি এটি অফিসিয়াল ওয়েবসাইটে ডাউনলোড করতে পারেন, তবে আমরা এটি বিস্তারিতভাবে বর্ণনা করব না এবং সরাসরি এটির কনফিগারেশনে যাব।
আপনি ক্লায়েন্ট ইনস্টল করার পরে, এখানে কনফিগারেশন ফাইল তৈরি করতে এগিয়ে যান:
C:\Program Files\OpenVPN\config\
আমি ক্লায়েন্ট নামের একটি ফাইল তৈরি করেছি এবং এতে নিম্নলিখিত বিষয়বস্তু যোগ করেছি:
client dev tun proto udp remote 112.113.114.15 1194 resolv-retry infinite nobind block-outside-dns persist-key persist-tun mute-replay-warnings remote-cert-tls server tls-client auth SHA512 tls-auth "C:\\Program Files\\OpenVPN\\config\\ta.key" 1 remote-cert-eku "TLS Web Server Authentication" ca "C:\\Program Files\\OpenVPN\\config\\ca.crt" cert "C:\\Program Files\\OpenVPN\\config\\admin1.crt" key "C:\\Program Files\\OpenVPN\\config\\admin1.key" cipher AES-256-CBC comp-lzo verb 3
এটি কনফিগার করতে, আমাদের আগে তৈরি করা ক্লায়েন্ট, নিরাপত্তা এবং সার্ভার সার্টিফিকেটের প্রয়োজন হবে। আপনাকে অবশ্যই সেগুলি আপনার সার্ভার থেকে ডাউনলোড করতে হবে এবং একটি স্থানীয় ফোল্ডারে রাখতে হবে৷ তারপর OpenVPN ক্লায়েন্ট কনফিগারেশন ফাইলে তাদের যাওয়ার পথ নির্দিষ্ট করুন।
তারপর আপনি ট্রেতে OpenVPN আইকনে ক্লিক করে সার্ভারের সাথে সংযোগ করতে পারেন:
আমি সংযোগ করেছি এবং আমার ডিভাইসের জন্য নিম্নলিখিত আইপি ঠিকানা পেয়েছি:
IPv4 address. . . . . . . . . . . . : 10.1.2.14 Subnet mask . . . . . . . . . . : 255.255.255.0
একটি NAT এর পিছনে দ্বিতীয় কম্পিউটারে, আমি একই ক্রিয়া সম্পাদন করেছি এবং দ্বিতীয় ব্যবহারকারীর জন্য অগ্রিম একটি শংসাপত্র তৈরি করেছি৷ সংযোগ করার পর, দ্বিতীয় পিসিও VPN নেটওয়ার্ক থেকে একটি IP ঠিকানা পেয়েছে:
IPv4 address. . . . . . . . . . . . : 10.1.2.16 Subnet mask . . . . . . . . . . : 255.255.255.0
সংযোগ করার পরে, উভয় কম্পিউটার একই নেটওয়ার্কে থাকে এবং একে অপরকে দেখতে পায়।
দ্বিতীয় পিসিতে পিং করুন:
Pinging 10.1.2.16 with 32 bytes of data: Reply from 10.1.2.16: bytes=32 time=73ms TTL=127
প্রথম পিসিতে পিং করুন:
Pinging 10.1.2.14 with 32 bytes of data: Reply from 10.1.2.14: bytes=32 time=79ms TTL=127
উভয় সংযুক্ত VPN ক্লায়েন্ট প্যাকেট পাঠাতে এবং একে অপরের কাছে সরাসরি ফাইল স্থানান্তর করতে পারে। এইভাবে, আমরা দেশের বিভিন্ন স্থানে শারীরিকভাবে অবস্থিত দুটি ডিভাইসকে একটি একক স্থানীয় নেটওয়ার্কে যুক্ত করতে পারি।
আপনি আপনার OpenVPN সার্ভারে ব্যবহারকারীদের জন্য যেকোনো সংখ্যক কী বা সার্টিফিকেট তৈরি করতে পারেন। আপনার যদি একটি নতুন শংসাপত্রের প্রয়োজন হয়, তাহলে এই কমান্ডগুলি চালান /etc/openvpn/easy-rsa/3:
# ./easyrsa gen-req clientname nopass
# ./easyrsa sign-req client clientname
ক্লায়েন্ট সার্টিফিকেট প্রত্যাহার করতে ভুলবেন না যদি সেগুলি আপনার নেটওয়ার্ক সুরক্ষিত রাখতে ব্যবহার না করা হয়।