কম্পিউটার

Linux CentOS/RHEL-এ OpenVPN সার্ভার ইনস্টল এবং কনফিগার করুন

এই নিবন্ধে আমরা একটি 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

কমান্ড চালানোর পরে, কী এবং সার্টিফিকেট তৈরি করতে আপনাকে পাসওয়ার্ড লিখতে হবে। শংসাপত্রগুলিতে স্বাক্ষর করার জন্য আপনার পরে পাসওয়ার্ডের প্রয়োজন হবে৷

Linux CentOS/RHEL-এ OpenVPN সার্ভার ইনস্টল এবং কনফিগার করুন

একটি সার্ভার কী তৈরি করুন (সার্ভারের নাম হল 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 ইস্যু করার সময় আমাদের সেট করা পাসওয়ার্ডের প্রয়োজন হবে৷ সার্টিফিকেট:

Linux CentOS/RHEL-এ OpenVPN সার্ভার ইনস্টল এবং কনফিগার করুন

স্ক্রিনশটে দেখানো হয়েছে, আপনাকে হ্যাঁ লিখতে হবে এবং 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

Linux CentOS/RHEL-এ OpenVPN সার্ভার ইনস্টল এবং কনফিগার করুন

ব্যবহারকারীর জন্য শংসাপত্র তৈরি করা হয়েছে৷

অতিরিক্তভাবে, কী বিনিময়ের জন্য ব্যবহার করার জন্য আপনাকে একটি ডিফি-হেলম্যান কী তৈরি করতে হবে:

# ./easyrsa gen-dh

এটি তৈরি করতে কিছু সময় লাগে:

Linux CentOS/RHEL-এ OpenVPN সার্ভার ইনস্টল এবং কনফিগার করুন

তারপর একটি 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 ব্যবহার করেন, তাহলে এই কমান্ডগুলি চালান:

# 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 আইকনে ক্লিক করে সার্ভারের সাথে সংযোগ করতে পারেন:

Linux CentOS/RHEL-এ 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

ক্লায়েন্ট সার্টিফিকেট প্রত্যাহার করতে ভুলবেন না যদি সেগুলি আপনার নেটওয়ার্ক সুরক্ষিত রাখতে ব্যবহার না করা হয়।


  1. ভয়েড লিনাক্স কি এবং কিভাবে এটি ইনস্টল করতে হয়

  2. লিনাক্সে ওপেনবক্স উইন্ডো ম্যানেজার কীভাবে ইনস্টল এবং কনফিগার করবেন

  3. লিনাক্স ভিপিএস-এ কীভাবে CS:GO সার্ভার তৈরি করবেন

  4. লিনাক্স সার্ভারে উচ্চ ট্র্যাফিক ওয়েবসাইটগুলির জন্য অ্যাপাচি এবং পিএইচপি কীভাবে কনফিগার করবেন