<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>لینوکس Linux</title>
	<atom:link href="https://linux.vcenter.ir/feed/" rel="self" type="application/rss+xml" />
	<link>https://linux.vcenter.ir</link>
	<description>لینوکس Linux</description>
	<lastBuildDate>Sun, 20 Sep 2020 11:19:13 +0000</lastBuildDate>
	<language>fa-IR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.6.2</generator>
	<item>
		<title>ایجاد اتصال SSH بدون Password در لینوکس</title>
		<link>https://linux.vcenter.ir/%d8%a7%db%8c%d8%ac%d8%a7%d8%af-%d8%a7%d8%aa%d8%b5%d8%a7%d9%84-ssh-%d8%a8%d8%af%d9%88%d9%86-password-%d8%af%d8%b1-%d9%84%db%8c%d9%86%d9%88%da%a9%d8%b3/</link>
					<comments>https://linux.vcenter.ir/%d8%a7%db%8c%d8%ac%d8%a7%d8%af-%d8%a7%d8%aa%d8%b5%d8%a7%d9%84-ssh-%d8%a8%d8%af%d9%88%d9%86-password-%d8%af%d8%b1-%d9%84%db%8c%d9%86%d9%88%da%a9%d8%b3/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Thu, 03 Sep 2020 21:59:24 +0000</pubDate>
				<category><![CDATA[وبلاگ]]></category>
		<guid isPermaLink="false">http://linux.vcenter.ir/?p=107</guid>

					<description><![CDATA[ایجاد اتصال SSH بدون Password SSH Passwordless Login در پنج قدم در این پست نحوه پیکربندی و ایجاد اتصال SSH بدون Password  یا اصطلاحا Password-Less Login را بین دو سرور مرور خواهیم کرد.  در این روش اتصال از طریق SSH Key انجام خواهد گرفت. از مزیت های این روش که اغلب بین سرور های Trust [&#8230;]]]></description>
										<content:encoded><![CDATA[<header class="entry-header-outer">
<div class="entry-header">
<h1 class="post-title entry-title">ایجاد اتصال SSH بدون Password</h1>
<h2 class="entry-sub-title">SSH Passwordless Login در پنج قدم</h2>
</div>
</header>
<div class="featured-area">
<div class="featured-area-inner">
<figure class="single-featured-image"><img fetchpriority="high" decoding="async" class="attachment-jannah-image-post size-jannah-image-post wp-post-image" src="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_780,h_405/https://maaleki.ir/wp-content/uploads/2017/09/ssh-verschluesselung-c_01-780x405.jpg" alt="" width="780" height="405" /></figure>
</div>
</div>
<div class="entry-content entry clearfix">
<p>در این پست نحوه پیکربندی و ایجاد اتصال SSH بدون Password  یا اصطلاحا Password-Less Login را بین دو سرور مرور خواهیم کرد.  در این روش اتصال از طریق SSH Key انجام خواهد گرفت. از مزیت های این روش که اغلب بین سرور های Trust  ایجاد می شود، می توان به راحتی تبادل فایل، پشتیبان گیری به صورت ریموت،  مدیریت سرور مقصد به صورت ریموت و …  اشاره کرد.</p>
<p>در محیطی این آموزش سرور مبدا و مقصد با مشخصات زیر می باشند.</p>
<p>سرور مبدا یا سروری که قرار است اتصال بدون Password  از طریق آن انجام شود با آدرس 172.17.105.29</p>
<p>سرور مقصد که قرار است اتصال بدون Password  به آن انجام پذیرد با آدرس 172.17.105.28</p>
<h5>قدم اول :</h5>
<p>&nbsp;</p>
<p>اتصال به سرور مبدا و ایجاد یک جفت کلید عمومی از طریق دستور زیر، در اینجا من از نام کاربری root  بین دو سرور استفاده میکنم و در صورت تمایل میتوانید از نام های کاربری دیگری غیر از root  هم استفاده کنید.</p>
<pre class="theme:dark-terminal lang:sh decode:true">[root@hamed-lab ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
0e:74:10:1c:b5:08:59:fb:e0:eb:7b:8a:d6:dd:34:6b root@hamed-lab
The key's randomart image is:
+--[ RSA 2048]----+
|    .+=+.        |
|    ...+ .       |
|      = o        |
|     o +         |
|      o S        |
|       +  o      |
|     ....o o     |
|    .o. o E      |
|   .. ++ .       |
+-----------------+</pre>
<p><a href="http://maaleki.ir/wp-content/uploads/2017/09/ssh-keygen.gif"><img decoding="async" class="aligncenter wp-image-376 size-full" title="ssh-keygen" src="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_677,h_310/http://maaleki.ir/wp-content/uploads/2017/09/ssh-keygen.gif" alt="" width="677" height="310" /></a></p>
<h5>قدم دوم:</h5>
<p>ایجاد دایکتوری ای با نام .ssh در Home Directory  کاربر، در سرور مقصد که در اینجا ما این عمل را از طریق SSH و از سرور مبدا انجام می دهیم.</p>
<pre class="theme:dark-terminal lang:sh decode:true ">[root@hamed-lab ~]# ssh root@172.17.105.28 mkdir -p .ssh
root@172.17.105.28's password: 
</pre>
<p>&nbsp;</p>
<p><a href="http://maaleki.ir/wp-content/uploads/2017/09/mkdir.gif"><img decoding="async" class="aligncenter wp-image-380 size-full" title="Make .ssh Directory" src="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_604,h_87/http://maaleki.ir/wp-content/uploads/2017/09/mkdir.gif" alt="" width="604" height="87" /></a></p>
<h5>قدم سوم</h5>
<p>محتویات فایل id_rsa.pub که در مرحله اول ایجاد شده است باید در سرور مقصد ودر فایل authorized_keys و در  مسیر ایجاد شده در مرحله قبل وارد شود.</p>
<pre class="theme:dark-terminal lang:sh decode:true ">[root@hamed-lab ~]# cat .ssh/id_rsa.pub | ssh root@172.17.105.28 'cat &gt;&gt; .ssh/authorized_keys'
root@172.17.105.28's password: 
</pre>
<p><a href="http://maaleki.ir/wp-content/uploads/2017/09/upload.gif"><img loading="lazy" decoding="async" class="aligncenter wp-image-378 size-full" title="Upload Key" src="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_629,h_86/http://maaleki.ir/wp-content/uploads/2017/09/upload.gif" alt="" width="629" height="86" /></a></p>
<h5>قدم چهارم</h5>
<p>بر اساس ورژن های مختلف SSH باید برای دایرکتوری و فایل ایجاد شده در سرور مقصد Permission  های لازم را ایجاد کرد.</p>
<pre class="theme:dark-terminal lang:sh decode:true ">[root@hamed-lab ~]# ssh root@172.17.105.28 "chmod 700 .ssh ; chmod 640 .ssh/authorized_keys"
root@172.17.105.28's password: 
</pre>
<p><a href="http://maaleki.ir/wp-content/uploads/2017/09/chmod.gif"><img loading="lazy" decoding="async" class="aligncenter wp-image-379 size-full" title="set Permissions" src="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_630,h_54/http://maaleki.ir/wp-content/uploads/2017/09/chmod.gif" alt="" width="630" height="54" /></a></p>
<h5>مرحله پنجم</h5>
<p>اتصال بدون Password</p>
<p>اگر مراحل بالا به درستی انجام شده، از این به بعد اتصال به سرور مقصد از طریق کاربر root  بدون Password  انجام خواهد شد.</p>
<pre class="theme:dark-terminal lang:sh decode:true">[root@hamed-lab ~]# ssh root@172.17.105.28 
Last login: Mon Sep 18 21:57:13 2017 from 172.17.105.29
[root@localhost ~]# ifconfig 
eno16780032: flags=4163&lt;UP,BROADCAST,RUNNING,MULTICAST&gt;  mtu 1500
        inet 172.17.105.28  netmask 255.255.255.128  broadcast 172.17.105.127
        inet6 fe80::250:56ff:feba:16f2  prefixlen 64  scopeid 0x20&lt;link&gt;
        ether 00:50:56:ba:16:f2  txqueuelen 1000  (Ethernet)
        RX packets 734175  bytes 42688092 (40.7 MiB)
        RX errors 0  dropped 245  overruns 0  frame 0
        TX packets 4779  bytes 790935 (772.3 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73&lt;UP,LOOPBACK,RUNNING&gt;  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10&lt;host&gt;
        loop  txqueuelen 0  (Local Loopback)
        RX packets 10  bytes 964 (964.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 10  bytes 964 (964.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
</pre>
<p><a href="http://maaleki.ir/wp-content/uploads/2017/09/ssh.gif"><img loading="lazy" decoding="async" class="aligncenter wp-image-375 size-full" title="Password-Less Login" src="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_621,h_275/http://maaleki.ir/wp-content/uploads/2017/09/ssh.gif" alt="" width="621" height="275" /></a></p>
<p>امیدوارم مفید واقع شده باشد.</p>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://linux.vcenter.ir/%d8%a7%db%8c%d8%ac%d8%a7%d8%af-%d8%a7%d8%aa%d8%b5%d8%a7%d9%84-ssh-%d8%a8%d8%af%d9%88%d9%86-password-%d8%af%d8%b1-%d9%84%db%8c%d9%86%d9%88%da%a9%d8%b3/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>نصب و راه اندازی سرویس VSFTP در CentOS</title>
		<link>https://linux.vcenter.ir/%d9%86%d8%b5%d8%a8-%d9%88-%d8%b1%d8%a7%d9%87-%d8%a7%d9%86%d8%af%d8%a7%d8%b2%db%8c-%d8%b3%d8%b1%d9%88%db%8c%d8%b3-vsftp-%d8%af%d8%b1-centos/</link>
					<comments>https://linux.vcenter.ir/%d9%86%d8%b5%d8%a8-%d9%88-%d8%b1%d8%a7%d9%87-%d8%a7%d9%86%d8%af%d8%a7%d8%b2%db%8c-%d8%b3%d8%b1%d9%88%db%8c%d8%b3-vsftp-%d8%af%d8%b1-centos/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Thu, 03 Sep 2020 21:57:20 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<guid isPermaLink="false">http://linux.vcenter.ir/?p=105</guid>

					<description><![CDATA[نصب و راه اندازی سرویس VSFTP در CentOS آموزش گام به گام نصب و راه اندازی سرویس FTP در لینوکس آموزش نصب و راه اندازی سرویس VSFTP در CentOS در این پست به معرفی سرویس vsftp و برخی از پارامتر های مورد استفاده در آن خواهیم پرداخت و در ادامه به نحوه پیکربندی سرویس و [&#8230;]]]></description>
										<content:encoded><![CDATA[<header class="entry-header-outer">
<div class="entry-header">
<h1 class="post-title entry-title">نصب و راه اندازی سرویس VSFTP در CentOS</h1>
<h2 class="entry-sub-title">آموزش گام به گام نصب و راه اندازی سرویس FTP در لینوکس</h2>
</div>
</header>
<div class="post-footer post-footer-on-top">
<div class="share-links  share-centered icons-only"></div>
</div>
<div class="featured-area">
<div class="featured-area-inner">
<figure class="single-featured-image"><img loading="lazy" decoding="async" class="attachment-jannah-image-post size-jannah-image-post wp-post-image" src="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_750/https://maaleki.ir/wp-content/uploads/2020/04/ftp-diagram.png" sizes="(max-width: 750px) 100vw, 750px" srcset="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_750/https://maaleki.ir/wp-content/uploads/2020/04/ftp-diagram.png 750w, https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_300/https://maaleki.ir/wp-content/uploads/2020/04/ftp-diagram-300x151.png 300w" alt="ftp-diagram" width="750" height="378" /></figure>
</div>
</div>
<div class="entry-content entry clearfix">
<h1>آموزش نصب و راه اندازی سرویس VSFTP در CentOS</h1>
<p>در این پست به معرفی سرویس vsftp و برخی از پارامتر های مورد استفاده در آن خواهیم پرداخت و در ادامه به نحوه پیکربندی سرویس و تست عملکرد آن خواهیم پرداخت. در انتهای این آموزش شما قادر خواهید بود که سرویس vsftp را راه اندازی نمایید و به صورت اولیه سرویس خود را ایمن نمایید.</p>
<h2><strong>FTP چیست:</strong></h2>
<p>FTP پروتکلی است که با هدف انتقال فایل در بستر شبکه ایجاد شده است و برای کاربران امکان اتصال و انتقال فایل از کلاینت به سرور را فراهم می نماید.</p>
<p>این پروتکل یکی از رایج ترین و ساده ترین پروتکل های مورد استفاده در شیکه برای انتقال فایل می باشد ولی به دلیل اینکه در تبادل اطلاعات از رمزنگاری استفاده نمیکند دارای امینت بسیار پائین است در نتیجه مورد هدف Exploit های بسیاری است.</p>
<h2>vsftp چیست؟:</h2>
<p>vsftp یکی از سرویس های ارائه FTP است که مخفف کلمات Very Secure File Transfer Protocol  میباشد. این سرویس به علت امنیتی که در عین سادگی پیکربندی فراهم میکند بسیار مورد توجه قرار گرفته است و به صورت گسترده نیز در حال استفاده است. برخی از امکانات این سرویس به شرح زیر است:</p>
<ul>
<li>
<ul>
<li>امکان استفاده از virtual IP</li>
<li>پشتیبانی از virtual user</li>
<li>قابلیت کار به صورت Standalone یا تحت نظر inetd</li>
<li>فراهم بودن ایجاد محدودیت در پهنای باند</li>
<li>پشتیبانی از IPv6</li>
<li>رمز نگاری اطلاعات از طریق ssl</li>
</ul>
</li>
</ul>
<h2>نصب و راه اندازی vsftp:</h2>
<p>در این آموزش از سیستم عامل CentOS به عنوان سرور استفاده شده است. پکیج مربوط به این سرویس vsftpd نام دارد و در repository های پیش فرض این سیستم عامل قرار دارد.</p>
<p>با استفاده از yum پیکیج vsftpd  را نصب می نماییم.</p>
<pre class="line-numbers language-bash code-toolbar"><code class=" language-bash">yum –y install vsftpd</code></pre>
<div class="toolbar">
<div class="toolbar-item"><a>Copy</a></div>
</div>
<p>بعد دانلود و نصب پیکیج های مورد نیاز، می بایست سرویس را start  و  enable  کرده تا سرویس در هر بار بوت به صورت اتوماتیک اجرا گردد.</p>
<pre class="line-numbers language-bash code-toolbar"><code class=" language-bash">systemctl enable vsftpd 
systemctl start vsftpd</code></pre>
<div class="toolbar">
<div class="toolbar-item"><a>Copy</a></div>
</div>
<p>حال برای این که امکان سرویس دهی از طریق پروتکل ftp  به سیستم های داخل شبکه فراهم شود، نیاز است رول های مربوطه در firewalld  به صورت دائمی اضافه گردند.  در غیر این صورت فایروال اتصال کاربران از طریق این پروتکل را به صورت پیش فرض نمی دهد.</p>
<pre class="line-numbers language-bash code-toolbar"><code class=" language-bash">firewall-cmd --zone=public --permanent --add-port=21/tcp
firewall-cmd  --zone=public --permanent --add-service=ftp
firewall-cmd –reload</code></pre>
<div class="toolbar">
<div class="toolbar-item"><a>Copy</a></div>
</div>
<p>حال که سرویس نصب، راه اندازی، و فعال شده است، بهتر است قبل از نصب به آشنایی با برخی از پارامتر های قابل پیکربندی در این سرویس بپردازیم.</p>
<h2>پارامترهای فایل پیکربندی:</h2>
<p>سرویس vsftp نیز همانند اکثر سرویس های لینوکسی پارامتر های پیکربندی را از قایل پیکربندی آن و  درمسیر    /etc/vsftpd/vsftpd.conf مقدار دهی خواهد کرد. برخی از پارامتر های مورد استفاده در این سرویس به همراه توضیحی مختصر از آنها به شرح جدول زیر می باشد.</p>
<div class="table-is-responsive">
<table>
<tbody>
<tr>
<td>anonymous_enable</td>
<td>مشخص کننده این است که آیا امکان اتصال به سرور به صورت ناشناس وجود دارد یا خیر در حالت پیش فرض مقدار این گزینه برابر با yes است که به این معنی می باشد که نام های کاربری anonymous و ftp امکان اتصال به سرور را دارا می باشند.</td>
</tr>
<tr>
<td>local_enable_enable</td>
<td>امکان authentication را بر اساس نام های کاربری local فراهم می سازد. درواقع این گزینه امکان authentication کاربران را بر اساس فایل /etc/passwd فراهم میکند.</td>
</tr>
<tr>
<td>write_enable</td>
<td>در صورت فعال بودن، اجازه استفاده از دستوراتی که منجر به نوشتن بر روی دیسک میشود را فراهم میکند. مانند put یا del</td>
</tr>
<tr>
<td>local_umask</td>
<td>مشخص کننده umask پیش فرض فایل های ایجاد شده می باشد. مقدار پیش فرض022 می باشدکه برابر با ۷۵۵ در دستورchmod است.</td>
</tr>
<tr>
<td>dirmessage_enable</td>
<td>هنگامی که کاربری به دایرکتوری ای جدید وارد میشود در صورت yes بودن این گزینه و موجود بودن فایل message_file پیغامیکه درون آن فایل قرار دازد در هنگام تغییر دایرکتوری به وی نمایش داده می شود.</td>
</tr>
<tr>
<td>message_file</td>
<td>بیان گر نام فایلی است که قرار است پیغام آن به کاربر نمایش داده شود.</td>
</tr>
<tr>
<td>connect_from_port_20</td>
<td>استفاده از پورت 20 را به عنوان data channel فعال یا غیر فعال میکند. این گزینه با yes یا no مقدار دهی می شود.</td>
</tr>
<tr>
<td>ftp_data_port</td>
<td>در صورتی که قصد داشته باشیم data channel بر روی پورتی غیر از پورت 20 فعالیت کند می بایست گزینه بالا را برابر با no قرار داده و از طریق ftp_data_port پورت مورد نظر را مشخص نمائیم.</td>
</tr>
<tr>
<td>xferlog_std_format</td>
<td>در صورت no بودن، لاگ های اتصال کاربران در مسیر /var/log/vsftpd.log ثبت و ذخیره مشود.</td>
</tr>
<tr>
<td>listen</td>
<td>این گزینه مشخص کننده این است که سرویس به صورت standalone فعالیت کند یا خیر. در صورتی که این گزینه no باشد سرویس تحت مدیریت xinetd فعالیت خواهد کرد در غیر این صورت به عنوان سرویسی خود تمام وظایف مانند listen کردن بر روی پورت ها را بر عهده میگیرد.<br />
معمولا در صورتی این گزینه no قرار داده میشود که قرار باشد بر روی IPv4 و IPv6 به صورت همزمان فعالیت نمود. باید توجه داشت در صورتی که سرویس در حالت standalone قرار کرفته باشد، خط listen_ipv6 می بایست برابر با no قرار گیرد.</td>
</tr>
<tr>
<td>listen_ipv6</td>
<td>با فعال بودن این گزینه سرویس بر روی سوکت IPv6 فعالیت خواهد کرد.</td>
</tr>
<tr>
<td>pam_service_name</td>
<td>بیانگر نامی است که مازول امنیتی pam برای این سرور مورد استفاده قرار خواهد داد. فایل کانفیگ سرویس ها در ماژول pam در مسیر /etc/pam/vsftp قرار میگیرد.</td>
</tr>
<tr>
<td>userlist_enable</td>
<td>با yse ‌بودن این گزینه سرویس لیست کاربران را از فایلی که معمولا در مسیر /etc/vsftp.userlist قرار دارد میخواند. در صورتی که گزینه userlist_deny برابر با yes ‌باشد هیچکدام از کاربران درون لیست مذکور اجازه اتصال به سرور را نخواهند داشت. بر عکس در صورتی که این مقدار برابر با no باشد تنها کاربران داخل لیست امکان اتصال خواهند داشت.</td>
</tr>
<tr>
<td>tcp_wrappers</td>
<td>این گزینه برای فعال یا غیر فعال کردن tcp wrappers است. هنگامی که کلاینتی قصد اتصال و استفاده از سرویسی را داشته باشد tcp wrapper به ترتیب به فایل های /etc/hosts.allow و /etc/hosts.deny نگاه میکند تا ببیند آیا لیستی از هاست های مجاز و غیر مجاز وجود دارد یا خیر و اگر وجود دارد کلاینت در کدام یک از این فایل ها وجود دارد.<br />
به عنوان مثال میتوان کلاینت با آدرس ۱۹۲.۱۶۸.۲۰۰.۲۰۱و لوکال هاست را به صورت زیر جهت استفاده از vsftp مجاز و بقیه را غیر مجاز معرفی کرد.<br />
Vsftp : 192.168.200.201,LOCAL<br />
و با اقزودن خط زیر به /etc/hosts.deny بقیه کلاینت ها را غیر مجاز معرفی کرد.<br />
Vsftp : ALL<br />
ALL : ALL</td>
</tr>
<tr>
<td>chown_uploads</td>
<td>با کمک این گزینه میتوان تعیین کرد که فایل هایی که کاربران ناشناس در سرور آپلود می نمایند دارای ownership به خصوصی باشند. این گزینه در کنار گزینه chown_username کاربرد دارد.</td>
</tr>
<tr>
<td>chown_username</td>
<td>بیان گر نام کاربری است که فایل های آپلود شده به سرور تحت مالکیت آن خواهند بود.</td>
</tr>
<tr>
<td>idle_session_timeout</td>
<td>بیانگر مدت زمانی است که سرور در انتظار فعالیتی از کلاینت می ماند. در صورتی کانکشنی بیش از مدت زمان تعیین شده بدون فعالیت باقی بماند آن کانکشن توسط سرور بسته خواهد شد.</td>
</tr>
<tr>
<td>userlist_file</td>
<td>معرفی کننده مسیری است که فایل userlist در آن قرار گرفته است.</td>
</tr>
<tr>
<td>userlist_deny</td>
<td>اگر برابر با yes ‌باشد ( مقدار پیش فرض) کاربران داخل این لیست مجاز به اتصال نخواهند بود. در صورت no ‌بودن تنها کاربران userlist امکان اتصال خواهند داشت.</td>
</tr>
<tr>
<td>chroot_local_user</td>
<td>بیانگر این است که jail ‌برای کاربران فعال است و پس از ورود در home دایرکتوری خود محبوس میشوند. اما به صورت پیش فرض و به دلایل امینتی vsftp اازه نوشتن در مسیری که jail شده است را به کاربر نمی دهد. برای این که کاربر اجازه نوشتن در دایرکتوری ای که در آن jail شده است را داشته باشد باید گزینه زیر نیز فعال شود.</td>
</tr>
<tr>
<td>allow_writeable_chroot</td>
<td>اجازه دادن به کاربر جهت نوشتن در روی دایرکتوری ای که در آن jail شده است.</td>
</tr>
</tbody>
</table>
</div>
<p>&nbsp;</p>
<p>نکته: در خصوص گزینه message_file باید توجه داشت که این فایل باید hidden  باشد و در دایرکتوری ای که قصد نمایش آن را به کاربر داریم وجود داشته باشد. به عنوان نمونه با قرار دادن مقدار این پارامتر به صورت زیر  و قرار دادن فایل warning در home  کاربر می بایست پیغام داخل این فایل در هنگام ورود  به کاربر نمایش داده شود.</p>
<pre class="line-numbers language-bash code-toolbar"><code class=" language-bash">message_file=.warning</code></pre>
<div class="toolbar">
<div class="toolbar-item"><a>Copy</a></div>
</div>
<p><a href="http://maaleki.ir/wp-content/uploads/2020/04/Untitled.jpg"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-1126" src="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_624,h_149/http://maaleki.ir/wp-content/uploads/2020/04/Untitled.jpg" sizes="(max-width: 624px) 100vw, 624px" srcset="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_624/https://maaleki.ir/wp-content/uploads/2020/04/Untitled.jpg 624w, https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_300/https://maaleki.ir/wp-content/uploads/2020/04/Untitled-300x72.jpg 300w" alt="mesage" width="624" height="149" /></a></p>
<p>در نهایت با توجه به این که در این آموزش قصد داریم تا امکان استفاده از ftp را برای کاربران local فراهم کنیم و هر کاربر نیز در home  خود  jail شود،  فایل config نهایی به صورت زیر خواهد بود.</p>
<p><a href="http://maaleki.ir/wp-content/uploads/2020/04/conf.d.jpg"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-1127" src="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_624,h_188/http://maaleki.ir/wp-content/uploads/2020/04/conf.d.jpg" sizes="(max-width: 624px) 100vw, 624px" srcset="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_624/https://maaleki.ir/wp-content/uploads/2020/04/conf.d.jpg 624w, https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_300/https://maaleki.ir/wp-content/uploads/2020/04/conf.d-300x90.jpg 300w" alt="conf.d" width="624" height="188" /></a></p>
<p>پس از ذخیره کردن تنظیمات، سرویس را مجددا راه اندازی میکنیم.</p>
<p>با توجه به این که ما در این آموزش از chroot استفاده کرده ایم نیاز است تا selinux  نیز در این خصوص پیکربندی شود. در غیر این صورت در هنگام وررود با پیغام زیر مواجه خواهید شد.</p>
<pre class="line-numbers language-bash code-toolbar"><code class=" language-bash">setsebool -P ftpd_full_access on</code></pre>
<div class="toolbar">
<div class="toolbar-item"><a>Copy</a></div>
</div>
<p><a href="http://maaleki.ir/wp-content/uploads/2020/04/selinux-error-.jpg"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-1129" src="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_624,h_136/http://maaleki.ir/wp-content/uploads/2020/04/selinux-error-.jpg" sizes="(max-width: 624px) 100vw, 624px" srcset="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_624/https://maaleki.ir/wp-content/uploads/2020/04/selinux-error-.jpg 624w, https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_300/https://maaleki.ir/wp-content/uploads/2020/04/selinux-error--300x65.jpg 300w" alt="selinux error" width="624" height="136" /></a></p>
<h2>تست عملکرد:</h2>
<p>پس از انجام تنظیمات، اتصال از طرق ftp به سرور را تست و بررسی میکنیم.</p>
<p><a href="http://maaleki.ir/wp-content/uploads/2020/04/test-service-funcionality-.jpg"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-1130" src="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_624,h_233/http://maaleki.ir/wp-content/uploads/2020/04/test-service-funcionality-.jpg" sizes="(max-width: 624px) 100vw, 624px" srcset="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_624/https://maaleki.ir/wp-content/uploads/2020/04/test-service-funcionality-.jpg 624w, https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_300/https://maaleki.ir/wp-content/uploads/2020/04/test-service-funcionality--300x112.jpg 300w" alt="test-service-funcionality" width="624" height="233" /></a></p>
<p>همانطور که مشاهده می شود، اتصال به سرور موفق بود. حال با توجه به این که tcp_wrapper  نیز در تنظیمات vsftp فعال شده بود، تست دیگر را با معرفی هاست و سرویس در فایل های /etc/hosts.allow و /etc/hosts.deny انجام می دهیم.</p>
<p>ابتدای به امر در فایل /etc/hosts.allow امکان استفاده از سرویس vsftpd را تنها برای Localhost فراهم کرده و سپس در /etc/hosts.deny سایر هاست ها را از استفاده از این سرویس منع میکنیم. محتویات فایل های اشاره شده به صورت زیر خواهد بود.</p>
<p><a href="http://maaleki.ir/wp-content/uploads/2020/04/tcp-wrapper.jpg"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-1131" src="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_624,h_88/http://maaleki.ir/wp-content/uploads/2020/04/tcp-wrapper.jpg" sizes="(max-width: 624px) 100vw, 624px" srcset="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_624/https://maaleki.ir/wp-content/uploads/2020/04/tcp-wrapper.jpg 624w, https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_300/https://maaleki.ir/wp-content/uploads/2020/04/tcp-wrapper-300x42.jpg 300w" alt="tcp-wrapper" width="624" height="88" /></a></p>
<p>ابتدا به صورت local  اتصال را بررسی می نمائیم. همانطور که در تصویر زیر مشاهده مینمائید این اتصال با موفقیت انجام شد.</p>
<p><a href="http://maaleki.ir/wp-content/uploads/2020/04/tcp-wrapper-test-localhost.jpg"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-1132" src="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_624,h_173/http://maaleki.ir/wp-content/uploads/2020/04/tcp-wrapper-test-localhost.jpg" sizes="(max-width: 624px) 100vw, 624px" srcset="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_624/https://maaleki.ir/wp-content/uploads/2020/04/tcp-wrapper-test-localhost.jpg 624w, https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_300/https://maaleki.ir/wp-content/uploads/2020/04/tcp-wrapper-test-localhost-300x83.jpg 300w" alt="tcp-wrapper-test-localhost" width="624" height="173" /></a></p>
<p>حال از کلاینت خود و از طریق شبکه اتصال را بررسی میکنم. با توجه به توضیحات بالا و پیکربندی انجام شده کاربر امکان اتصال به سرویس را نخواهد داشت.</p>
<p><a href="http://maaleki.ir/wp-content/uploads/2020/04/tcp-wrapper-test-client.jpg"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-1133" src="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_626,h_67/http://maaleki.ir/wp-content/uploads/2020/04/tcp-wrapper-test-client.jpg" sizes="(max-width: 626px) 100vw, 626px" srcset="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_626/https://maaleki.ir/wp-content/uploads/2020/04/tcp-wrapper-test-client.jpg 626w, https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_300/https://maaleki.ir/wp-content/uploads/2020/04/tcp-wrapper-test-client-300x32.jpg 300w" alt="tcp-wrapper-test-client" width="626" height="67" /></a></p>
<p>توضیح نهایی این که تا این جای کار کاربران local امکان اتصال حواهند داشت، در صورتی  قصد داشته باشیم تا تعداد محدودی از کاربران مجاز به ورود و استفاده از سرویس باشند، می بایست  از userlist  استفاده کنیم و  تنها نام کاربری کاربران مجاز را در آن معرفی نماییم.</p>
<h2>نتیجه گیری:</h2>
<p>همانطور که اشاره شد، پروتکل های مختلفی برای به اشتراک گزاری فایل و انتقال فایل وجود دارد که FTP یکی از قدیمی ترین، ساده ترین آن ها است که گستردگی استفاده زیادی نیز دارد.</p>
<p>در این مستند علاوه بر نصب و پیکربندی اولیه سرویس FTP،  برخی از مواردی که می توانستند به بالا بردن امنیت سرویس کمک کنند نیز مورد بررسی قرار گرفت. در هنگام استفاده از این پروتکل باید تلاش کرد تا امنیت سرویس و کاربران استفاده کننده از آن نیز در نظر گرفته شود. چرا که این سرویس از آن دسته از سرویس هایی است که علاوه بر هدف بودن برای حملات، exploit های بسیاری هم برای حمله به آن و نفوذ به سیستم از طریق این سرویس وجود دارد.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://linux.vcenter.ir/%d9%86%d8%b5%d8%a8-%d9%88-%d8%b1%d8%a7%d9%87-%d8%a7%d9%86%d8%af%d8%a7%d8%b2%db%8c-%d8%b3%d8%b1%d9%88%db%8c%d8%b3-vsftp-%d8%af%d8%b1-centos/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>systemd چیست؟</title>
		<link>https://linux.vcenter.ir/what-is-systemd/</link>
					<comments>https://linux.vcenter.ir/what-is-systemd/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Thu, 03 Sep 2020 21:56:01 +0000</pubDate>
				<category><![CDATA[وبلاگ]]></category>
		<category><![CDATA[daemon]]></category>
		<category><![CDATA[gummiboot]]></category>
		<category><![CDATA[init چیست؟]]></category>
		<category><![CDATA[journald]]></category>
		<category><![CDATA[kernel panic]]></category>
		<category><![CDATA[libudev]]></category>
		<category><![CDATA[logind]]></category>
		<category><![CDATA[networkd]]></category>
		<category><![CDATA[systemd]]></category>
		<category><![CDATA[systemd چیست؟]]></category>
		<category><![CDATA[Systemd-boot]]></category>
		<category><![CDATA[timedated]]></category>
		<category><![CDATA[tmpfiles]]></category>
		<category><![CDATA[udevd]]></category>
		<category><![CDATA[آموزش لینوکس]]></category>
		<category><![CDATA[تفاوت init و Systemd در یک نگاه]]></category>
		<category><![CDATA[توزیع های لینوکس]]></category>
		<category><![CDATA[لینوکس]]></category>
		<category><![CDATA[مقایسه systemd و init]]></category>
		<category><![CDATA[ویژگی های systemd]]></category>
		<guid isPermaLink="false">http://linux.vcenter.ir/?p=103</guid>

					<description><![CDATA[systemd چیست؟ تفاوت میان init و systemd systemd systemd یک System Manager  می باشد که در ابتدای بوت شدن سیستم پردازش آن شروع می شود و به عنوان parent  سایر process ها شناخته می شود و به عنوان جایگزینی برای init معرفی شده است. init چیست؟ init  یا SysVinit در اصل یک daemon process یا [&#8230;]]]></description>
										<content:encoded><![CDATA[<header class="entry-header-outer">
<div class="entry-header">
<h2 class="post-title entry-title">systemd چیست؟</h2>
<h3 class="entry-sub-title">تفاوت میان init و systemd</h3>
<div class="post-meta clearfix">
<div class="tie-alignright"><a href="https://linux.vcenter.ir/wp-content/uploads/2020/09/what-is-systemd-1.jpg"><img loading="lazy" decoding="async" class="alignnone wp-image-112 size-full" src="https://linux.vcenter.ir/wp-content/uploads/2020/09/what-is-systemd-1.jpg" alt="systemd چیست؟" width="686" height="398" srcset="https://linux.vcenter.ir/wp-content/uploads/2020/09/what-is-systemd-1.jpg 686w, https://linux.vcenter.ir/wp-content/uploads/2020/09/what-is-systemd-1-300x174.jpg 300w" sizes="(max-width: 686px) 100vw, 686px" /></a></div>
</div>
</div>
</header>
<div class="featured-area">
<div class="featured-area-inner"></div>
</div>
<div class="entry-content entry clearfix">
<h5>systemd</h5>
<p>systemd یک System Manager  می باشد که در ابتدای بوت شدن سیستم پردازش آن شروع می شود و به عنوان parent  سایر process ها شناخته می شود و به عنوان جایگزینی برای init معرفی شده است.</p>
<h5>init چیست؟</h5>
<p>init  یا SysVinit در اصل یک daemon process یا پکیج مدیریت سرویس است  که به محض روشن شدن <a href="https://computer.vcenter.ir">کامپیوتر</a> تا زمان خاموش شدن آن فعالیت می کند. در واقع init اولین پردازشی است که پس از بوت شدن  سیستم شروع به فعالیت می کند و به عنوان والد (parent) تمام پردازش ها محسوب می شود و همیشه دارای PID برابر با ۱ می باشد.</p>
<p><a href="https://linux.vcenter.ir/wp-content/uploads/2020/09/what-is-systemd-2.png"><img loading="lazy" decoding="async" class="alignnone wp-image-113 size-full" src="https://linux.vcenter.ir/wp-content/uploads/2020/09/what-is-systemd-2.png" alt="systemd چیست؟" width="855" height="406" srcset="https://linux.vcenter.ir/wp-content/uploads/2020/09/what-is-systemd-2.png 855w, https://linux.vcenter.ir/wp-content/uploads/2020/09/what-is-systemd-2-300x142.png 300w, https://linux.vcenter.ir/wp-content/uploads/2020/09/what-is-systemd-2-768x365.png 768w" sizes="(max-width: 855px) 100vw, 855px" /></a></p>
<figure id="attachment_509" class="wp-caption aligncenter" aria-describedby="caption-attachment-509"><figcaption id="caption-attachment-509" class="wp-caption-text"></figcaption></figure>
<p>اگر به هر دلیلی daemon مربوط به init  نتواند شروع به کار کند, هیچ پردازش یا پروسس دیگری نمی تواند شروع به کار نماید. در این صورت سیستم وارد شرایطی شده است که به آن kernel panic می گویند.</p>
<p>با توجه به نیاز های مختلف جایگزین هایی برای هدف  ایجاد شد که برخی از آنها به daemon process  اصلی برخی از توزیع ها در آمد. مانند ‌Upstart  که در Ubuntu پیاده سازی گردید (تا نسخه ۱۶.۰۴)  یا systemd  که در برخی از توزیع ها مانند Fedora, Open SuSE, <a href="https://linux.vcenter.ir">CentOS</a> و … پیاده سازی گردیده اند.</p>
<h5>systemd چیست؟</h5>
<p>systemd همانند init  یک System Manager  یا پکیج مدیریت سرویس  می باشد که در ابتدای بوت شدم سیستم پردازش آن شروع می شود و به عنوان parent  سایر process  ها با PID=1  فعالیت خواهد کرد. systemd برای رفع برخی نواقص init  طراحی و پیاده سازی شده است به عنوان نمونه شروع process  ها به صورت همزمان و موازی در زمان بوت شدن سیستم که علاوه بر کاهش زمان بوت شدن سیستم عامل, استفاده از منابع پردازشی را نیز کاهش می دهد.</p>
<p>به عنوان نمونه init  به صورت سریالی عمل میکند. به این معنی که یک وظیفه تنها در زمانی شروع میشود که وظیفه قبلی با موفقیت انجام شده و در Memory نیز load  شده باشد که در زمان بوت شدن سیستم عامل باعث افزایش زمان بوت شدن می گردید. لازم به ذکراست که systemd  با هدف افزایش سرعت بوت شدن ایجاد نشده است اما برای این که کارها به صورت منظم انجام شود, نیاز بود تا هر گونه delay یا تاخیر غیر ضروری حذف گردد. که اجرای موازی process  ها و رعایت dependency  از مواردی بود که به کاهش این تاخیر ها کمک کردند.</p>
<blockquote><p><em>نمونه ای از رعایت dependency این است که به صورت مثال سرویس هایی که در ابتدای شروع به پردازش نیاز به running بودن سرویس network دارند میتوانند پس از شروع به کار سرویس network به صورت همزمان و موازی شروع به کار نمایند. که این کار در init همانطور که گفته شد به صورت سریالی انجام می پذیرد.</em></p></blockquote>
<p>&nbsp;</p>
<h6>ویژگی های systemd</h6>
<p>برخی از ویژگی هامانند کارآمی بیشتر نسبت به init  و یا ساده تر شدن پروسه بوت و بهبود API  و… باعث شد تا systemd  محبوبیت بیشتری پیدا کند و رفته رفته جای خود را در توزیع های مختلف باز بکند. در زیر شرح کامل ویژگی های systemd  آورده شده است.</p>
<ol>
<li>طراحی بهتر و کارآمد</li>
<li>ساده شدن پروسه بوت شدن</li>
<li>اجرای پروسس ها به صورت همزمان و موازی در هنگام بوت</li>
<li>بهتر شدن API</li>
<li>امکان حذف Component های اختیاری</li>
<li>راه اندازی سرویس ها بر اساس تنظیمات نوشته شده در فایل کانفیگ (راه اندازی سرویس ها در init  به وسیله سلسله دستوراتی از طریق شل اسکریپت انجام میگیرد.)</li>
<li>زمان بندی کارها</li>
<li>لاگ ها توسط  journald ذخیره سازی می شوند.</li>
<li>امکان انتخاب systemd برای ثبت وقایع سیستمی همانند sysog</li>
<li>ذخیره سازی لاگ ها به صورت باینری</li>
<li>کنترل ورود و خروج کاربران به وسیله systemd-logind</li>
</ol>
<p>نطقه ضعف systemd عدم تطابق با <a href="https://en.wikipedia.org/wiki/POSIX"> POSIX</a> است.</p>
<h4>systemd در برخی از توزیع های لینوکس:</h4>
<div class="table-is-responsive">
<table border="0" cellspacing="0">
<tbody>
<tr>
<td align="CENTER" height="19"><b>نام توزیع</b></td>
<td align="CENTER"><b>وضعیت استفاده </b></td>
</tr>
<tr class="alt">
<td align="LEFT" height="19">Fedora</td>
<td align="LEFT">از سال ۲۰۱۱ (اولین توزیعی که از systemd به صورت پیش فرض استفاده نمود)</td>
</tr>
<tr>
<td align="LEFT" height="16">Arch</td>
<td align="LEFT">از سال ۲۰۱۲</td>
</tr>
<tr class="alt">
<td align="LEFT" height="19">RedHat</td>
<td align="LEFT">از سال ۲۰۱۴ و نسخه ۷</td>
</tr>
<tr>
<td align="LEFT" height="19">CentOS</td>
<td align="LEFT">از سال ۲۰۱۴ و نسخه ۷</td>
</tr>
<tr class="alt">
<td align="LEFT" height="19">Debian</td>
<td align="LEFT">از سال ۲۰۱۵ و نسخه ۸ (Jessie)</td>
</tr>
<tr>
<td align="LEFT" height="19">Gentoo</td>
<td align="LEFT">به صورت پیش فرض استفاده نمی شود و  نیاز به دانلود, نصب و پیکربندی دارد.</td>
</tr>
<tr class="alt">
<td align="LEFT" height="19">OpenSUSE</td>
<td align="LEFT">از سال ۲۰۱۴ و نسخه ۱۲</td>
</tr>
<tr>
<td align="LEFT" height="19">Slack</td>
<td align="LEFT">در حال حاضر خیر</td>
</tr>
<tr class="alt">
<td align="LEFT" height="16">Ubuntu</td>
<td align="LEFT">از سال آپریل سال ۲۰۱۵ و نسخه ۱۵.۰۴</td>
</tr>
</tbody>
</table>
</div>
<h5>مقایسه systemd و init</h5>
<div class="table-is-responsive">
<table border="0" cellspacing="0">
<tbody>
<tr>
<td align="CENTER" height="21"><b>Features</b></td>
<td align="CENTER"><b>init</b></td>
<td align="CENTER"><b>systemd</b></td>
</tr>
<tr class="alt">
<td align="LEFT" height="21">DBus Dependency – Mandatory</td>
<td align="LEFT">No</td>
<td align="LEFT">Yes</td>
</tr>
<tr>
<td align="LEFT" height="19">Device based Activation</td>
<td align="LEFT">No</td>
<td align="LEFT">Yes</td>
</tr>
<tr class="alt">
<td align="LEFT" height="21">Device dependency configuration with udev</td>
<td align="LEFT">No</td>
<td align="LEFT">Yes</td>
</tr>
<tr>
<td align="LEFT" height="21">Timer based Activation</td>
<td align="LEFT">Cron/at</td>
<td align="LEFT">Proprietary</td>
</tr>
<tr class="alt">
<td align="LEFT" height="19">Quota Management</td>
<td align="LEFT">No</td>
<td align="LEFT">Yes</td>
</tr>
<tr>
<td align="LEFT" height="19">Automatic Service Dependency Handling</td>
<td align="LEFT">No</td>
<td align="LEFT">Yes</td>
</tr>
<tr class="alt">
<td align="LEFT" height="19">Kills users Process at logout</td>
<td align="LEFT">No</td>
<td align="LEFT">Yes</td>
</tr>
<tr>
<td align="LEFT" height="19">Swap Management</td>
<td align="LEFT">No</td>
<td align="LEFT">Yes</td>
</tr>
<tr class="alt">
<td align="LEFT" height="21">SELinux integration</td>
<td align="LEFT">No</td>
<td align="LEFT">Yes</td>
</tr>
<tr>
<td align="LEFT" height="19">Support for Encrypted HDD</td>
<td align="LEFT">No</td>
<td align="LEFT">Yes</td>
</tr>
<tr class="alt">
<td align="LEFT" height="21">Static kernle module loading</td>
<td align="LEFT">No</td>
<td align="LEFT">Yes</td>
</tr>
<tr>
<td align="LEFT" height="19">GUI</td>
<td align="LEFT">No</td>
<td align="LEFT">Yes</td>
</tr>
<tr class="alt">
<td align="LEFT" height="19">List all the child processes</td>
<td align="LEFT">No</td>
<td align="LEFT">Yes</td>
</tr>
<tr>
<td align="LEFT" height="21">Sysv compatible</td>
<td align="LEFT">Yes</td>
<td align="LEFT">Yes</td>
</tr>
<tr class="alt">
<td align="LEFT" height="19">Interactive booting</td>
<td align="LEFT">No</td>
<td align="LEFT">Yes</td>
</tr>
<tr>
<td align="LEFT" height="19">Portable to non x86</td>
<td align="LEFT">Yes</td>
<td align="LEFT">No</td>
</tr>
<tr class="alt">
<td align="LEFT" height="21">Adopted on</td>
<td align="LEFT">Several Distro</td>
<td align="LEFT">Several Distro</td>
</tr>
<tr>
<td align="LEFT" height="19">Parallel service startup</td>
<td align="LEFT">No</td>
<td align="LEFT">Yes</td>
</tr>
<tr class="alt">
<td align="LEFT" height="19">Resource limit per service</td>
<td align="LEFT">No</td>
<td align="LEFT">Yes</td>
</tr>
<tr>
<td align="LEFT" height="19">Easy extensible startup script</td>
<td align="LEFT">Yes</td>
<td align="LEFT">No</td>
</tr>
<tr class="alt">
<td align="LEFT" height="19">Separate Code and Configuration File</td>
<td align="LEFT">Yes</td>
<td align="LEFT">No</td>
</tr>
<tr>
<td align="LEFT" height="19">Automatic dependency calculation</td>
<td align="LEFT">No</td>
<td align="LEFT">Yes</td>
</tr>
<tr class="alt">
<td align="LEFT" height="19">Verbose debug</td>
<td align="LEFT">Yes</td>
<td align="LEFT">No</td>
</tr>
<tr>
<td align="LEFT" height="19">Version</td>
<td align="LEFT">N/A</td>
<td align="LEFT">V44+</td>
</tr>
<tr class="alt">
<td align="LEFT" height="19">Size</td>
<td align="LEFT">560 KB</td>
<td align="LEFT">N/A</td>
</tr>
<tr>
<td align="LEFT" height="21">Number of Files</td>
<td align="LEFT">75 files</td>
<td align="LEFT">900 files + glib + DBus</td>
</tr>
<tr class="alt">
<td align="LEFT" height="21">Lines of code – LOC</td>
<td align="LEFT">15000 (Approx)</td>
<td align="LEFT">224000 (Approx) (inc Codes, comments and white space) 125000 (Approx) (acctual code)</td>
</tr>
</tbody>
</table>
</div>
<p>Systemd برای فعالیت از مجموعه ای از پکیج ها استفاده می کند برخی از این پکیج ها و وظایف آنها به شرح زیر است.</p>
<h6><span class="monospaced"><span id="journald">journald</span></span></h6>
<p>daemon است که وظیفه جمع آوری لاگ اتفاقات سیستمی و ذخیره سازی آنها به صورت باینری را بر عهده دارد. البته ادمین سیستم این امکان را دارد که مشخص کند لاگ ها توسط این daemon انجام شود یا توسط syslog-ng یا rsyslog</p>
<h6><span class="monospaced"><span id="logind">logind</span></span></h6>
<p>وظیفه مدیریت ورود و  خروج واتصالات کاربران را بر عهده دارد و امکان multi session  را برای کاربران را فراهم می آورد و در واقع جایگزینی است برای Consolekit که توسعه آن متوقف شده است.</p>
<h6><span class="monospaced"><span id="networkd">networkd<br />
</span></span></h6>
<p>وظیفه handle  کردن پیکربندی <a href="http://shop.vcenter.ir/product-category/servers/server-nic/">کارت های شبکه</a> را بر عهده دارد.در اوایل این daemon  تنها می توانست به صورت استاتیک به کارت های شبکه IP دهد و برخی از پیکربندی های اولیه ‌Bridging  را انجام دهد که از سال ۲۰۱۴ امکان DHCP سرور برای IPv4 و پشتیبانی از <a href="https://en.wikipedia.org/wiki/Virtual_Extensible_LAN">VXLAN</a> به آن اضافه شده است.</p>
<h6><span class="monospaced"><span id="tmpfiles">tmpfiles</span></span></h6>
<p>ابزاری است که وظیفه ایجاد و حذف فایل ها و دایرکتوری های موقت (Temp) را بر عهده دارد و به صورت معمول در شروع به کار سیستم عامل فعال شده و در بازه های مشخص شده نیز عمل می کند.</p>
<h6><span class="monospaced"><span id="timedated">timedated</span></span></h6>
<p>وظیفه کنترل تنظیمات مربوط به زمان را بر عهده دارد. تنظیماتی مانند زمان سیستم, time zone و انتخاب زمان به UTC و زمان محلی (Local Time Zone) را بر عهده این daemon  است.</p>
<h6><span class="monospaced"><span id="udevd">udevd</span></span></h6>
<p>udev  نقش یک device manager  را برای کرنل ایفا میکند و وظیفه آن handle کردن دایرکتوری /dev و تمام فعالیت های مرتبط با<a href="https://en.wikipedia.org/wiki/User_space"> user space </a>را در هنگام حذف یا اضافه device  جدید را بر عهده دارد.</p>
<h6>libudev</h6>
<p>یک استاندارد library برای استفاده از udev است که به برنامه های third-party اجازه میدهد تا منابع udev را query  کنند.</p>
<h6><strong>Systemd-boot</strong></h6>
<p>boot Manager است که در systemd تعبیه شده است که سابقا با نام gummiboot شناخته می شده است.</p>
<h6>تفاوت init و Systemd در یک نگاه</h6>
<p><a href="https://linux.vcenter.ir/wp-content/uploads/2020/09/what-is-systemd-3.jpg"><img loading="lazy" decoding="async" class="alignnone wp-image-114 size-full" src="https://linux.vcenter.ir/wp-content/uploads/2020/09/what-is-systemd-3.jpg" alt="systemd چیست؟" width="1275" height="2309" srcset="https://linux.vcenter.ir/wp-content/uploads/2020/09/what-is-systemd-3.jpg 1275w, https://linux.vcenter.ir/wp-content/uploads/2020/09/what-is-systemd-3-166x300.jpg 166w, https://linux.vcenter.ir/wp-content/uploads/2020/09/what-is-systemd-3-565x1024.jpg 565w, https://linux.vcenter.ir/wp-content/uploads/2020/09/what-is-systemd-3-768x1391.jpg 768w, https://linux.vcenter.ir/wp-content/uploads/2020/09/what-is-systemd-3-848x1536.jpg 848w, https://linux.vcenter.ir/wp-content/uploads/2020/09/what-is-systemd-3-1131x2048.jpg 1131w, https://linux.vcenter.ir/wp-content/uploads/2020/09/what-is-systemd-3-1144x2072.jpg 1144w" sizes="(max-width: 1275px) 100vw, 1275px" /></a></p>
<p>برای آشنایی با نحوه ایجاد سرویس در systemd میتوانید با ما در این وبسایت همراه باشید.</p>
<p>&nbsp;</p>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://linux.vcenter.ir/what-is-systemd/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>نصب و راه اندازی NFS Server در CentOS</title>
		<link>https://linux.vcenter.ir/%d9%86%d8%b5%d8%a8-%d9%88-%d8%b1%d8%a7%d9%87-%d8%a7%d9%86%d8%af%d8%a7%d8%b2%db%8c-nfs-server-%d8%af%d8%b1-centos/</link>
					<comments>https://linux.vcenter.ir/%d9%86%d8%b5%d8%a8-%d9%88-%d8%b1%d8%a7%d9%87-%d8%a7%d9%86%d8%af%d8%a7%d8%b2%db%8c-nfs-server-%d8%af%d8%b1-centos/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Thu, 03 Sep 2020 21:55:04 +0000</pubDate>
				<category><![CDATA[وبلاگ]]></category>
		<guid isPermaLink="false">http://linux.vcenter.ir/?p=101</guid>

					<description><![CDATA[نصب و راه اندازی NFS Server در CentOS قدم به قدم با نصب NFS Server در CentOS NFS چیست: NFS مخفف کلمات Network File System  و معرفی پروتکلی برای به اشتراک گزاری دایرکتوری بین سرور های لینوکسی است. از طریق این پروتکل میتوان یک دایرکتوری را در بستر شبکه با سرور یا کلاینتی دیگر به اشتراک [&#8230;]]]></description>
										<content:encoded><![CDATA[<header class="entry-header-outer">
<div class="entry-header">
<h1 class="post-title entry-title">نصب و راه اندازی NFS Server در CentOS</h1>
<h2 class="entry-sub-title">قدم به قدم با نصب NFS Server در CentOS</h2>
</div>
</header>
<div class="featured-area">
<div class="featured-area-inner">
<figure class="single-featured-image"><img loading="lazy" decoding="async" class="attachment-jannah-image-post size-jannah-image-post wp-post-image" src="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_780,h_470/https://maaleki.ir/wp-content/uploads/2020/03/NFS-780x470.png" alt="NFS" width="780" height="470" /></figure>
</div>
</div>
<div class="entry-content entry clearfix">
<h1><strong>NFS</strong><strong> چیست:</strong></h1>
<p>NFS مخفف کلمات Network File System  و معرفی پروتکلی برای به اشتراک گزاری دایرکتوری بین سرور های لینوکسی است. از طریق این پروتکل میتوان یک دایرکتوری را در بستر شبکه با سرور یا کلاینتی دیگر به اشتراک گذاشت به شکلی که گویی از دیسک لوکال خود در حال استفاده است. از این پروتکل تاکنون چهار نسخته ارائه شده است که آخرین آن NFSv4 می باشد. خصوصیات و معرفی ورژن های مختلف این پروتکل رو میتوانید از <a href="https://en.wikipedia.org/wiki/Network_File_System">اینجا</a> مطالعه کنید.</p>
<p>این سرویس به صورت سرور / کلانت فعالیت می کند و از طریق آن میتواند Storage مرکزی ای ایجاد کرد. همچنین میتوان آن را از طریق acl در ورژن جدید آن نیز ایمن تر کرد.</p>
<p>&nbsp;</p>
<h1><strong>راه اندازی </strong><strong>NFS server</strong><strong>:</strong></h1>
<p>در این مستند راه اندازی سرویس NFS روی centos 7  و با هدف اشتراک گزاری یک دایرکتوری بین دو سرور با قابلیت read/write  همزمان بر روی آنها توضیح داده خواهد شد</p>
<p>در این آموزش از دو سیستم در محیطی تستی و با مشخصات زیر استفاده شده است.</p>
<pre class="line-numbers language-bash code-toolbar"><code class=" language-bash">Server1:

CentOS Linux release 7.4.1708 (Core)

IP: 192.168.200.200

Server2:

CentOS Linux release 7.4.1708 (Core)

IP: 192.168.200.201</code></pre>
<div class="toolbar">
<div class="toolbar-item"><a>Copy</a></div>
</div>
<p>ماشین Server1 در این مستند به عنوان NFS Server  و server  دوم به عنوان NFS Client  فعالیت خواهند کرد.</p>
<p>برای نصب NFS در هر دو ماشین از دستور زیر استفاده میکنیم تا پکیج مربوطه به همراه Dependency  های آن نصب گردد.</p>
<pre class="line-numbers language-bash code-toolbar"><code class=" language-bash">Server1~]#  yum –y install nfs-utils</code></pre>
<div class="toolbar">
<div class="toolbar-item"><a>Copy</a></div>
</div>
<p>بعد از نصب،  در سرور اول،  دایرکتوری ای که قصد Share کردن آن را داریم را ایجاد میکنیم  و owner  دایرکتوری را به همراه پرمیژن ها آن مشخص میکنیم .</p>
<pre class="line-numbers language-bash code-toolbar"><code class=" language-bash">Server1~]#  mkdir -p /share/nfs

Server1~]#  chmod –R 755 /share/nfs

Server1~]#  chown nfsnobody:nfsnobody /share/nfs</code></pre>
<div class="toolbar">
<div class="toolbar-item"><a>Copy</a></div>
</div>
<p><a href="http://maaleki.ir/wp-content/uploads/2020/03/permissions.jpg"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-719" src="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_615,h_136/http://maaleki.ir/wp-content/uploads/2020/03/permissions.jpg" sizes="(max-width: 615px) 100vw, 615px" srcset="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_615/https://maaleki.ir/wp-content/uploads/2020/03/permissions.jpg 615w, https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_300/https://maaleki.ir/wp-content/uploads/2020/03/permissions-300x66.jpg 300w" alt="file creation and permissions" width="615" height="136" /></a></p>
<p>سپس سرویس های مربوطه  را از طریق دستور زیر فعال می کنیم تا در هر بار  بوت شدن سیستم عامل، سرویس به صورت اتوماتیک شروع به کار نماید.</p>
<pre class="line-numbers language-bash code-toolbar"><code class=" language-bash">Server1~]#  systemctl enable rpcbind

Server1~]#  systemctl enable nfs-server

Server1~]# systemctl enable nfs-lock

Server1~]# systemctl enable nfs-idmap</code></pre>
<div class="toolbar">
<div class="toolbar-item"><a>Copy</a></div>
</div>
<p>یا به صورت کلی در یک دستور به صورت زیر</p>
<pre class="line-numbers language-bash code-toolbar"><code class=" language-bash">Server1~]# systemctl enable rpcbind nfs-server nfs-lock nfs-idmap</code></pre>
<div class="toolbar">
<div class="toolbar-item"><a>Copy</a></div>
</div>
<p>حال سرویس های مربوطه را به صورت زیر start  میکنیم.</p>
<pre class="line-numbers language-bash code-toolbar"><code class=" language-bash">Server1~]#  systemctl enable rpcbind

Server1~]#  systemctl enable nfs-server

Server1~]# systemctl enable nfs-lock

Server1~]# systemctl enable nfs-idmap</code></pre>
<div class="toolbar">
<div class="toolbar-item"><a>Copy</a></div>
</div>
<p>یا مانند بالا به صورت کلی و با یک دستور:</p>
<pre class="line-numbers language-bash code-toolbar"><code class=" language-bash">Server1~]# systemctl start  rpcbind  nfs-server nfs-lock nfs-idmap</code></pre>
<div class="toolbar">
<div class="toolbar-item"><a>Copy</a></div>
</div>
<h2><a name="_Toc29055619"></a><strong>معرفی سرویس ها:</strong></h2>
<p>&nbsp;</p>
<ul>
<li><strong>rpcbind:</strong>وظیفه mapping سرویس  را به پورت آن بر عهده دارد. سرویس RPC به هر برنامه یک آیدی اختصاص میدهد  که به آن program ID گفته می شود این اطلاعات در فایل /etc/rpc نگه داری میشود. این سرویس مشخص می کند که هر program id از چه پورتی برای برقراری ارتباط میتواند استفاده کند. هنگامی که کلاینتی درخواستی مبنی بر اتصال ایجاد می نماید، این سرویس پورت مربوطه را مشخص کرده، سپس کاربر را به سمت آن هدایت میکند در نتیجه امکان ارتباط و communicate بین سرویس و کلاینت مستلزم فعال بودن این سرویس می باشد که می بایست قبل از باقی سرویس ها شروع به کار نماید.</li>
</ul>
<p>همانطور که در شکل زیر مشاهده می کنیم، به سرویس NFS آیدی ای برابر با 100003 اختصاص داده شده است.</p>
<p><a href="http://maaleki.ir/wp-content/uploads/2020/03/services.jpg"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-720" src="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_605,h_92/http://maaleki.ir/wp-content/uploads/2020/03/services.jpg" sizes="(max-width: 605px) 100vw, 605px" srcset="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_605/https://maaleki.ir/wp-content/uploads/2020/03/services.jpg 605w, https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_300/https://maaleki.ir/wp-content/uploads/2020/03/services-300x46.jpg 300w" alt="rpcbind" width="605" height="92" /></a></p>
<p>حال با دستور rpcinfo –p میتوانیم ببینیم که این program id به چه پورتی map شده است.</p>
<p><a href="http://maaleki.ir/wp-content/uploads/2020/03/rpcinfo.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-721" src="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_597,h_100/http://maaleki.ir/wp-content/uploads/2020/03/rpcinfo.png" sizes="(max-width: 597px) 100vw, 597px" srcset="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_597/https://maaleki.ir/wp-content/uploads/2020/03/rpcinfo.png 597w, https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_300/https://maaleki.ir/wp-content/uploads/2020/03/rpcinfo-300x50.png 300w" alt="rpcinfo" width="597" height="100" /></a></p>
<p>همانطور که در شکل بالا مشخص است، nfs در ورژه های 3 و 4  بر روی پورت 2049 udp و tcp فعالیت میکند.</p>
<ul>
<li><strong>nfs-idmap: </strong>وظیفه mapping بین username و Group  به  UID و GID را بر عهده دارد.</li>
<li><strong>nfs-lock</strong><strong>:</strong> عملیات locking بر روی فایل های NFS را بر عهده دارد. در صورتی که کلانتی درخواست locking  برای فایلی را به سرور ارسال نماید، این سرویس وظیفه مدیریت این در خواست را بر عهده دارد. به عنوان مثال در صورت درخواست کلاینت به صورت پیشفرض به مدت 15 ثانیه بر روی فایل عملیات locking  را انجام میدهد.</li>
</ul>
<p>بعد از شروع به کار سرویس ها،  دایکتوری ای را که ایجاد کرده ایم را به صورت زیر در فایل /etc/export معرفی میکنیم.</p>
<pre class="line-numbers language-bash code-toolbar"><code class=" language-bash">/share/nfs      192.168.200.201(rw,sync,no_root_squash,no_all_squash)</code></pre>
<div class="toolbar">
<div class="toolbar-item"><a>Copy</a></div>
</div>
<p><a href="http://maaleki.ir/wp-content/uploads/2020/03/exports.jpg"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-722" src="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_625,h_39/http://maaleki.ir/wp-content/uploads/2020/03/exports.jpg" sizes="(max-width: 625px) 100vw, 625px" srcset="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_625/https://maaleki.ir/wp-content/uploads/2020/03/exports.jpg 625w, https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_300/https://maaleki.ir/wp-content/uploads/2020/03/exports-300x19.jpg 300w" alt="exports" width="625" height="39" /></a></p>
<h2><strong>پارامتر های پیکربندی:</strong></h2>
<p>برخی از پارامتر های مورد استفاده در فایل /etc/export به شرح زیر است:</p>
<ul>
<li><strong>rw</strong>: مجوز هر دو عملیات خواندن و نوشتن بر روی فایل سیستم را فراهم میکند.به صورت پیشفرض هر عملیاتی که منجر به تغییر بر روی فایل سیستم شود، نادیده گرفته میشود، همانند رفتاری که در تنظیم ro در پیش گرفته میشود.</li>
<li><strong>async</strong>: این گزینه این امکان را فراهم میکند تا به درخواست های تغییر بر روی دیسک قبل از این که واقعا تغییری اعمال شود، پاسخ داده شود. در واقع به کلاینت گفته می شود تغییرات مورد نظر بر روی دیسک اعمال شده است ولی در عمل اینطور نیست. این گزینه میتواند کارایی سیستم را بهبود ببخشد اما در کنار این بهبود ریسک از دست رفتن اطلاعات در صورت ری استارت شدن ناگهانی سرور یا به اصطلاح unclean restart ( مانند شرایط کرش کردن کرنل و قطع برق سرور و …) نیز وجود دارد.</li>
</ul>
<ul>
<li><strong>sync</strong>: درخواست تغییر روی دیسک تنها و تنها زمانی به کلاینت ارسال می شود که تغییرات بر روی دیسک اعمال یا commit  شده باشد. از ورژن ۱ به بعد این گزینه به عنوان تنظیمات پیش فرض مورد استفاده قرار میگیرد.</li>
<li><strong>wdelay: </strong> در صورتی که سرور تشخیص دهد ممکن است عملیات نوشتن دیگری مرتبط با عملیات فعلی بر روی دیسک انجام شود، عملیات نوشتن بر روی دیسک را با تاخیر انجام خواهد داد. این کار باعث میشود تا در یک عملیات نوشتن چندین درخواست را در دیسک نوشت. در نتیجه تعداد دفعات رجوع به دیسک جهت نوشتن داده بر روی آن کمتر میشود که در نتیجه آن کارایی سرور نیز بهبود می یابد. اما در مواقعی که درخواست های زیاد و نامرتبطی به سرور ارسال شود فعال بودن این گزینه عملا میتواند باعث کاهش کارایی و عملکرد سرور شود. این گزینه از تنظیمات پیش فرض است که جهت غیر فعال سازی آن میتوان از no_wdelay استفاده کرد.</li>
<li><strong>root_squash</strong><strong>: </strong>در صورتی که کاربر root قصد دسترسی به فایلی را در nfs ‌ سرور داشته باشد. رفتار سرور با این کاربر هماهنند کاربر root در سرور اصلی خواهد بود. با فعال بودن این گزینه. uid کاربر root در سرور به  uid دیگری که متعلق به کاربر nobody است map میشود. در نتیجه سطح دسترسی کاربر در سرور به حداقل دسترسی ممکن کاهش می باید. برای غیر فعال سازی این گزینه از گزینه no_root_squash استفاده میشود.</li>
<li><strong>all_squash</strong> : عملکردی همانند عملکرد  root_squash‌دارد با این تفاوت که این عملکرد برروی تمامی کاربرای تاثیر گزار خواهد بود. غیر فعال سازی عملکرد این گزینه با no_all_squash امکان پذیر است. فعال کردن این گزینه برای فایل سیستم هایی که در دسترس عموم قرار میگیرند مناسب است.</li>
<li><strong>anonuid and anongid</strong>: با استفاده از این دو گزینه میتوان درخواست های یک فایل سیستم یا دایرکتوری را که از سمت کاربر anonymous  وارد می شود را به یک uid و  gid به خصوص map کرد. به عنوان مثال تصور کنید نام کاریری ای به نام javad با uid ‌ برابر با ۵۰۵  داریم. با انتخاب گزینه anouid=505 تمامی درخواست ها بر روی فایل ها با uid  کاربر javad ثبت و انجام می شوند.</li>
</ul>
<p>لازم به ذکر است در صورتی که بخواهیم اشتراک گزاری را به آدرس خاصی محدود نکنیم میتوانیم جای آدرس IP از “*” استفاده کنیم.</p>
<p>در نهایت تنظیمات مربوط به فایروال را برای باز کردن NFS و سرویس ها مورد استفاده آن را به صورت زیر انجام میدهیم.</p>
<pre class="line-numbers language-bash code-toolbar"><code class=" language-bash">firewall-cmd --permanent --zone=public --add-service=nfs

firewall-cmd --permanent --zone=public --add-service=mountd

firewall-cmd --permanent --zone=public --add-service=rpc-bind

firewall-cmd –reload</code></pre>
<div class="toolbar">
<div class="toolbar-item"><a>Copy</a></div>
</div>
<h2><strong>تنظیمات سمت کلایت ( </strong><strong>Server2</strong><strong>)</strong></h2>
<p>پس از نصب پکیج nfs-utils  بر روی سرور دوم، می بایست دایرکتوری را که قصد داریم جهت sharing  از آن استفاده کنیم را ایجاد کرده، سپس مسیر share  شده در سرور اول را با تایپ NFS   به آن  mount کنیم.</p>
<pre class="line-numbers language-bash code-toolbar"><code class=" language-bash">Server2~]#  mkdir /share

mount -t nfs 192.168.200.200:share/nfs /share</code></pre>
<div class="toolbar">
<div class="toolbar-item"><a>Copy</a></div>
</div>
<p>برای این که عملیات mount  کردن به صورت اتوماتیک در هر بار بوت شدن سیستم عامل انجام شود، خط زیر را در فایل /etc/fstab اضافه میکنیم.</p>
<pre class="line-numbers language-bash code-toolbar"><code class=" language-bash">192.168.200.200:share/nfs           /share   nfs defaults 0 0</code></pre>
<div class="toolbar">
<div class="toolbar-item"><a>Copy</a></div>
</div>
<p><a href="http://maaleki.ir/wp-content/uploads/2020/03/fstab.jpg"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-723" src="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_615,h_162/http://maaleki.ir/wp-content/uploads/2020/03/fstab.jpg" sizes="(max-width: 615px) 100vw, 615px" srcset="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_615/https://maaleki.ir/wp-content/uploads/2020/03/fstab.jpg 615w, https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_300/https://maaleki.ir/wp-content/uploads/2020/03/fstab-300x79.jpg 300w" alt="fstab" width="615" height="162" /></a></p>
<p>و با دستور mount –a  سیستم را force میکنیم تا بر اساس فایل fstab  عملیات mount  کردن را مجددا انجام دهد.</p>
<p>حال با دستور df  یا mount  میتوان مطمئن شد که عملیات طبق انتظار انجام شده باشد.</p>
<p><a href="http://maaleki.ir/wp-content/uploads/2020/03/df-output.jpg"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-724" src="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_619,h_127/http://maaleki.ir/wp-content/uploads/2020/03/df-output.jpg" sizes="(max-width: 619px) 100vw, 619px" srcset="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_619/https://maaleki.ir/wp-content/uploads/2020/03/df-output.jpg 619w, https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_300/https://maaleki.ir/wp-content/uploads/2020/03/df-output-300x62.jpg 300w" alt="df output" width="619" height="127" /></a></p>
<p><a href="http://maaleki.ir/wp-content/uploads/2020/03/mount-output.jpg"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-725" src="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_617,h_64/http://maaleki.ir/wp-content/uploads/2020/03/mount-output.jpg" sizes="(max-width: 617px) 100vw, 617px" srcset="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_617/https://maaleki.ir/wp-content/uploads/2020/03/mount-output.jpg 617w, https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_300/https://maaleki.ir/wp-content/uploads/2020/03/mount-output-300x31.jpg 300w" alt="mount output" width="617" height="64" /></a></p>
<p>در نهایت با mount شدن دایرکتوری nfs به دایرکتوری  share در سرور دوم،  جهت تست نیز فایلی در مسیر /share  ایجاد مینماییم.</p>
<p><a href="http://maaleki.ir/wp-content/uploads/2020/03/create-shared-directory.jpg"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-726" src="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_619,h_170/http://maaleki.ir/wp-content/uploads/2020/03/create-shared-directory.jpg" sizes="(max-width: 619px) 100vw, 619px" srcset="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_619/https://maaleki.ir/wp-content/uploads/2020/03/create-shared-directory.jpg 619w, https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_300/https://maaleki.ir/wp-content/uploads/2020/03/create-shared-directory-300x82.jpg 300w" alt="create shared directory" width="619" height="170" /></a></p>
<p>همانطور که مشاهده میشود، به علت استفاده از no_root_squash فایل ایجاد شده با ownership کاربر root ایجاد شده است.</p>
<h1><strong>تست عملکرد:</strong></h1>
<p>حال جهت تستی دیگر این گزینه را به root_squash تغییر می دهیم و مجددا فایلی را ایجاد می نمائیم.</p>
<p><a href="http://maaleki.ir/wp-content/uploads/2020/03/create-shared-directory-root-squash.jpg"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-727" src="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_621,h_163/http://maaleki.ir/wp-content/uploads/2020/03/create-shared-directory-root-squash.jpg" sizes="(max-width: 621px) 100vw, 621px" srcset="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_621/https://maaleki.ir/wp-content/uploads/2020/03/create-shared-directory-root-squash.jpg 621w, https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_300/https://maaleki.ir/wp-content/uploads/2020/03/create-shared-directory-root-squash-300x79.jpg 300w" alt="create shared directory root squash" width="621" height="163" /></a></p>
<p>طبق توضیحات بالا همانطور که انتظار میرفت فایل جدید با ownership  کاربر nobody  ایجاد گردید.</p>
<p>به عنوان آخرین تست نیز میخواهیم تمامی فایل های ایجاد شده در مسیر /share با ownership کاربر hamed و گروه  nfsnobody ایجاد گردند. برای این کار فایل exports را به شکل زیر تغییر میدهیم.</p>
<p><a href="http://maaleki.ir/wp-content/uploads/2020/03/nfs-usr_id.jpg"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-728" src="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_601,h_25/http://maaleki.ir/wp-content/uploads/2020/03/nfs-usr_id.jpg" sizes="(max-width: 601px) 100vw, 601px" srcset="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_601/https://maaleki.ir/wp-content/uploads/2020/03/nfs-usr_id.jpg 601w, https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_300/https://maaleki.ir/wp-content/uploads/2020/03/nfs-usr_id-300x12.jpg 300w" alt="nfs usr_id" width="601" height="25" /></a></p>
<p>در server1 کاربر hamed دارای uid  برابر با 1002  می باشد.</p>
<p><a href="http://maaleki.ir/wp-content/uploads/2020/03/anouid.jpg"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-729" src="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_607,h_76/http://maaleki.ir/wp-content/uploads/2020/03/anouid.jpg" sizes="(max-width: 607px) 100vw, 607px" srcset="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_607/https://maaleki.ir/wp-content/uploads/2020/03/anouid.jpg 607w, https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_300/https://maaleki.ir/wp-content/uploads/2020/03/anouid-300x38.jpg 300w" alt="anouid" width="607" height="76" /></a></p>
<p>از آنجا که کاربری به نام hamed در سرور دوم وجود ندارد، در نتیجه امکان map کردن این uid  به نام کاربری برای سرور دوم مقدور نمی باشد و صرفا uid را نمایش میدهد. در صورتی که در server1  این نام کاربری وجود دارد لذا وضعیت فایل در سرور اول به صورت زیر می باشد.</p>
<p><a href="http://maaleki.ir/wp-content/uploads/2020/03/ls-output.jpg"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-730" src="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_603,h_55/http://maaleki.ir/wp-content/uploads/2020/03/ls-output.jpg" sizes="(max-width: 603px) 100vw, 603px" srcset="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_603/https://maaleki.ir/wp-content/uploads/2020/03/ls-output.jpg 603w, https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_300/https://maaleki.ir/wp-content/uploads/2020/03/ls-output-300x27.jpg 300w" alt="ls output" width="603" height="55" /></a></p>
<h1><strong>نتیجه گیری:</strong></h1>
<p>در این مستند نحوه پیکربندی و پیاده سازی سرویس NFS مورد بررسی قرار گرفت. این سرویس از آن نظر که محدودیتی در توزیع سیستم عامل های لینوکسی در آن وجود ندارد میتواند  در شبکه به عنوان Central Storage  مورد استفاده و بهره برداری قرار گیرد.</p>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://linux.vcenter.ir/%d9%86%d8%b5%d8%a8-%d9%88-%d8%b1%d8%a7%d9%87-%d8%a7%d9%86%d8%af%d8%a7%d8%b2%db%8c-nfs-server-%d8%af%d8%b1-centos/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>آموزش استفاده از CD/DVD به عنوان Repository در لینوکس</title>
		<link>https://linux.vcenter.ir/%d8%a2%d9%85%d9%88%d8%b2%d8%b4-%d8%a7%d8%b3%d8%aa%d9%81%d8%a7%d8%af%d9%87-%d8%a7%d8%b2-cd-dvd-%d8%a8%d9%87-%d8%b9%d9%86%d9%88%d8%a7%d9%86-repository-%d8%af%d8%b1-%d9%84%db%8c%d9%86%d9%88%da%a9%d8%b3/</link>
					<comments>https://linux.vcenter.ir/%d8%a2%d9%85%d9%88%d8%b2%d8%b4-%d8%a7%d8%b3%d8%aa%d9%81%d8%a7%d8%af%d9%87-%d8%a7%d8%b2-cd-dvd-%d8%a8%d9%87-%d8%b9%d9%86%d9%88%d8%a7%d9%86-repository-%d8%af%d8%b1-%d9%84%db%8c%d9%86%d9%88%da%a9%d8%b3/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Thu, 03 Sep 2020 21:51:26 +0000</pubDate>
				<category><![CDATA[وبلاگ]]></category>
		<guid isPermaLink="false">http://linux.vcenter.ir/?p=99</guid>

					<description><![CDATA[آموزش استفاده از CD/DVD به عنوان Repository  حامد17 جولای 2017 ۰۵۷۸ خواندن این مطلب 1 دقیقه زمان میبرد فیس بوکتوییترلینکدین‫تامبلر‫پین‌ترست‫رددیت استفاده از DVD  به عنوان Local Repository &#160; نصب package  ها بر روی سرور هایی که فاقد اینترنت هستند و به Repository  های پیش فرض متصل نمی شوند و یا پکیج های خاص و یا حجم [&#8230;]]]></description>
										<content:encoded><![CDATA[<header class="entry-header-outer">
<div class="entry-header">
<h1 class="post-title entry-title">آموزش استفاده از CD/DVD به عنوان Repository</h1>
<div class="post-meta clearfix"><span class="single-author with-avatars"><span class="meta-item meta-author-wrapper"><span class="meta-author-avatar"><a href="https://maaleki.ir/author/hamed/"><img loading="lazy" decoding="async" class="avatar avatar-140 photo" src="https://secure.gravatar.com/avatar/1108ae2f3dd05a1b7e0a382671782c74?s=140&amp;d=mm&amp;r=g" srcset="https://secure.gravatar.com/avatar/1108ae2f3dd05a1b7e0a382671782c74?s=280&amp;d=mm&amp;r=g 2x" alt="Photo of حامد" width="140" height="140" /></a> </span><span class="meta-author"><a class="author-name" title="حامد" href="https://maaleki.ir/author/hamed/">حامد</a></span></span></span><span class="date meta-item fa-before">17 جولای 2017</span></p>
<div class="tie-alignright"><span class="meta-comment meta-item fa-before">۰</span><span class="meta-views meta-item warm">۵۷۸</span><span class="meta-reading-time meta-item"> خواندن این مطلب 1 دقیقه زمان میبرد</span></div>
</div>
</div>
</header>
<div class="post-footer post-footer-on-top">
<div class="share-links  share-centered icons-only"><a class="facebook-share-btn" href="https://www.facebook.com/sharer.php?u=https://maaleki.ir/280/%d8%a2%d9%85%d9%88%d8%b2%d8%b4-%d8%a7%d8%b3%d8%aa%d9%81%d8%a7%d8%af%d9%87-cddvd-%d8%b9%d9%86%d9%88%d8%a7%d9%86-repository/" target="_blank" rel="external noopener noreferrer"><span class="screen-reader-text">فیس بوک</span></a><a class="twitter-share-btn" href="https://twitter.com/intent/tweet?text=%D8%A2%D9%85%D9%88%D8%B2%D8%B4%20%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87%20%D8%A7%D8%B2%20CD%2FDVD%20%20%D8%A8%D9%87%20%D8%B9%D9%86%D9%88%D8%A7%D9%86%20Repository&amp;url=https://maaleki.ir/280/%d8%a2%d9%85%d9%88%d8%b2%d8%b4-%d8%a7%d8%b3%d8%aa%d9%81%d8%a7%d8%af%d9%87-cddvd-%d8%b9%d9%86%d9%88%d8%a7%d9%86-repository/" target="_blank" rel="external noopener noreferrer"><span class="screen-reader-text">توییتر</span></a><a class="linkedin-share-btn" href="https://www.linkedin.com/shareArticle?mini=true&amp;url=https://maaleki.ir/280/%d8%a2%d9%85%d9%88%d8%b2%d8%b4-%d8%a7%d8%b3%d8%aa%d9%81%d8%a7%d8%af%d9%87-cddvd-%d8%b9%d9%86%d9%88%d8%a7%d9%86-repository/&amp;title=%D8%A2%D9%85%D9%88%D8%B2%D8%B4%20%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87%20%D8%A7%D8%B2%20CD%2FDVD%20%20%D8%A8%D9%87%20%D8%B9%D9%86%D9%88%D8%A7%D9%86%20Repository" target="_blank" rel="external noopener noreferrer"><span class="screen-reader-text">لینکدین</span></a><a class="tumblr-share-btn" href="https://www.tumblr.com/share/link?url=https://maaleki.ir/280/%d8%a2%d9%85%d9%88%d8%b2%d8%b4-%d8%a7%d8%b3%d8%aa%d9%81%d8%a7%d8%af%d9%87-cddvd-%d8%b9%d9%86%d9%88%d8%a7%d9%86-repository/&amp;name=%D8%A2%D9%85%D9%88%D8%B2%D8%B4%20%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87%20%D8%A7%D8%B2%20CD%2FDVD%20%20%D8%A8%D9%87%20%D8%B9%D9%86%D9%88%D8%A7%D9%86%20Repository" target="_blank" rel="external noopener noreferrer"><span class="screen-reader-text">‫تامبلر</span></a><a class="pinterest-share-btn" href="https://pinterest.com/pin/create/button/?url=https://maaleki.ir/280/%d8%a2%d9%85%d9%88%d8%b2%d8%b4-%d8%a7%d8%b3%d8%aa%d9%81%d8%a7%d8%af%d9%87-cddvd-%d8%b9%d9%86%d9%88%d8%a7%d9%86-repository/&amp;description=%D8%A2%D9%85%D9%88%D8%B2%D8%B4%20%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87%20%D8%A7%D8%B2%20CD%2FDVD%20%20%D8%A8%D9%87%20%D8%B9%D9%86%D9%88%D8%A7%D9%86%20Repository&amp;media=https://maaleki.ir/wp-content/uploads/2017/07/How-to-create-DVD-as-YUM-repo-In-RHEL7-780x405.jpg" target="_blank" rel="external noopener noreferrer"><span class="screen-reader-text">‫پین‌ترست</span></a><a class="reddit-share-btn" href="https://reddit.com/submit?url=https://maaleki.ir/280/%d8%a2%d9%85%d9%88%d8%b2%d8%b4-%d8%a7%d8%b3%d8%aa%d9%81%d8%a7%d8%af%d9%87-cddvd-%d8%b9%d9%86%d9%88%d8%a7%d9%86-repository/&amp;title=%D8%A2%D9%85%D9%88%D8%B2%D8%B4%20%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87%20%D8%A7%D8%B2%20CD%2FDVD%20%20%D8%A8%D9%87%20%D8%B9%D9%86%D9%88%D8%A7%D9%86%20Repository" target="_blank" rel="external noopener noreferrer"><span class="screen-reader-text">‫رددیت</span></a></div>
</div>
<div class="featured-area">
<div class="featured-area-inner">
<figure class="single-featured-image"><img loading="lazy" decoding="async" class="attachment-jannah-image-post size-jannah-image-post wp-post-image" src="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_780,h_405/https://maaleki.ir/wp-content/uploads/2017/07/How-to-create-DVD-as-YUM-repo-In-RHEL7-780x405.jpg" alt="استفاده از DVD به عنوان Local Repository" width="780" height="405" /></figure>
</div>
</div>
<div class="entry-content entry clearfix">
<p>استفاده از DVD  به عنوان Local Repository</p>
<p>&nbsp;</p>
<p>نصب package  ها بر روی سرور هایی که فاقد اینترنت هستند و به Repository  های پیش فرض متصل نمی شوند و یا پکیج های خاص و یا حجم بالا یکی از معضلات  کاربران لینوکسی است. در این آموزش قصد داریم به صورت مرحله به مرحله نحوه استفاده از DVD به عنوان Local Repository  را بررسی کنیم.</p>
<p>&nbsp;</p>
<ul>
<li>ابتدا ISO مورد نظر (Installation ISO) را به یک دایرکتوری Mount  میکنیم.</li>
</ul>
<pre class="theme:dark-terminal lang:sh decode:true "># mount -o loop /home/hamed/RHEL7.1.iso /mnt
</pre>
<p>&nbsp;</p>
<p>در صورتی که از DVD استفاده میکنیم باید به شکل زیر مسیر DVD Rom  را وارد نمائیم.</p>
<pre class="theme:dark-terminal lang:sh decode:true"># mount -o loop /dev/sr0&amp;nbsp; /mnt
</pre>
<p>&nbsp;</p>
<p>در مسیر  /etc/repos.d  ایجاد میکنیم که باید با .repo  خاتمه یابد به عنوان مثال localrepo.repo و مقادیر زیر را در آن وارد خواهیم کرد.</p>
<pre class="theme:dark-terminal lang:sh decode:true">Cat /etc/repos.d/localrepo.repo</pre>
<p>&nbsp;</p>
<p>[LocalRepo]</p>
<pre class="theme:dark-terminal lang:sh decode:true">name=Local Repository
baseurl=file:///mnt
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
</pre>
<p>&nbsp;</p>
<p>حال نوبت پاک کردن کش yum  است که این کار نیز با دستور زیر انجام میگیرد.</p>
<p># yum clean all</p>
<p>در نهایت با دستور yum install Package-name پکیج مورد نظر را نصب میکنیم. در اینجا به عنوان نمونه پکیج vsftpd  را نصب خواهیم کرد.</p>
<pre class="theme:dark-terminal lang:sh decode:true"># yum install vsftpd
</pre>
<p>&nbsp;</p>
<p>Loaded plugins: fastestmirror</p>
<pre class="theme:dark-terminal lang:sh decode:true">LocalRepo                                                | 3.6 kB     00:00
(1/2): LocalRepo/group_gz                                  | 157 kB   00:00
(2/2): LocalRepo/primary_db                                | 2.7 MB   00:00
Determining fastest mirrors
Resolving Dependencies
--&gt; Running transaction check
---&gt; Package vsftpd.x86_64 0:3.0.2-9.el7 will be installed
--&gt; Finished Dependency Resolution
 
Dependencies Resolved
 
================================================================================
Package         Arch            Version               Repository          Size
================================================================================
Installing:
vsftpd          x86_64          3.0.2-9.el7           LocalRepo          165 k
 
Transaction Summary
================================================================================
Install  1 Package
 
Total download size: 165 k
Installed size: 343 k
Is this ok [y/d/N]: y
Downloading packages:
warning: /cdrom/Packages/vsftpd-3.0.2-9.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
Public key for vsftpd-3.0.2-9.el7.x86_64.rpm is not installed
Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
Importing GPG key 0xF4A80EB5:
Userid     : "CentOS-7 Key (CentOS 7 Official Signing Key) &lt;security@centos.org&gt;"
Fingerprint: 6341 ab27 53d7 8a78 a7c2 7bb1 24c6 a8a7 f4a8 0eb5
Package    : centos-release-7-0.1406.el7.centos.2.3.x86_64 (@anaconda)
From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
Is this ok [y/N]: y
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : vsftpd-3.0.2-9.el7.x86_64                                    1/1
Verifying  : vsftpd-3.0.2-9.el7.x86_64                                    1/1
 
Installed:
vsftpd.x86_64 0:3.0.2-9.el7
 
Complete!
</pre>
<p>&nbsp;</p>
<p>به یاد داشته باشید این روش فقط محدود به ماشینی خواهد بود که DVD  بر روی آن Mount  شده است.</p>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://linux.vcenter.ir/%d8%a2%d9%85%d9%88%d8%b2%d8%b4-%d8%a7%d8%b3%d8%aa%d9%81%d8%a7%d8%af%d9%87-%d8%a7%d8%b2-cd-dvd-%d8%a8%d9%87-%d8%b9%d9%86%d9%88%d8%a7%d9%86-repository-%d8%af%d8%b1-%d9%84%db%8c%d9%86%d9%88%da%a9%d8%b3/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>رفع مشکل Error در License RDP</title>
		<link>https://linux.vcenter.ir/fixed-an-error-in-license-rdp/</link>
					<comments>https://linux.vcenter.ir/fixed-an-error-in-license-rdp/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Thu, 03 Sep 2020 21:50:18 +0000</pubDate>
				<category><![CDATA[وبلاگ]]></category>
		<guid isPermaLink="false">http://linux.vcenter.ir/?p=97</guid>

					<description><![CDATA[رفع مشکل Error در License RDP در صورت مواجه با پیغام خطای “The remote session was disconnected because there are no Remote Desktop License Server available to provide a license Please Contact the server administrator” جهت رفع مشکل مراحل زیر را دنبال کنید. یک روش ورود به سرور با استفاده از Admin Mode  می باشد [&#8230;]]]></description>
										<content:encoded><![CDATA[<header class="entry-header-outer">
<div class="entry-header">
<h1 class="post-title entry-title">رفع مشکل Error در License RDP</h1>
</div>
</header>
<div class="post-footer post-footer-on-top">
<div class="share-links  share-centered icons-only"></div>
</div>
<div class="featured-area">
<div class="featured-area-inner">
<figure class="single-featured-image"><img loading="lazy" decoding="async" class="attachment-jannah-image-post size-jannah-image-post wp-post-image" src="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_500/https://maaleki.ir/wp-content/uploads/2017/05/partner-dekstop.png" sizes="(max-width: 500px) 100vw, 500px" srcset="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_500/https://maaleki.ir/wp-content/uploads/2017/05/partner-dekstop.png 500w, https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_300/https://maaleki.ir/wp-content/uploads/2017/05/partner-dekstop-300x120.png 300w" alt="" width="500" height="200" /></figure>
</div>
</div>
<div class="entry-content entry clearfix">
<p><a href="http://hamedmaaleki.ir/wp-content/uploads/2017/05/1RDP-Problem.jpg"><img loading="lazy" decoding="async" class="aligncenter wp-image-70 size-full" title="Remote Desktop License Error" src="http://hamedmaaleki.ir/wp-content/uploads/2017/05/1RDP-Problem.jpg" sizes="(max-width: 572px) 100vw, 572px" srcset="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_572/https://maaleki.ir/wp-content/uploads/2017/05/1RDP-Problem.jpg 572w, https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_300/https://maaleki.ir/wp-content/uploads/2017/05/1RDP-Problem-300x83.jpg 300w" alt="Remote Desktop License Error" width="572" height="158" /></a></p>
<h3>در صورت مواجه با پیغام خطای “The remote session was disconnected because there are no Remote Desktop License Server available to provide a license Please Contact the server administrator” جهت رفع مشکل مراحل زیر را دنبال کنید.</h3>
<p>یک روش ورود به سرور با استفاده از Admin Mode  می باشد یعنی<br />
mstsc /admin</p>
<h3>اما برای رفع کامل مشکل :</h3>
<ul>
<li>با دستور regedit وارد محیط  Registry Editor  شوید و وارد مسیر زیر شوید.</li>
</ul>
<p>HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\RCM\GracePeriod</p>
<p><a href="http://hamedmaaleki.ir/wp-content/uploads/2017/05/RDP-Problem1.jpg"><img loading="lazy" decoding="async" class="aligncenter wp-image-59 size-full" title="Registry" src="http://hamedmaaleki.ir/wp-content/uploads/2017/05/RDP-Problem1.jpg" sizes="(max-width: 487px) 100vw, 487px" srcset="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_487/https://maaleki.ir/wp-content/uploads/2017/05/RDP-Problem1.jpg 487w, https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_300/https://maaleki.ir/wp-content/uploads/2017/05/RDP-Problem1-300x279.jpg 300w" alt="Registry remove key" width="487" height="453" /></a></p>
<ul>
<li>در قسمت Permissions مالکیت دایرکتوری GracePeriod  را به کاربر admin تغییر می دهید.</li>
</ul>
<p><a href="http://hamedmaaleki.ir/wp-content/uploads/2017/05/RDP-Problem2.jpg"><img loading="lazy" decoding="async" class="aligncenter wp-image-60 size-full" title="Take Ownership" src="http://hamedmaaleki.ir/wp-content/uploads/2017/05/RDP-Problem2.jpg" sizes="(max-width: 384px) 100vw, 384px" srcset="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_384/https://maaleki.ir/wp-content/uploads/2017/05/RDP-Problem2.jpg 384w, https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_250/https://maaleki.ir/wp-content/uploads/2017/05/RDP-Problem2-250x300.jpg 250w" alt="Take Ownership" width="384" height="460" /></a></p>
<p><a href="http://hamedmaaleki.ir/wp-content/uploads/2017/05/RDP-Problem3.jpg"><img loading="lazy" decoding="async" class="aligncenter wp-image-61 size-full" title="Take Ownership" src="http://hamedmaaleki.ir/wp-content/uploads/2017/05/RDP-Problem3.jpg" sizes="(max-width: 781px) 100vw, 781px" srcset="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_781/https://maaleki.ir/wp-content/uploads/2017/05/RDP-Problem3.jpg 781w, https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_300/https://maaleki.ir/wp-content/uploads/2017/05/RDP-Problem3-300x204.jpg 300w, https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_768/https://maaleki.ir/wp-content/uploads/2017/05/RDP-Problem3-768x522.jpg 768w" alt="Take Ownership" width="781" height="531" /></a></p>
<ul>
<li>به کاربر admin دسترسی کامل می دهیم تا امکان پاک کردن کلید L$RTMTIMEBOMB برایتان فراهم شود.</li>
</ul>
<p><a href="http://hamedmaaleki.ir/wp-content/uploads/2017/05/RDP-Problem4.jpg"><img loading="lazy" decoding="async" class="aligncenter wp-image-62 size-full" title="Full Control To admin" src="http://hamedmaaleki.ir/wp-content/uploads/2017/05/RDP-Problem4.jpg" sizes="(max-width: 375px) 100vw, 375px" srcset="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_375/https://maaleki.ir/wp-content/uploads/2017/05/RDP-Problem4.jpg 375w, https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_300/https://maaleki.ir/wp-content/uploads/2017/05/RDP-Problem4-300x222.jpg 300w" alt="Full Control To admin" width="375" height="277" /></a></p>
<ul>
<li>در نهایت کلید <span dir="LTR">L$RTMTIMEBOMB</span> <span lang="FA">را پاک کرده و سیستم را مجددا راه اندازی می کنید.</span></li>
</ul>
<p><a href="http://maaleki.ir/wp-content/uploads/2017/05/RDP-Problem5.jpg"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-63" src="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_586,h_219/http://maaleki.ir/wp-content/uploads/2017/05/RDP-Problem5.jpg" sizes="(max-width: 586px) 100vw, 586px" srcset="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_586/https://maaleki.ir/wp-content/uploads/2017/05/RDP-Problem5.jpg 586w, https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_300/https://maaleki.ir/wp-content/uploads/2017/05/RDP-Problem5-300x112.jpg 300w" alt="" width="586" height="219" /></a></p>
<p><span lang="FA">با بوت مجدد، سیستم اقدام به ساخت دوباره این کلید با مقادیر جدید خواهد کرد و در نهایت مشکل حل خواهد شد.</span></p>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://linux.vcenter.ir/fixed-an-error-in-license-rdp/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>معرفی فایروال های لینوکسی firewalld و iptables</title>
		<link>https://linux.vcenter.ir/introduction-of-linux-firewalld-and-iptables-firewalls/</link>
					<comments>https://linux.vcenter.ir/introduction-of-linux-firewalld-and-iptables-firewalls/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Thu, 03 Sep 2020 21:48:59 +0000</pubDate>
				<category><![CDATA[وبلاگ]]></category>
		<guid isPermaLink="false">http://linux.vcenter.ir/?p=95</guid>

					<description><![CDATA[معرفی فایروال های لینوکسی firewalld و iptables معرفی iptables و firewalld: سرویس های firewalld  و  iptables  هر دو فایروال های پیش فرض سیستم عامل ها و توزیع های مبتنی بر RedHat  میباشند و هر دو از بستر netfilter  استفاده میکنند. iptables نسخه ای سنتی و قدیمی تر از firewalld می باشد که در نسخه RHEL7 یا [&#8230;]]]></description>
										<content:encoded><![CDATA[<header class="entry-header-outer">
<div class="entry-header">
<h1 class="post-title entry-title">معرفی فایروال های لینوکسی firewalld و iptables</h1>
</div>
</header>
<div class="featured-area">
<div class="featured-area-inner">
<figure class="single-featured-image"><img loading="lazy" decoding="async" class="attachment-jannah-image-post size-jannah-image-post wp-post-image" src="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_780,h_445/https://maaleki.ir/wp-content/uploads/2020/06/firewall-800x445-1-780x445.png" alt="firewall" width="780" height="445" /></figure>
</div>
</div>
<div class="entry-content entry clearfix">
<h1>معرفی iptables و firewalld:</h1>
<p>سرویس های firewalld  و  iptables  هر دو فایروال های پیش فرض سیستم عامل ها و توزیع های مبتنی بر RedHat  میباشند و هر دو از بستر <a href="https://en.wikipedia.org/wiki/Netfilter">netfilter  </a>استفاده میکنند. iptables نسخه ای سنتی و قدیمی تر از firewalld می باشد که در نسخه RHEL7 یا firewalld  جایگزین گردید. اما هر دو همچنان گستردگی استفاده خود را در دنیای لینوکس حفظ کرده اند.</p>
<p>هر دو ابزار با پشتیبانی IPv4 و IPv6  و پروتکل های TCP و UDP این امکان را فراهم میکنند تا امنیت سرور ها را در شبکه تا حد ممکن افزایش داده و از دسترسی های ناخواسته به سرور از طریق شبکه جلوگیری نمود.</p>
<p>نکته: در RHEL8 که اخیرا عرضه شده است، firewalld از بستر <a href="https://en.wikipedia.org/wiki/Nftables">nftables</a> به جای netfilter  استفاده میکند.</p>
<p>در ادامه مستند به نصب هر دو سرویس ، معرفی و پیکربندی هرکدام خواهیم پرداخت.</p>
<h2>iptables:</h2>
<p>همانطور که پیش تر اشاره شد، iptables بر اساس netfilter  پیاده سازی شده است و تا قبل از  RHEL7 به عنوان فایروال پیش فرض استفاده می شده است. ساختار iptables  بر اساس سه قسمت زیر است:</p>
<ul>
<li>Tables</li>
<li>Chains</li>
<li>Rules</li>
</ul>
<h3>Tables:</h3>
<p>جداول iptables برای برای دسته بندی گروهی از chain ها که هر کدامل شامل یک یا چند rule  میباشند مورد استفاده قرار میگیرند.جداول پیش فرض شامل 5 جدول به شرح زیر هستند:</p>
<ul>
<li>filter: جدول پیشرفض مورد استفاده iptables است که برای فیلتر کردن پکت های ورودی و خروجی مورد استفاده قرار میگیرد.</li>
<li>nat: جدولی است که به منظور اعمال تنظیمات NAT مورد استفاده قرار میگیرد.</li>
<li>raw: در حالت عادی کرنل پکت ها را بر اساس State آنها ( یا جزئی از یک کانشن جدید هستند یا جزئی از یک کانکشن جاری و باز) بررسی میکند. این جدول این امکان را فراهم میکند تا با پکت ها قبل از این که کرنل بر اساس state  آنها اقدامی انجام دهد کارکرد.</li>
<li>mangle: از طریق این جدول میتوان تغییراتی را در header پکت ها ایجاد نمود. به عنوان مثال تغییر مقدار TTL در پکت های دریافتی. این عمل تحت عنوان packet mark نیز شناخته می شود.</li>
<li>security: برای مدیریت دسترسی از طریق متد MAC یا mandatory access control  می باشد.</li>
</ul>
<h3>Chains:</h3>
<p>هر جدول شامل تعدادی chain هستند که هر کدام گروهی از rule  ها را در خود نگه میدارند. که میتوانند سیستمی باشند یا توسط کاربر ساخته شود.</p>
<p>سه chain  اصلی عبارتند از :</p>
<ul>
<li>INPUT: برای مدیریت rule های مربوط به پکت های ورودی به سیستم به کار میرود.</li>
<li>OUTPUT: برای مدیریت rule های مربوط به پکت های خروجی از سیستم به کار میرود.</li>
<li>FORWARD: برای مدیریت پکت هایی که از طریق route در سیستم forward می شوند به کار میرود.</li>
</ul>
<h3>Rules:</h3>
<p>مجموعه ای از قوانین هستند که درون chain  ها نگه داری می شوند و شامل matches و targets است. بدین معنی که بخشی از rule  ها بیانگر شروطی  و بخشی دیگر بیانگر عملی است که در صورت صادق شدن آن شروط باید انجام شود.</p>
<p>هنگامی که پکتی بررسی می شود، از ابتدای این لیست به ترتیب rule  ها بررسی می شوند تاmatch  اتفاق افتد. در صورتی که پکتی با قوانین موجود در لیست همخوانی داشته باشد، بر اساس قواعد target با آن برخورد می شود.</p>
<p>به عنوان مثال:</p>
<p>اگر پکتی از آدرس 192.168.200.150 و از طریق پورت 5050 پروتکل TCP وارد شد آنگاه آن را drop  کن.</p>
<p>در مثال بالا بخش اگر همان match و بخش آنگاه همان target  خواهد بود.</p>
<h4>Matches:</h4>
<p>شرایطی است که برای پکت ها در نظر گرفته می شود. در صورتی که این شرایط برای پکت همخوانی داشته باشد، iptables پکت را بررسی و قواعد target را بر آن اعمال میکند.</p>
<p>برخی از match ها به شرح زیر می باشند.</p>
<ul>
<li>Source (-s): بیان گر مبدا پکت است که میتواند IP، رنج IP یا hostname باشد.</li>
<li>destination (-d): بیانگر مقصد پکت است می تواند ، رنج IP یا hostname باشد.</li>
<li>protocol (-p): بیانگر پروتکل پکت ورودی می باشد. مانند TCP یا UDP در صورتی که پروتکلی مشخص نشود، به صورت پیش فرض کلیه پروتکل های یا all در نظر گرفته می شود.</li>
<li>–in-interface (-i): بیانگر اینترفیسی است که پکت از آن دریافت می شود.</li>
<li>–out-interface (-o): بیانگر اینترفیسی است که پکت از آن خارج می شود.</li>
</ul>
<h4>Targets:</h4>
<p>بیانگر اقدامی است که برای پکت در نظر گرفته می شود. target  با –j یا  –jump در انتهای دستور مشخص می شود. و چهار نوع دارد:</p>
<ul>
<li>:Accept اجازه دسترسی یا عبور پکت را میدهد.</li>
<li>Drop: اجازه دسترسی به پکت یا عبور آن را نمیدهد و جوابی نیز به درخواست کننده نمی دهد.</li>
<li>Queue: پکت های دریافتی را صف بندی میکند.</li>
<li>Return: اگر rule دارای target برابر با return باشد، بررسی rule  های آن chain برای پکت متوقف می شود و پکت بر اساس رول های chain بالا دستی بررسی می شود ولی در صورتی که این rule در یکی از chain های اصلی وجود داشته باشد، پالیسی پیشرفض برای آن اعمال خواهد شد.</li>
</ul>
<p>در صورتی که قصد اضافه کردن rule به chain  خاصی را داشته باشیم، از option با مقدار A- یا  append– و در صورتی که قصد حذف آن را داشته باشیم از option با مقدار D- یا delete– استفاده میکنیم.</p>
<h3>دستورات iptables:</h3>
<p>حال بعد از آشنایی با iptables، به بررسی چند دستور جهت آشنایی بیشتر با نحوه حذف و اضافه نمودن rule ها می پردازیم.</p>
<p>جهت بررسی و مشاهده لیست rule  های موجود از دستور زیر استفاده می کنیم.</p>
<pre class="line-numbers language-bash code-toolbar"><code class=" language-bash">iptables -L</code></pre>
<div class="toolbar">
<div class="toolbar-item"><a>Copy</a></div>
</div>
<p><a href="http://maaleki.ir/wp-content/uploads/2020/06/list-rules.jpg"><img loading="lazy" decoding="async" class="aligncenter wp-image-1161" src="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_703,h_183/http://maaleki.ir/wp-content/uploads/2020/06/list-rules.jpg" sizes="(max-width: 703px) 100vw, 703px" srcset="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_626/https://maaleki.ir/wp-content/uploads/2020/06/list-rules.jpg 626w, https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_300/https://maaleki.ir/wp-content/uploads/2020/06/list-rules-300x78.jpg 300w" alt="list rules" width="703" height="183" /></a></p>
<p>در صورتی که صرفا لیست rule  های یک chain  به خصوص مد نظر باشد نیز در انتهای دستور اسم chain را به صورت زیر وارد میکنیم.</p>
<pre class="line-numbers language-bash code-toolbar"><code class=" language-bash">iptables –L INPUT</code></pre>
<div class="toolbar">
<div class="toolbar-item"><a>Copy</a></div>
</div>
<p><a href="http://maaleki.ir/wp-content/uploads/2020/06/list-a-chain.jpg"><img loading="lazy" decoding="async" class="aligncenter wp-image-1162" src="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_716,h_132/http://maaleki.ir/wp-content/uploads/2020/06/list-a-chain.jpg" sizes="(max-width: 716px) 100vw, 716px" srcset="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_624/https://maaleki.ir/wp-content/uploads/2020/06/list-a-chain.jpg 624w, https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_300/https://maaleki.ir/wp-content/uploads/2020/06/list-a-chain-300x55.jpg 300w" alt="list a chain" width="716" height="132" /></a></p>
<h3>ایجاد Default policy:</h3>
<p>در صورتی که پکتی با rule  های هیچ یک از chain  ها همخوانی نداشته باشد، نیاز است تا اقدامی به صورت پیش فرض برای آن در نظر گرفته شود. به عنوان نمونه اگر پکتی با هیچ rule خاصی همخوانی نداشت، آن را drop کنیم.دستور زیر سیاست پیش فرض را  قبول یا accept قرار خواهد داد.</p>
<pre class="line-numbers language-bash code-toolbar"><code class=" language-bash">iptables -t filter -P INPUT ACCEPT</code></pre>
<div class="toolbar">
<div class="toolbar-item"><a>Copy</a></div>
</div>
<p>و دستور زیر سیاست پیش فرض را بر رد درخواست با drop  قرار خواهد داد.</p>
<pre class="line-numbers language-bash code-toolbar"><code class=" language-bash">iptables -t filter -P INPUT DROP</code></pre>
<div class="toolbar">
<div class="toolbar-item"><a>Copy</a></div>
</div>
<h3>ایجاد و حذف و جایگزین کردن  فیلتر:</h3>
<p>در مثال های زیر با اضافه نمودن چند فیلتر به ساختار دستوری iptables  در حذف و اضافه کردن rule  ها خواهیم پرداخت.</p>
<p>&nbsp;</p>
<ul>
<li>مثال1: تمامی ترافیک های ورودی از یک ادرس را به سرور مسدود نمائیم. از آنجا که پروتکلی در دستور زیر مشخص نشده است، کل ترافیک ورودی از 192.168.200.200 به مقصد 192.168.200.201 مسدود خواهد شد.</li>
</ul>
<p>&nbsp;</p>
<p>&nbsp;</p>
<pre class="line-numbers language-bash code-toolbar"><code class=" language-bash">iptables -A INPUT -s 192.168.200.200 -d 192.168.200.201 -j DROP</code></pre>
<div class="toolbar">
<div class="toolbar-item"><a>Copy</a></div>
</div>
<ul>
<li>مثال2:  ترافیک SSH با دستور زیر فیلتر خواهد شد</li>
</ul>
<pre class="line-numbers language-bash code-toolbar"><code class=" language-bash">iptables -A INPUT -s 192.168.200.200 -d 192.168.200.201 -p tcp --dport 22 -j DROP</code></pre>
<div class="toolbar">
<div class="toolbar-item"><a>Copy</a></div>
</div>
<ul>
<li>مثال3: ترافیک ورودی و خروجی TCP بر روی پورت 22 برای اینترفیس en33  مورد قبول واقع می شود</li>
</ul>
<pre class="line-numbers language-bash code-toolbar"><code class=" language-bash">iptables -A INPUT -p tcp -i ens33 --dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp -o ens33 --sport 22 -j ACCEPT</code></pre>
<div class="toolbar">
<div class="toolbar-item"><a>Copy</a></div>
</div>
<ul>
<li>مثال4: همانند مثال بالا با این تفاوت که چند پورت به صورت رنج معرفی گردیده است.</li>
</ul>
<pre class="line-numbers language-bash code-toolbar"><code class=" language-bash">iptables -A INPUT -p tcp -i ens33 --dport 22:26  -j ACCEPT</code></pre>
<div class="toolbar">
<div class="toolbar-item"><a>Copy</a></div>
</div>
<p>در تمامی مثال های بالا rule هایی به chain های جدول filter  اضافه گردید. حال اگر قصد حذف rule وارد شده را داشته باشیم از همان دستور اما با option  برابر با D- استفاده می نمائیم.</p>
<pre class="line-numbers language-bash code-toolbar"><code class=" language-bash">iptables -D INPUT -s 192.168.200.200 -d 192.168.200.201 -j DROP</code></pre>
<div class="toolbar">
<div class="toolbar-item"><a>Copy</a></div>
</div>
<p>در صورتی که قصد داشته باشیم تمامی rule  های یک chain را حذف نمائیم از دستور زیر استفاه میکنیم.  در مثال زیر forward chain ازجدول filter تخلیه خواهد شد.</p>
<pre class="line-numbers language-bash code-toolbar"><code class=" language-bash">iptables  -F FORWARD</code></pre>
<div class="toolbar">
<div class="toolbar-item"><a>Copy</a></div>
</div>
<p>در صورتی که قصد داشته باشیم تمامی rule  های یک table  را پاک نمائیم از دستور زیر استفاده خواهد شد.</p>
<pre class="line-numbers language-bash code-toolbar"><code class=" language-bash">iptables  -t filter -F</code></pre>
<div class="toolbar">
<div class="toolbar-item"><a>Copy</a></div>
</div>
<p>نکته:</p>
<p>باید توجه داشت که ترتیب rule  های هر chain  مهم است. به عنوان نمونه در صورتی که خط اول INPUT برای پذیرش تمامی ترافیک ها و خط آخر برای عدم قبول ترافیک ICMP تنظیم شده باشد، ترافیک ورودی فقط با rule  اول match خواهد شد. لذا این ترتیب بندی ها میبایست در نظر گرفته شود.</p>
<p>برای مشاهده شماره و ترتیب rule  ها میتوان از دستور زیر استفاده کرد.</p>
<pre class="line-numbers language-bash code-toolbar"><code class=" language-bash">iptables -L --line-numbers</code></pre>
<div class="toolbar">
<div class="toolbar-item"><a>Copy</a></div>
</div>
<p><a href="http://maaleki.ir/wp-content/uploads/2020/06/rules-line-numbers.jpg"><img loading="lazy" decoding="async" class="aligncenter wp-image-1164" src="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_707,h_204/http://maaleki.ir/wp-content/uploads/2020/06/rules-line-numbers.jpg" sizes="(max-width: 707px) 100vw, 707px" srcset="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_624/https://maaleki.ir/wp-content/uploads/2020/06/rules-line-numbers.jpg 624w, https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_300/https://maaleki.ir/wp-content/uploads/2020/06/rules-line-numbers-300x87.jpg 300w" alt="rules line numbers" width="707" height="204" /></a></p>
<p>تا به اینجای کارrule اضافه شده در انتهای chain اضافه یا append  می شدند. در صورتی که قصد داشته باشیم rule در جای خاصی از جدول اضافه شود به جای –A از –I یا –insert استفاده مینمائیم. مانند دستور زیر</p>
<pre class="line-numbers language-bash code-toolbar"><code class=" language-bash">iptables -I INPUT 2 -s 192.168..199 -d 192.168.200.201 -p tcp --dport 22 -j DROP</code></pre>
<div class="toolbar">
<div class="toolbar-item"><a>Copy</a></div>
</div>
<p><a href="http://maaleki.ir/wp-content/uploads/2020/06/insert-rule.jpg"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-1165" src="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_624,h_149/http://maaleki.ir/wp-content/uploads/2020/06/insert-rule.jpg" sizes="(max-width: 624px) 100vw, 624px" srcset="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_624/https://maaleki.ir/wp-content/uploads/2020/06/insert-rule.jpg 624w, https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_300/https://maaleki.ir/wp-content/uploads/2020/06/insert-rule-300x72.jpg 300w" alt="insert rule" width="624" height="149" /></a></p>
<p>تفاوت این دستور با دستورات بالا در این است که علاوه بر استفاده از option   -I مبنی بر insert در جدول، بعد از اسم chain نیز با مشخص کردن شماره خط،  همانند شکل بالاrule  اضافه شده را در خط دوم  اضافه نمودیم.</p>
<p>حال که شماره rule ها در chain را در اختیار داریم، میتوانیم همانند دستور زیر، rule  های مورد نظر را به id یا شماره آنها حذف نمود.</p>
<pre class="line-numbers language-bash code-toolbar"><code class=" language-bash">iptables -D INPUT 2</code></pre>
<div class="toolbar">
<div class="toolbar-item"><a>Copy</a></div>
</div>
<p><a href="http://maaleki.ir/wp-content/uploads/2020/06/delete-by-id.jpg"><img loading="lazy" decoding="async" class="aligncenter wp-image-1166" src="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_711,h_197/http://maaleki.ir/wp-content/uploads/2020/06/delete-by-id.jpg" sizes="(max-width: 711px) 100vw, 711px" srcset="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_624/https://maaleki.ir/wp-content/uploads/2020/06/delete-by-id.jpg 624w, https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_300/https://maaleki.ir/wp-content/uploads/2020/06/delete-by-id-300x83.jpg 300w" alt="delete by id" width="711" height="197" /></a></p>
<p>در نهایت اگر قصد داشته باشیم rule خاصی را replace  نماییم میتوانیم از option –R یا –replace استفاده وکنیم.</p>
<p>با دستور زیر rule  دوم از تصویر بالا را با rule  مورد نظر جایگزین می نمائیم.</p>
<pre class="line-numbers language-bash code-toolbar"><code class=" language-bash">iptables -R INPUT 2 -s 192.168.200.199 -d 192.168.200.201 -p tcp --dport 22 -j DROP</code></pre>
<div class="toolbar">
<div class="toolbar-item"><a>Copy</a></div>
</div>
<h2></h2>
<h2>firewalld:</h2>
<p>سرویس firewalld همانطور که پیشتر اشاره شد از نسخه RHEL7 جایگزین iptables   شد اما تا قبل از نسخه 8 از یک بستر استفاده میکردند. در firewalld از ابزاری به نام firewall-cmd برای ایجاد، جایگزینی و حذف rule  ها استفاده می شود. قبل از معرفی این ابزار برخی از مفاهیم firewalld را مورد بررسی قرار میدهیم.</p>
<h3>Zones:</h3>
<p>firewalld rule  ها را در مجموعه هایی به نام zone  مدیریت میکند. در واقع Zone  ها لیستی از rule  ها هستند که رفتار firewalld با ترافیک دریافتی اینترفیس ها از طریق آنها مشخص می شود.</p>
<p>Zone  های پیش فرض در firewalld به شرح زیر می باشند:</p>
<ul>
<li>drop: کمترین میزان اعتماد در این zone وجود دارد. در این zone تمامی ترافیک های دریافتی بدون ارسال هیچ پاسخی drop خواهند شد و فقط ترافیک های خروجی مجاز خواهند بود.</li>
<li>block: همانند drop می باشد اما با خشونتی کمتر از آن. در این zone نیز تمامی ترافیک های ورودی drop می شوند اما در پاسخ به درخواست های ورودی، پیغامی مانند icmp-host-prohibited و یا icmp6-adm-prohibited  نیز ارسال می شود.</li>
<li>public: به نوعی بیانگر شبکه های عمومی و سطح امنیت و اعتماد کم در آن هاست. ترافیک های ورودی در این zone تماما بسه نمی شوند می میتوان بر اساس نیاز به آنها اجازه دسترسی داد.</li>
<li>external: در صورتی که قصد NAT کردن Private IP خود را داشته باشیم از این zone استفاده می نمائیم.</li>
<li>internal:  ترافیک های دریافتی در این zone قابل اعتماد تر هستند و برخی سرویس ها در این zone نیز ممکن است در دسترس باشند.</li>
<li>dmz: برای ایزوله کردن ترافیک از سایر آدرس هاش شبکه مورد استفاده قرار میگیرد و فقط ترافیک های خاصی امکان اتصال خواهند اشت.</li>
<li>work: بیشتر ترافیک های ورودی در این zone قابل اعتماد هستند و تعدادی کمی از سرویس ها نیز در آن فعال و در دسترس هستند.</li>
<li>home: برای محیط خانگی کاربرد دارد و تضور بر این است که تمام سیستم های شبکه اعتماد وجود دارد. سطح دسترسی از طریق سرویس های مختلف کمی بیشتر از home می باشد.</li>
<li>trusted: به تمام ماشین های داخل شبکه اعتماد کامل وجود دارد و کمترین محدودیت در ترافیک ها را اعمال میکند.</li>
</ul>
<h3>دریافت اطلاعات Zone ها:</h3>
<p>هر کارت شبکه به یک zone متصل خواهد شد و قوانین آن zone بر ترافیک های ورودی و خروجی آن اینترفیس حاکم خواهد بود. این امکان وجود دارد که در صورت نیاز zone  مورد نظر خود را ایجاد و خصوصیات آن را ویرایش کرده و سپس اینترفیسی را به آن متصل نمائیم.</p>
<p>Rule ها در firewalld یا به صورت آنی (immediate) و یا به صورت دائمی (permanent ) خواهند بود. در صورتی که تغییری در rule خاصی ایجاد شود یا rule جدیدی اضافه شود مادامی که به صورت دائمی ثبت نشوند موقت خواهند بود ودر بوت بعدی وجود نخواهند داشت.</p>
<p>اضافه کردن دائمی rule  و یا ایجاد تغییرات در آن ها با option –permanent صورت میپذیرد.</p>
<p>برای مشاهده لیست zone  ها و zone  پیش فرض از دو دستور زیر استفاده مینمائیم.</p>
<pre class="line-numbers language-bash code-toolbar"><code class=" language-bash">firewall-cmd get-zones
firewall-cmd --get-default-zone</code></pre>
<div class="toolbar">
<div class="toolbar-item"><a>Copy</a></div>
</div>
<p><a href="http://maaleki.ir/wp-content/uploads/2020/06/zone-list.jpg"><img loading="lazy" decoding="async" class="aligncenter wp-image-1167" src="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_743,h_81/http://maaleki.ir/wp-content/uploads/2020/06/zone-list.jpg" sizes="(max-width: 743px) 100vw, 743px" srcset="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_624/https://maaleki.ir/wp-content/uploads/2020/06/zone-list.jpg 624w, https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_300/https://maaleki.ir/wp-content/uploads/2020/06/zone-list-300x33.jpg 300w" alt="zone list" width="743" height="81" /></a></p>
<p>در صورتی که قصد داشت هباشیم rule های هر zone  را مشاهده کنیم، میتوانیم از دستور زیر استفاده کنیم.</p>
<pre class="line-numbers language-bash code-toolbar"><code class=" language-bash">firewall-cmd --list-all  --zone=block</code></pre>
<div class="toolbar">
<div class="toolbar-item"><a>Copy</a></div>
</div>
<p>دستور بالا rule  های block zone  را به صورت زیر نمایش می دهد. در صورتی که اسم zone  مشخص نشود، rule های zone  پیشفرض نمایش داده می شود.</p>
<p><a href="http://maaleki.ir/wp-content/uploads/2020/06/list-rules-insde-a-zone.jpg"><img loading="lazy" decoding="async" class="aligncenter wp-image-1168" src="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_740,h_275/http://maaleki.ir/wp-content/uploads/2020/06/list-rules-insde-a-zone.jpg" sizes="(max-width: 740px) 100vw, 740px" srcset="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_624/https://maaleki.ir/wp-content/uploads/2020/06/list-rules-insde-a-zone.jpg 624w, https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_300/https://maaleki.ir/wp-content/uploads/2020/06/list-rules-insde-a-zone-300x112.jpg 300w" alt="list rules insde a zone" width="740" height="275" /></a></p>
<p>در صورتی که قصد داشته باشیم اینترفیسی را به zone خاصی متصل کنیم، از دستور زیر استفاد می نماییم.</p>
<pre class="line-numbers language-bash code-toolbar"><code class=" language-bash">firewall-cmd  --zone=trusted --change-interface=ens33</code></pre>
<div class="toolbar">
<div class="toolbar-item"><a>Copy</a></div>
</div>
<p><a href="http://maaleki.ir/wp-content/uploads/2020/06/assigne-rule-to-interface.jpg"><img loading="lazy" decoding="async" class="aligncenter wp-image-1169" src="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_700,h_268/http://maaleki.ir/wp-content/uploads/2020/06/assigne-rule-to-interface.jpg" sizes="(max-width: 700px) 100vw, 700px" srcset="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_624/https://maaleki.ir/wp-content/uploads/2020/06/assigne-rule-to-interface.jpg 624w, https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_300/https://maaleki.ir/wp-content/uploads/2020/06/assigne-rule-to-interface-300x115.jpg 300w" alt="assigne rule to interface" width="700" height="268" /></a></p>
<p>همانطور که در تصویر قابل مشاهده است، اینترفیس ens33 به trusted zone متصل گردید.</p>
<p>نکته مهم:</p>
<p>در هنگام انتقال اینترفیس ها باید مد نظر داشت که این تغییرات بر روی سرویس درحال کار تاثیر گزار خواهد بود. بدین صورت که اگر اینترفیسی از zone فعلی که دارای ارتباط ssh فعال است به zone دیگری که در آن ssh مسدود است منتقل شود ممکن است ارتباط قطع گردد. لذا در صورتی این تغییرات انجام شود که یا از عملیات مطمئن بوده یا دسترسی به سرور در صورت بروز مشکل فراهم باشد.</p>
<p>در صورتی که مدیریت تمامی اینترفیس ها از طریق یک zone فراهم باشد، میتوان zone پیش فرض را به zone مورد نظر و با دستور زیر تغییر داد.</p>
<pre class="line-numbers language-bash code-toolbar"><code class=" language-bash">firewall-cmd --set-default-zone=home</code></pre>
<div class="toolbar">
<div class="toolbar-item"><a>Copy</a></div>
</div>
<h3></h3>
<h3>اضافه کردن rule برای سرویس ها:</h3>
<p>در firewalld برخی از سرویس ها مهم و پر کاربرد به همراه اطلاعات آنها مانند پروتکل و پورت مورد استفاده آن ها به صورت از پیش تعریف شده وجود دارند. این امکان برای ما فراهم است تا تنظیمات و اضافه کردن سرویس ها را بر اساس این اطلاعات انجام دهیم.</p>
<p>اطلاعات مرتبط با سرویس ها با نام همان سرویس در مسیر /usr/lib/firewalld/services و در فرمت xml قابل مشاهده هستند. برای دریافت لیستی از سرویس ها میتوان از دستور زیر استفاده کرد.</p>
<pre class="line-numbers language-bash code-toolbar"><code class=" language-bash">firewall-cmd --get-services</code></pre>
<div class="toolbar">
<div class="toolbar-item"><a>Copy</a></div>
</div>
<p><a href="http://maaleki.ir/wp-content/uploads/2020/06/get-services.jpg"><img loading="lazy" decoding="async" class="aligncenter wp-image-1170" src="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_742,h_126/http://maaleki.ir/wp-content/uploads/2020/06/get-services.jpg" sizes="(max-width: 742px) 100vw, 742px" srcset="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_624/https://maaleki.ir/wp-content/uploads/2020/06/get-services.jpg 624w, https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_300/https://maaleki.ir/wp-content/uploads/2020/06/get-services-300x51.jpg 300w" alt="get-services" width="742" height="126" /></a></p>
<p>به عنوان نمونه درصورتی که بخواهیم سرویس ssh  را به public zone اضافه نمیایم به صورت زیر عمل خواهیم کرد.</p>
<pre class="line-numbers language-bash code-toolbar"><code class=" language-bash">firewall-cmd --zone=public --add-service=ssh</code></pre>
<div class="toolbar">
<div class="toolbar-item"><a>Copy</a></div>
</div>
<p>و برای حذف سرویس نیز از remove-service– به صورت زیر استفاده خواهیم کرد.</p>
<pre class="line-numbers language-bash code-toolbar"><code class=" language-bash">firewall-cmd --zone=public  --remove-service=ssh</code></pre>
<div class="toolbar">
<div class="toolbar-item"><a>Copy</a></div>
</div>
<p>در صورتی که بخواهیم تغییرات به صورت دائمی ثبت شوند نیز میتوان مانند دستور زیر از –permanent  استفاه نمائیم.</p>
<pre class="line-numbers language-bash code-toolbar"><code class=" language-bash">firewall-cmd --zone=work --add-service=ssh  --permanent</code></pre>
<div class="toolbar">
<div class="toolbar-item"><a>Copy</a></div>
</div>
<p>در صورتی که سرویس مورد نظر در لیست سرویس های firewalld قرار نداشت میتوانیم با استفاده از فرمت xml یکی از سرویس ها سرویس مورد نظر خود را ایجاد نمائیم یا این که پورت مورد استفاده در سرویس مورد نظر را در firewalld و با دستور زیر اضافه نماییم.</p>
<p>با دستور زیر پورت 3550 بر روی پروتکل tcp به public zone  اضافه میگردد.</p>
<pre class="line-numbers language-bash code-toolbar"><code class=" language-bash">firewall-cmd --zone=public --add-port=3550/tcp</code></pre>
<div class="toolbar">
<div class="toolbar-item"><a>Copy</a></div>
</div>
<p><a href="http://maaleki.ir/wp-content/uploads/2020/06/add-port-.jpg"><img loading="lazy" decoding="async" class="aligncenter wp-image-1171" src="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_721,h_141/http://maaleki.ir/wp-content/uploads/2020/06/add-port-.jpg" sizes="(max-width: 721px) 100vw, 721px" srcset="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_624/https://maaleki.ir/wp-content/uploads/2020/06/add-port-.jpg 624w, https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_300/https://maaleki.ir/wp-content/uploads/2020/06/add-port--300x59.jpg 300w" alt="add port" width="721" height="141" /></a></p>
<p>همچنین در صورتی که بخواهیم رنجی از پورت ها را در این zone  اضافه کنیم نیز میتوانیم به صورت زیر این کار را انجام دهیم.</p>
<pre class="line-numbers language-bash code-toolbar"><code class=" language-bash">firewall-cmd --zone=public --add-port=3720-3725/tcp</code></pre>
<div class="toolbar">
<div class="toolbar-item"><a>Copy</a></div>
</div>
<p>در firewalld ویژگی دیگری به نام rich rule  وجود دارد که از طریق آن میتوان با جزئیات بیشتر اقدام به محدود کردن ترافیک ها نمود. به عنوان نمونه، هدایت کردن ترافیک یک پورت بر روی پورتی دیگر، ایجاد Whitelist، محدود کردن تعداد درخواست های ورودی و…</p>
<p>نمونه ای از rich rule به صورت زیر می باشد که در آن rule مورد نظر بر روی IPv4 و از مبدا 192.168.200.199 و برای سرویس http  فعال خواهد شد و تعداد درخواست ها در ساعت را برابر با 100  درخواست در ساعت قرار داده و در صورتی که شرایط مطرح شده در rule برقرار شود، آن را در فایل messages ثبت می نماید. در آموزشی مجزا به تشریح rich rule ها خواهم پرداخت.</p>
<pre class="line-numbers language-bash code-toolbar"><code class=" language-bash">firewall-cmd --permanent --zone=public --add-rich-rule='rule family=ipv4 source address=192.168.200.199/32 service name=http log level=notice prefix="firewalld rich rule INFO: " limit value="100/h" accept'</code></pre>
<div class="toolbar">
<div class="toolbar-item"><a>Copy</a></div>
</div>
<h2></h2>
<h2>نتیجه گیری:</h2>
<p>در این مستند، به بررسی مفاهیم و ساختار دو فایروال مطرح و محبوب لینوکسی firewalld و iptables  پرداخته شد و سعی شد پس ایجاد آشنایی با دستورات هر دو سرویس، نحوه ایجاد، حذف و اضافه کردن rule ها و ایجاد یا رفع محدودیت در ترافیک های ورودی و خروجی را به صورت ابتدایی مورد بررسی قرار دهیم. حفظ امنیت سرور و جلوگیری از دسترسی ها و ایجاد ترافیک های ناخواسته در محیط های عملیاتی بسیار مهم و حیاتی می باشند در نتیجه آشنایی با این سرویس ها برای ایجاد امنیت هر چه بیشتربرای system administrator ها امری ضروری خواهد بود.</p>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://linux.vcenter.ir/introduction-of-linux-firewalld-and-iptables-firewalls/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>سرویس syslog در لینوکس</title>
		<link>https://linux.vcenter.ir/syslog-service-in-linux/</link>
					<comments>https://linux.vcenter.ir/syslog-service-in-linux/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Thu, 03 Sep 2020 21:46:28 +0000</pubDate>
				<category><![CDATA[وبلاگ]]></category>
		<guid isPermaLink="false">http://linux.vcenter.ir/?p=92</guid>

					<description><![CDATA[سرویس syslog در لینوکس معرفی سرویس rsyslog  how-to-view-and-read-linux-log-files معرفی Syslog: Syslog استانداردی برای ثبت و نگهداشت وقایع است. با ثبت و ذخیره سازی وقایع سیستمی، میتوان اطلاعات مفیدی از وقایع و پیام های ثبت شددر آن کسب کرد. با اطلاعات کسب شده از این طریقمی توان  بررسی روند عملکرد یک نرم افزار ، عیب یابی سیستم [&#8230;]]]></description>
										<content:encoded><![CDATA[<header class="entry-header-outer">
<div class="entry-header">
<h1 class="post-title entry-title">سرویس syslog در لینوکس</h1>
<h2 class="entry-sub-title">معرفی سرویس rsyslog</h2>
<div class="post-meta clearfix">
<div class="tie-alignright"></div>
</div>
</div>
</header>
<div class="post-footer post-footer-on-top">
<div class="share-links share-centered icons-only"></div>
</div>
<div class="featured-area">
<div class="featured-area-inner">
<figure class="single-featured-image"><img loading="lazy" decoding="async" class="attachment-jannah-image-post size-jannah-image-post wp-post-image" src="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_780,h_400/https://maaleki.ir/wp-content/uploads/2020/06/how-to-view-and-read-linux-log-files-780x400.png" alt="how-to-view-and-read-linux-log-files" width="780" height="400" /><figcaption class="single-caption-text"> how-to-view-and-read-linux-log-files</figcaption></figure>
</div>
</div>
<div class="entry-content entry clearfix">
<h1><strong>معرفی </strong><strong>Syslog</strong><strong>:</strong></h1>
<p>Syslog استانداردی برای ثبت و نگهداشت وقایع است. با ثبت و ذخیره سازی وقایع سیستمی، میتوان اطلاعات مفیدی از وقایع و پیام های ثبت شددر آن کسب کرد.</p>
<p>با اطلاعات کسب شده از این طریقمی توان  بررسی روند عملکرد یک نرم افزار ، عیب یابی سیستم (troubleshot)، ثبت وقایع امنیتی، مدیریت سیستم و تحلیل و آنالیز آن ها پرداخت.</p>
<p>Syslog دارای پیام هایی به شرح زیر می باشد.</p>
<ul>
<li>Facility</li>
<li>Severity</li>
<li>message</li>
</ul>
<h2><strong>Facility</strong><strong>:</strong></h2>
<p>کدی است که بیانگر نوع برنامه ای که در حال لاگ کردن پیام ها است. رفتار با facility  ها می تواند متفاوت نیز باشد.</p>
<p>لیستی از facility ها به شرح زیر می باشد:</p>
<p>&nbsp;</p>
<div class="table-is-responsive">
<table>
<tbody>
<tr>
<td width="98">Facility</td>
<td width="172">Keyword</td>
<td width="274">Description</td>
</tr>
<tr>
<td width="98">0</td>
<td width="172">kern</td>
<td width="274">Kernel messages</td>
</tr>
<tr>
<td width="98">1</td>
<td width="172">user</td>
<td width="274">User level message</td>
</tr>
<tr>
<td width="98">2</td>
<td width="172">mail</td>
<td width="274">System daemon</td>
</tr>
<tr>
<td width="98">3</td>
<td width="172">daemon</td>
<td width="274">System daemons</td>
</tr>
<tr>
<td width="98">4</td>
<td width="172">auth</td>
<td width="274">Security messages</td>
</tr>
<tr>
<td width="98">5</td>
<td width="172">syslog</td>
<td width="274">Syslog Internal message</td>
</tr>
<tr>
<td width="98">6</td>
<td width="172">lpr</td>
<td width="274">Line printer subsystem</td>
</tr>
<tr>
<td width="98">7</td>
<td width="172">news</td>
<td width="274">Network news subsystem</td>
</tr>
<tr>
<td width="98">8</td>
<td width="172">uucp</td>
<td width="274">UUCP subsystem</td>
</tr>
<tr>
<td width="98">9</td>
<td width="172">cron</td>
<td width="274">Clock daemon</td>
</tr>
<tr>
<td width="98">10</td>
<td width="172">authpriv</td>
<td width="274">Security/auth message</td>
</tr>
<tr>
<td width="98">11</td>
<td width="172">ftp</td>
<td width="274">For ftp daemon</td>
</tr>
<tr>
<td width="98">12</td>
<td width="172">ntp</td>
<td width="274">For ntp subsystem</td>
</tr>
<tr>
<td width="98">13</td>
<td width="172">security</td>
<td width="274">Log audit</td>
</tr>
<tr>
<td width="98">14</td>
<td width="172">consol</td>
<td width="274">Log alert</td>
</tr>
<tr>
<td width="98">15</td>
<td width="172">Solaris-cron</td>
<td width="274">Scheduling daemon</td>
</tr>
<tr>
<td width="98">16-23</td>
<td width="172">Local0 – local7</td>
<td width="274">For Local use</td>
</tr>
</tbody>
</table>
</div>
<h2><strong>Severity</strong><strong>:</strong></h2>
<p>هر پیام ثبت شده در syslog  باید دارای یک severity level یا اولویت (priority) باشد تا درجه اهمیت پیام را مشخص نماید، serenity های موجود به شرح جدول زیر می باشند:</p>
<div class="table-is-responsive">
<table>
<tbody>
<tr>
<td width="165">Severity code</td>
<td width="524">Description</td>
</tr>
<tr>
<td width="165">0</td>
<td width="524">Emerg یا Emergency( سیستم غیر قابل استفاده می باشد)</td>
</tr>
<tr>
<td width="165">1</td>
<td width="524">Alert: (شرایطی به وجود آمده است و نیاز با اقدامی سریع می باشد.)</td>
</tr>
<tr>
<td width="165">2</td>
<td width="524">Crit یا Critical:(شرایط بحرانی )</td>
</tr>
<tr>
<td width="165">3</td>
<td width="524">Err یا Error: (خطایی به وجود آمده است)</td>
</tr>
<tr>
<td width="165">4</td>
<td width="524">Warning:(هشداری ایجاد شده است)</td>
</tr>
<tr>
<td width="165">5</td>
<td width="524">Notice: (شرایط طبیعی است اما شرط یا شرایطی مصداق پیدا کرده اند)</td>
</tr>
<tr>
<td width="165">6</td>
<td width="524">Info یا Information: (پیام هایی صرفا با جنبه اطلاعات)</td>
</tr>
<tr>
<td width="165">7</td>
<td width="524">Debug: (پیام هایی با جنبه عیب یابی سیستم)</td>
</tr>
</tbody>
</table>
</div>
<p>&nbsp;</p>
<p>در syslog  هر چقدر که مثدار عددی severity بالاتر رود، درجه اهمیت و اولویت آن نیز بالاتر میرود.</p>
<h2><strong>Message</strong><strong>:</strong></h2>
<p>که پیام اصلی است که به عنوان لاگ ذخیره میشود که شامل تاریخ وساعت در ابتدای آن، نام سرور، پردازشی که پیام را ایجاد کرده است و در نهایت متن پیام میباشد.</p>
<p>خط زیر یک نمونه از پیام های ایجاد شده توسط kernel  می باشد.</p>
<pre class="line-numbers language-markup code-toolbar"><code class=" language-markup">Jan  5 08:55:20 server1 kernel: e1000: ens37 NIC Link is Down</code></pre>
<div class="toolbar">
<div class="toolbar-item"><a>Copy</a></div>
</div>
<p>Syslog میتواند به صورت لوکال یا به صورت متمرکز و مرکزی عمل کند. در حالتت لوکال، برنامه ها پیام های خود را به سرویس لوکال syslog  ارسال میکنند و این سرویس بر اساس تنظیماتی که برای آن در فایل /etc/syslog.conf  انجام شده است با پیام ها بر خورد میکند.</p>
<p>در روش متمرکز، سروری به عنوان سرور مرکزی لاگ وظیفه دریاف لاگ از سایر سرور ها و ذخیره سازی آنها را بر اساس تنظیمات انجام شده در /etc/syslog.conf  ذخیره می نماید. در سایر سرور ها که می بایست اگ خود را به سرور مرکزی ارسال نمایند، هر برنامه پیام خود را به syslog  لوکال خود ارسال میکند و پیام درفایت شده بر اساس تنظیمات انجام شده برای سرویس لوکال، به سمت سرور مرکزی هدایت خواهد شد.</p>
<h2><a name="_Toc29129984"></a><strong>تنظیمات </strong><strong>syslog</strong><strong>:</strong></h2>
<p>در فایل پیکربندی syslog  در هر دو مدل پیاده سازی، هر خط بیانگر یک یا چند selector وaction  می باشد. قسمت selector  بیانگر facility وpriority می باشد.</p>
<p>به عنوان مثال در خط زیر mail.info به عنوان selector و /var/log/mail.log بیانگر Action  مربوطه می باشد و بدین معنی میباشد که لاگ های دیافت شده از سرویس mail ( یا همان facility2)  و با severity برابر با 6 را در فایل /var/log/mail.log ذخیره نماید.</p>
<pre class="line-numbers language-markup code-toolbar"><code class=" language-markup">mail.info /var/log/mail.log</code></pre>
<div class="toolbar">
<div class="toolbar-item"><a>Copy</a></div>
</div>
<p>استفاده از “*” در Selector  به معنی any می باشد.  به عنوان نمونه در مثال های زیر نمونه اول بیانگر این است که لاگ های دریافت شده از mail با هر اولویتی که دریافت شد در مسیر اشاره شده ذحیره گردد. و یا در در مثال دوم عنوان میشود که از هر سرویسی اگر پیامی با درجه اولیت warning دریافت شد در فایل /var/log/warning.log ذخیر گردند.</p>
<pre class="line-numbers language-markup code-toolbar"><code class=" language-markup">mail.* /var/log/mail.log
*.warning /var/log/warning.log</code></pre>
<div class="toolbar">
<div class="toolbar-item"><a>Copy</a></div>
</div>
<p>نکته مهم:</p>
<p>در تعریف selector نقشی به نام modifier  نیز وجود دارد که با علامت “=”  یا “!” استفاده میشود. در صورتی که در تعریف selector و در قسمت severity از modifier استفاده نشود، به آن  priority  و priority های مهم تر از آن اشاره میکند، در واقع mail.warning  یعنی هر پیامی با اولویت warning و بالاتر از آن (err، crit، alert و emergency). در صورتی که بخواهیم صرفا یک severity خاص را معرفی کنیم میبایست از modifier  “=” را به صورت زیر استفاده کنیم.</p>
<pre class="line-numbers language-markup code-toolbar"><code class=" language-markup">mail.=notice /var/log/messages</code></pre>
<div class="toolbar">
<div class="toolbar-item"><a>Copy</a></div>
</div>
<p>در صورتی که بخواهیم پیام هایی با اولویت کمتر لاگ شوند از فرمت زیر استفاده میشود که به معنی هر لاگی غیر از لاگ هایی با اولیوت notice و بالاتر خواهد بود.</p>
<pre class="line-numbers language-markup code-toolbar"><code class=" language-markup">mail.!notice /var/log/messages</code></pre>
<div class="toolbar">
<div class="toolbar-item"><a>Copy</a></div>
</div>
<p>و در صورتی که بخواهیم هر اولویتی به جز یک مورد خاص را لاگ کنیم نیز از فرمت زیر استفاده خواهد شد.</p>
<pre class="line-numbers language-markup code-toolbar"><code class=" language-markup">mail.!=debug /var/log/service.log</code></pre>
<div class="toolbar">
<div class="toolbar-item"><a>Copy</a></div>
</div>
<p>که بیان گر این است که هر پیامی با هر اولویتی به جز debug در مسیر اشاره شده لاگ شود.</p>
<p>در صورتی که قصد داشته باشیم تا پیام را به remote server  یا log server ارسال کنیم میتوانیم به صورت زیر Action را تعریف نمائیم.</p>
<pre class="line-numbers language-markup code-toolbar"><code class=" language-markup">*.emerg @logserver.testdomain.ir
*.emerg @172.16.15.14</code></pre>
<div class="toolbar">
<div class="toolbar-item"><a>Copy</a></div>
</div>
<p>در خط بالا علامت @ بیانگر ارسال بر روی پروتکل  UDP و @@  بیانگر ارسال از طریق پروتکل  TCP خواهد بود.</p>
<p>در centos  به صورت پیش فرض از rsyslog  جهت ثبت وقایع استفاده میشود. این سرویس به صورت modular  طراحی شده است و برخی از علکرد های آن را میتوان از طریق فراخوانی این ماژول ها استفاده کرد. برخی از این ماژول ها به صورت یش فرض در سرویس  شروع به کار سرویس load  می شوند و نیازی به فراخوانی آنها به صورت مستقل نیست. برخی از تنظیمات این سرویس به شرح زیر می باشند:</p>
<ul>
<li>Imuxsock: ماژولی است امکان لاگ کردن پیام ها به صورت لوکال را از طریق ابزاری مانند logger فراهم می سازد.</li>
<li>Imjournal: ماژولی است که در سیستم عامل های مبتنی بر system امکان دسترسی سرویس به imjournal را فراهم میکند.</li>
<li>ActionFileDefaultTemplate: مشخص کننده این است که به صورت پیشفرض از کدام template برای فرمت دهی لاگ ها استفاده کند. به صورت پیشفرض این سرویس از فرمت استاندارد استفاده میکند و در صورتی که قصد داشته باشیم از فرمت دلخواه استفاده کنیم می بایست ابتدا template متناسب را ایجاد کرده و به این پارامتر معرفی نمائیم.</li>
<li>ActionFileEnableSync: دارای مقادیر on یا off می باشد و به این معنی می باشد که هر بار write های انجام شده را با فایل مربوطه در دیسک sync نماید. این عمل در تعداد عملیات های زیاد نوشتن میتواند کارایی سیستم را کاهش دهد.</li>
</ul>
<h2>Forwarding rules:</h2>
<p>همانطور که پیش تر اشاره شد، میتوان لاگ ها را در سروری مرکزی نیز ذخیره نمود. برای این کار علاوه بر این که سرور مبدا می بایست پیام ها را به سرور مقصد ارسال کند، می بایست سرور مقصد برای پذیرش لاگ از سایر سرویس ها پیکربندی شده باشد. در سمت ارسال کننده یا مبدا، برای ارسال  پیام ها به سروری دیگر، یابد از forwarding rule  ها استفاده نمود. میتوان برای پیام های مختلف، Severity های مختف rule  های متنوعی ایجاد نمود.</p>
<p>در زیر یک نمونه از forwarding rule ها آورده شده است. باید توجه داشت که کل مجموعه زیر به عنوان یک rule  درنظر گرفته می شود. در صورتی که قصد داشته باشیم rule  های بیشتری ایجاد نمائیم باید کل بلاک زیر مجددا در فایل کانفیگ تکرار شوند.</p>
<pre class="line-numbers language-markup code-toolbar"><code class=" language-markup">$ActionQueueFileName fwhamed1 
$ActionQueueMaxDiskSpace 1g   
$ActionQueueSaveOnShutdown on 
$ActionQueueType LinkedList   
$ActionResumeRetryCount -1    
*.* @@remote-host:514</code></pre>
<div class="toolbar">
<div class="toolbar-item"><a>Copy</a></div>
</div>
<p>با ایجاد این بلاک فایلی در دیسک برای spool کردن یا نگهداری موقت پیام ها در دیسک ایجاد میشود. در صورتی که سرور مقصد از دسترس خارج شود، پیام ها در دیسک و در فایل اشاره شده ذخیره می شوند وپس از این که سرور مجددا در دسترس قرار گرفت، پیام های داخل این فایل برای سرور دریافت کننده ارسال خواهند شد. عملکرد پارامتر های بالا نیز به شرح زیر می باشد.</p>
<ul>
<li>ActionQueueFileName: نامی یکتا برای فایل spool متعلق به این rule می باشد.</li>
<li>ActionQueueMaxDiskSpace: جداکثر فضایی که فایل spool میتواند در دیسک اشغال کند را مشخص می نماید.</li>
<li>ActionQueueSaveOnShutdown: در هنگام shutdown پیام ها را جهت ارسال در آینده در دیسک ذخیره کند.</li>
<li>ActionQueueType: متد و الگورتیم مدیریت صف پیام ها را مشخص میکند.</li>
<li>ActionResumeRetryCount: بیانگر این است که در صورتی که سرور مقصد از دسترس خارج شد، چه میزان تلاش برای اتصال به آن صورت پذیرد. مقدار -1 به معنی بی نهایت می باشد.</li>
</ul>
<h2>سخن آخر:</h2>
<p>در سیستم های کامپیوتری فعالیت ها و اتفاقات زیادی در حال رخ دادن هستند. اطلاعات گرد آوری شده از عملکرد سیستم عامل، عملکرد کاربران، عملکرد سرویس ها، اتصالات برقرار شده از طریق شبکه و … همه و همه میتوانندبیانگر وضعیتی از سیستم باشند. با استفاده از اطلاعاتی که از این طریق syslog جمع آوری می شود می توان علاوه بر آگاهی از وضعیت سرورها و سرویس ها در صورت مشاهده وضعیت نامتعارف براساس اطلاعات دریافتی اقدام متناسب را لحاظ کرد. همچنین میتوان برای ذخیره سازی سوابق، آنالیز و تحلیل و مهمتر از همه troubleshooting  سرویس ها نیز از داده های جمع آوری شده استفاده نمود.</p>
<p>&nbsp;</p>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://linux.vcenter.ir/syslog-service-in-linux/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>راه اندازی Multipath در لینوکس</title>
		<link>https://linux.vcenter.ir/launch-multipath-on-linux/</link>
					<comments>https://linux.vcenter.ir/launch-multipath-on-linux/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Thu, 03 Sep 2020 21:37:08 +0000</pubDate>
				<category><![CDATA[وبلاگ]]></category>
		<guid isPermaLink="false">http://linux.vcenter.ir/?p=87</guid>

					<description><![CDATA[راه اندازی Multipath در لینوکس آموزش قدم به قدم راه اندازی Multipath در Centos معرفی Multipath و آموزش راه اندازی آن Path چیست؟ path مسیر ارتباطی بین سرور و Storage  است که میتواند از طریق HBA یا کابل سرور را به storage متصل کند. در صورتی که به هر دلیلی مانند مشکل در San Switch، مشکل در [&#8230;]]]></description>
										<content:encoded><![CDATA[<h2>راه اندازی Multipath در لینوکس</h2>
<h2>آموزش قدم به قدم راه اندازی Multipath در Centos</h2>
<figure class="single-featured-image"><img loading="lazy" decoding="async" class="attachment-jannah-image-post size-jannah-image-post wp-post-image" src="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_605,h_470/https://maaleki.ir/wp-content/uploads/2020/06/Multipath_simple_example1-605x470.jpg" alt="Multipath_simple_example1" width="605" height="470" /></figure>
<div class="entry-content entry clearfix">
<p><strong>معرفی </strong><strong>Multipath و آموزش راه اندازی آن</strong></p>
<h2><strong>Path</strong><strong> چیست؟</strong></h2>
<p>path مسیر ارتباطی بین سرور و Storage  است که میتواند از طریق HBA یا کابل سرور را به storage متصل کند. در صورتی که به هر دلیلی مانند مشکل در San Switch، مشکل در کابل، مشکل شبکه ای و … مشکلی در عملکرد ارتباط برقرار شود، قطع شدن مسیر ارتباطی میتواند مشکلاتی را برای سرور و سریس دهی آن ایجاد کرده و یا کل عملکرد آن را مختل نماید.</p>
<p>در واقع ارتباط بین سرور و Storage آن هم از یک مسیر میتواند  گلوگاهی پر خطر در سرویس دهی و معماری سرویس باشد.  تصور کنید سرور دیتابیسی که دیسک آن بر روی SAN یا SDN قرار دارد. قطع شدن تنها راه ارتباطی آن به دیسک خود و عدم توانایی آن در خواندن و نوشتن داده ها میتواند سرویس دهی تمامی سرویس های وابسته به آن مجموعه را مختل کند.</p>
<p>&nbsp;</p>
<h2><a href="https://en.wikipedia.org/wiki/Linux_DM_Multipath"><strong>Multipath</strong></a><strong> چیست؟</strong></h2>
<p>با توجه به توضیحات بالا، جهت رفع این دست مشکلات معمولا بیش از یک مسیر ارتباطی بین سرور و Storage فراهم میگردد تا علاوه بر ایجاد redundancy  و بالا بردن throughput  در صورتی که یکی از مسیر ها به هر دلیلی دچار مشکل شد، عملکرد سیستم از طریق مسیر فرعی و بدون مشکل ادامه داشته باشد.</p>
<p>در لینوکس ابزاری بومی به نام DM- multipathing  وجود دارد که امکان معرفی چند مسیر برای ارتباط با Storage را فراهم  می سازد. به این ترتیب که مسیر های معرفی شده را با هم تجمیع کرده و هر LUN  متصل به سرور را به عنوان block device جدیدی در مسیر /dev/mapper  ایجاد می نماید.</p>
<h2><strong>اجزا </strong><strong>multipath</strong><strong>:</strong></h2>
<p>Multipath دارای چهار جز اصلی و به شرح زیر می باشد.</p>
<div class="table-is-responsive">
<table class=" aligncenter">
<tbody>
<tr>
<td>dm-multipath</td>
<td width="390">ماژولی در کرنل است که وظیفه تصمیم گیری در خصوص routing  مسیر ها را در حالت عادی و حالتی که یک یا چند مسیر دچار مشکل شده باشند را بر عهده دارد.</td>
</tr>
<tr>
<td>multipath</td>
<td width="390">دستوری در command line  است که برای پیکربندی، لیست کردن و یا مشاهده مسیر ها به کار می رود.</td>
</tr>
<tr>
<td>multipathd</td>
<td width="390">سرویسی است که مسیسر ها را دائما مانیتور کرده تا وجود قطعی در مسیری یا رفع مشکل در مسیر قطع شده، را متوجه شده و آن را به عنوان failed path و یا restored  علامت گذاری می کند.</td>
</tr>
<tr>
<td>kpartx</td>
<td width="390">دستوری است که به صورت خودکار هنگامی که دستور multipath  اجرا میشود فراخوانی شده، و وظیفه ایجاد device mapper  را برای LUN های  multipath  بر عهده دارد.</td>
</tr>
</tbody>
</table>
</div>
<h2><strong>مشخصات سرور های مورد استفاده:</strong></h2>
<p>برای پیاده سازی multipath از دو سرو با مشخصات زیر استفاده شده است که در آن سرور یک به عنوان storage server و  server دوم نقش کلاینت را در این سناریو ایفا می کنند.</p>
<pre class="line-numbers language-markup code-toolbar"><code class=" language-markup">Server1: 	
CentOS Linux release 7.4.1708 (Core) 
IP: 192.168.200.200
Server2: 	
CentOS Linux release 7.4.1708 (Core) 
IP: 192.168.200.201</code></pre>
<div class="toolbar">
<div class="toolbar-item"><a>Copy</a></div>
</div>
<h2><strong>نیازمندی های انجام پروژه:</strong></h2>
<p>در این پروژه جهت شبیه سازی شرایط مورد نظر نیاز به وجود حداقل یک LUN متصل به سرور است. با توجه محیط آزمایشگاهی و نبود SAN، از طریق Server1  نسبت به ایجاد یک iSCSI Target  و ایجاد LUN و معرفی ان به Server2 اقدام میکنیم و در نهایت با افزودن دو کارت شبکه دیگر به Server1 پیکربندی Multipath و تست شرایط قطعی را بررسی خواهیم کرد.</p>
<h2><strong>پیاده سازی </strong><strong>iSCSI</strong><strong>:</strong></h2>
<h3><a name="_Toc28868254"></a><strong>تنظیمات سمت سرور (</strong><strong>iSCSI target</strong><strong>):</strong></h3>
<p>&nbsp;</p>
<p>برای ییاده سازی ISCSI در لینوکس از ابزاری به نام target  استفاده می کنیم که این امکان را برای ما فراهم میکند تا یک یا چند دیسک از سرور را از طریق پروتکل iSCSI در شبکه به صورت block device  به  اشتراک گذاشته و یک Storage متمرکز ایجاد نمائیم. به سروری که  iSCSI در آن اجرا می شود و دیسک ها آن به شاتراک گذاشته می شود، iSCSI target  و به کلاینت هایی که به سرور متصل می شوند و از دیسک ها استفاده میکنند، iSCSI initiator  گفته می شود.  در مستند با توجه به موضوع اصلی آن توضیحات ارائه شده در خصوص پیکربندی iSCSI به صورت خلاصه بیان خواهد شد.</p>
<p>مرحل پیاده سازی iSCSI target  در لینوکس به شرح زیر می باشد.</p>
<p>در ابتدا با دستور زیر targetcli را در Server1 نصب مینمائیم.</p>
<pre class="line-numbers language-bash code-toolbar"><code class=" language-bash">Server1~]#  yum install targetcli</code></pre>
<div class="toolbar">
<div class="toolbar-item"><a>Copy</a></div>
</div>
<p><a href="http://maaleki.ir/wp-content/uploads/2020/06/yum-target.jpg"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-1188" src="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_624,h_172/http://maaleki.ir/wp-content/uploads/2020/06/yum-target.jpg" sizes="(max-width: 624px) 100vw, 624px" srcset="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_624/https://maaleki.ir/wp-content/uploads/2020/06/yum-target.jpg 624w, https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_300/https://maaleki.ir/wp-content/uploads/2020/06/yum-target-300x83.jpg 300w" alt="yum target" width="624" height="172" /></a></p>
<p>بعد از نصب، با دستورات زیر به ترتیب ابتدا سرویس را برای این که در هر بار بوت سیستم عامل شروع به کار کند فعال میکنیم سپس سرویس را جهت ادامه کار Start  میکنیم.</p>
<pre class="line-numbers language-bash code-toolbar"><code class=" language-bash">Server1~]#  systemctl enable target
Server1~]#  systemctl start target</code></pre>
<div class="toolbar">
<div class="toolbar-item"><a>Copy</a></div>
</div>
<p>بعد از شروع به کار سرویس با دستور targetcli وارد محیط prompt این سرویس میشویم.</p>
<pre class="line-numbers language-bash code-toolbar"><code class=" language-bash">Server1~]# targetcli</code></pre>
<div class="toolbar">
<div class="toolbar-item"><a>Copy</a></div>
</div>
<p>در محیط prompt با دستور ls لیستی از اطلاعات موجود و پیکربندی های فعلی را میتوانیم ببینیم.  که در آن تمامی دیوایس ها در قسمت backstore نمایش داده خواهند شد که میتواند یکی از تایپ های block،  fileio، pscsi و ramdisk باشد. در قسمت target  لیستی از iSCSI target  های ایجاد شده داده خواهد شد.</p>
<p><a href="http://maaleki.ir/wp-content/uploads/2020/06/targetcli-menu.jpg"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-1189" src="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_624,h_147/http://maaleki.ir/wp-content/uploads/2020/06/targetcli-menu.jpg" sizes="(max-width: 624px) 100vw, 624px" srcset="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_624/https://maaleki.ir/wp-content/uploads/2020/06/targetcli-menu.jpg 624w, https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_300/https://maaleki.ir/wp-content/uploads/2020/06/targetcli-menu-300x71.jpg 300w" alt="targetcli menu" width="624" height="147" /></a></p>
<p>در اینجا از پیش دو دیسک sdb و  sdc یک physical volume ایجاد کرده و در نهایت یک lvm با حجمی برابر با حجم هر دو دیسک ایجاد کرده ایم را  به عنوان iSCSI target  معرفی نمائیم. اما ابتدا لازم است وارد قسمت block  شویم لذا مراحل ما به صورت زیر خواهد بود.</p>
<pre class="line-numbers language-bash code-toolbar"><code class=" language-bash">/&gt; cd backstores/block 
/backstores/block&gt; create LUN00 /dev/isc-co-vg/isc-co-lv</code></pre>
<div class="toolbar">
<div class="toolbar-item"><a>Copy</a></div>
</div>
<p><a href="http://maaleki.ir/wp-content/uploads/2020/06/create-lunn001.jpg"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-1190" src="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_624,h_95/http://maaleki.ir/wp-content/uploads/2020/06/create-lunn001.jpg" sizes="(max-width: 624px) 100vw, 624px" srcset="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_624/https://maaleki.ir/wp-content/uploads/2020/06/create-lunn001.jpg 624w, https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_300/https://maaleki.ir/wp-content/uploads/2020/06/create-lunn001-300x46.jpg 300w" alt="create lunn001" width="624" height="95" /></a></p>
<p>با دستور ls میتواینم ببینیم که block device ما ایجاد شده است.</p>
<p><a href="http://maaleki.ir/wp-content/uploads/2020/06/block-ls.jpg"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-1191" src="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_624,h_53/http://maaleki.ir/wp-content/uploads/2020/06/block-ls.jpg" sizes="(max-width: 624px) 100vw, 624px" srcset="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_624/https://maaleki.ir/wp-content/uploads/2020/06/block-ls.jpg 624w, https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_300/https://maaleki.ir/wp-content/uploads/2020/06/block-ls-300x25.jpg 300w" alt="block ls" width="624" height="53" /></a></p>
<p>حال برای ایجاد target مورد نظر ابتدا با دستور cd /iscsi وارد مسیر iscsi  میشویم سپس با دستور زیر iSCSI target مورد نظر را ایجاد میکنیم.</p>
<pre class="line-numbers language-bash code-toolbar"><code class=" language-bash">cd /iscsi
/iscsi&gt; create iqn.2020-01.com.test:server</code></pre>
<div class="toolbar">
<div class="toolbar-item"><a>Copy</a></div>
</div>
<p><a href="http://maaleki.ir/wp-content/uploads/2020/06/create-iqn.jpg"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-1192" src="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_624,h_76/http://maaleki.ir/wp-content/uploads/2020/06/create-iqn.jpg" sizes="(max-width: 624px) 100vw, 624px" srcset="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_624/https://maaleki.ir/wp-content/uploads/2020/06/create-iqn.jpg 624w, https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_300/https://maaleki.ir/wp-content/uploads/2020/06/create-iqn-300x37.jpg 300w" alt="create iqn" width="624" height="76" /></a></p>
<p>بعد از ایجاد iSCSI target برای آن port group با نام tpg1 ایجاد می شود که داخل آن میتوانیم به صورت زیر دسترسی به Target را فقط برای کلاینت های مجاز فراهم کنیم.</p>
<pre class="line-numbers language-bash code-toolbar"><code class=" language-bash">cd /iscsi/iqn.2020-01.com.test:server/tpg1/acls
create iqn.2020-01.com.test:clients</code></pre>
<div class="toolbar">
<div class="toolbar-item"><a>Copy</a></div>
</div>
<p><a href="http://maaleki.ir/wp-content/uploads/2020/06/create-iqn-client.jpg"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-1193" src="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_624,h_34/http://maaleki.ir/wp-content/uploads/2020/06/create-iqn-client.jpg" sizes="(max-width: 624px) 100vw, 624px" srcset="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_624/https://maaleki.ir/wp-content/uploads/2020/06/create-iqn-client.jpg 624w, https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_300/https://maaleki.ir/wp-content/uploads/2020/06/create-iqn-client-300x16.jpg 300w" alt="create iqn client" width="624" height="34" /></a></p>
<p>در انتها نیاز است که LUN مورد نظر را به target  ایجاد شده اختصاص دهیم. برای این کار وارد مسیر lun در target  رفته و دستور زیر را وارد می نمائیم.</p>
<pre class="line-numbers language-bash code-toolbar"><code class=" language-bash">cd /iscsi/iqn.2020-01.com.test:server/tpg1/luns 
create /backstores/block/LUN00</code></pre>
<div class="toolbar">
<div class="toolbar-item"><a>Copy</a></div>
</div>
<p><a href="http://maaleki.ir/wp-content/uploads/2020/06/create-block-lun00.jpg"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-1194" src="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_624,h_69/http://maaleki.ir/wp-content/uploads/2020/06/create-block-lun00.jpg" sizes="(max-width: 624px) 100vw, 624px" srcset="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_624/https://maaleki.ir/wp-content/uploads/2020/06/create-block-lun00.jpg 624w, https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_300/https://maaleki.ir/wp-content/uploads/2020/06/create-block-lun00-300x33.jpg 300w" alt="create block lun00" width="624" height="69" /></a></p>
<p>در نهایت با بازگشت به صفحه اصلی و زدن دستور ls پیکربندی نهایی را خواهیم دید. همانطور که در شکل زیر قابل مشاهده است، LUN ایجاد شده در مرال قبل به acl  مرتبط به clients به درستی map  شده است.</p>
<p><a href="http://maaleki.ir/wp-content/uploads/2020/06/ls-after-all-configuration.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-1195" src="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_624,h_182/http://maaleki.ir/wp-content/uploads/2020/06/ls-after-all-configuration.png" sizes="(max-width: 624px) 100vw, 624px" srcset="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_624/https://maaleki.ir/wp-content/uploads/2020/06/ls-after-all-configuration.png 624w, https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_300/https://maaleki.ir/wp-content/uploads/2020/06/ls-after-all-configuration-300x88.png 300w" alt="ls after all configuration" width="624" height="182" /></a></p>
<p>در نهایت با استفاده از دستور saveconfig تنظمیات انجام شده را ذخیره میکنیم. البته در صورت استفاده از دستور exit  به صورت اتوماتیک آخرین اغییرات اعمال شده ذخیره خواهد شد اما همچنان می توان با استفاده از دستور saveconfig  از ذخیره شدن تنظیمات مطمئن شد.  پیکربندی های انجام شده در فایل /etc/target/saveconfig.json ذخیره خواهد شد.</p>
<p>سرویس target  را با استفاده از دستور زیر restart  میکنیم.</p>
<pre class="line-numbers language-bash code-toolbar"><code class=" language-bash">Systemctl restart target</code></pre>
<div class="toolbar">
<div class="toolbar-item"><a>Copy</a></div>
</div>
<p>به عنوان آخرین قدم پورت 3260 را در فایروایل نیز باز میکنیم.</p>
<pre class="line-numbers language-bash code-toolbar"><code class=" language-bash">firewall-cmd --permanent --add-port=3260/tcp
firewall-cmd --reload</code></pre>
<div class="toolbar">
<div class="toolbar-item"><a>Copy</a></div>
</div>
<h3><strong>تنظیمات سمت کلاینت (</strong><strong>iSCSI initiator</strong><strong>):</strong></h3>
<p>در سمت کلاینت ابتدا با دستور زیر iscsi-initiator-utils را نصب میکنیم.</p>
<pre class="line-numbers language-bash code-toolbar"><code class=" language-bash">yum install iscsi-initiator-utils</code></pre>
<div class="toolbar">
<div class="toolbar-item"><a>Copy</a></div>
</div>
<p>بعد از نصب، وارد مسیر /etc/iscsi/initiatorname.iscsi شده و iqn ایجاد شده برای clients را در آن به صورت زیر وارد میکنیم.</p>
<pre class="line-numbers language-bash code-toolbar"><code class=" language-bash">InitiatorName=iqn.2020-01.com.test:clients</code></pre>
<div class="toolbar">
<div class="toolbar-item"><a>Copy</a></div>
</div>
<p><a href="http://maaleki.ir/wp-content/uploads/2020/06/cat-initiator-iscsi.jpg"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-1196" src="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_624,h_37/http://maaleki.ir/wp-content/uploads/2020/06/cat-initiator-iscsi.jpg" sizes="(max-width: 624px) 100vw, 624px" srcset="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_624/https://maaleki.ir/wp-content/uploads/2020/06/cat-initiator-iscsi.jpg 624w, https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_300/https://maaleki.ir/wp-content/uploads/2020/06/cat-initiator-iscsi-300x18.jpg 300w" alt="cat initiator iscsi" width="624" height="37" /></a></p>
<p>سپس سرویس های iscsi  و iscsid را Enable و start میکنیم.</p>
<pre class="line-numbers language-bash code-toolbar"><code class=" language-bash">systemctl enable iscsi iscsid
systemctl start iscsi iscsid</code></pre>
<div class="toolbar">
<div class="toolbar-item"><a>Copy</a></div>
</div>
<p>سپس با دستور زیر از صحت ارتباط اطمینان برقرار میکنیم.</p>
<pre class="line-numbers language-bash code-toolbar"><code class=" language-bash">iscsiadm --mode discovery --type sendtargets --portal 192.168.200.200:3260</code></pre>
<div class="toolbar">
<div class="toolbar-item"><a>Copy</a></div>
</div>
<p><a href="http://maaleki.ir/wp-content/uploads/2020/06/iscsiadm.jpg"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-1197" src="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_624,h_24/http://maaleki.ir/wp-content/uploads/2020/06/iscsiadm.jpg" sizes="(max-width: 624px) 100vw, 624px" srcset="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_624/https://maaleki.ir/wp-content/uploads/2020/06/iscsiadm.jpg 624w, https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_300/https://maaleki.ir/wp-content/uploads/2020/06/iscsiadm-300x12.jpg 300w" alt="iscsiadm" width="624" height="24" /></a></p>
<p>در صورتی که مشکلی در ارتباط و پیکربندی وجود نداشت، با دستور زیر به iSCSI target معرفی شده login میکنیم.</p>
<pre class="line-numbers language-bash code-toolbar"><code class=" language-bash">iscsiadm -m node -T iqn.2020-01.com.test:server -p 192.168.200.200 –l</code></pre>
<div class="toolbar">
<div class="toolbar-item"><a>Copy</a></div>
</div>
<p><a href="http://maaleki.ir/wp-content/uploads/2020/06/iscsiadm-m-node.jpg"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-1198" src="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_624,h_37/http://maaleki.ir/wp-content/uploads/2020/06/iscsiadm-m-node.jpg" sizes="(max-width: 624px) 100vw, 624px" srcset="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_624/https://maaleki.ir/wp-content/uploads/2020/06/iscsiadm-m-node.jpg 624w, https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_300/https://maaleki.ir/wp-content/uploads/2020/06/iscsiadm-m-node-300x18.jpg 300w" alt="iscsiadm-m node" width="624" height="37" /></a></p>
<p>در نهایت با زدن دستور  های زیر میبینیم که دیسک جدید به ماشین اضافه شده است و میتوان از آن استفاده کرد.</p>
<pre class="line-numbers language-bash code-toolbar"><code class=" language-bash">fdisk –l
pvs –a –o +dev_size</code></pre>
<div class="toolbar">
<div class="toolbar-item"><a>Copy</a></div>
</div>
<p><a href="http://maaleki.ir/wp-content/uploads/2020/06/psw-dev_size.jpg"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-1199" src="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_624,h_107/http://maaleki.ir/wp-content/uploads/2020/06/psw-dev_size.jpg" sizes="(max-width: 624px) 100vw, 624px" srcset="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_624/https://maaleki.ir/wp-content/uploads/2020/06/psw-dev_size.jpg 624w, https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_300/https://maaleki.ir/wp-content/uploads/2020/06/psw-dev_size-300x51.jpg 300w" alt="psw dev_size" width="624" height="107" /></a></p>
<p>در صورتی که قصد داشته باشیم ارتباط را قطع نمایئم میتوانیم از درستور قبل با option –u استفاده نمائیم.</p>
<pre class="line-numbers language-bash code-toolbar"><code class=" language-bash">iscsiadm -m node -T iqn.2020-01.com.test:server -p 192.168.200.200 –u</code></pre>
<div class="toolbar">
<div class="toolbar-item"><a>Copy</a></div>
</div>
<p><a href="http://maaleki.ir/wp-content/uploads/2020/06/iscsiadm-disconnect.jpg"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-1200" src="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_624,h_38/http://maaleki.ir/wp-content/uploads/2020/06/iscsiadm-disconnect.jpg" sizes="(max-width: 624px) 100vw, 624px" srcset="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_624/https://maaleki.ir/wp-content/uploads/2020/06/iscsiadm-disconnect.jpg 624w, https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_300/https://maaleki.ir/wp-content/uploads/2020/06/iscsiadm-disconnect-300x18.jpg 300w" alt="iscsiadm disconnect" width="624" height="38" /></a></p>
<p>در نهایت با معرفی LUN مورد نظر به Server2 به نحوه پیکربندی multipath میپردازیم.</p>
<h2>پیکربندی multipath:</h2>
<p>قبل از راه اندازی multipath، یک نیازمندی دیگر باقی است، اضافه کردن دو اینترفیس جدید به Server1. با توجه به عدم وجود پیچیدگی در نحوه اضافه کردن اینترفیس جدید، از ارائه توضیحات مربوطه صرف نظر می کنیم. در نهایت وضعیت سرور ما بعد از اضافه کردن سا اینترفیس به صورت زیر خواهد شد.</p>
<p><a href="http://maaleki.ir/wp-content/uploads/2020/06/interfaces.jpg"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-1201" src="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_624,h_37/http://maaleki.ir/wp-content/uploads/2020/06/interfaces.jpg" sizes="(max-width: 624px) 100vw, 624px" srcset="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_624/https://maaleki.ir/wp-content/uploads/2020/06/interfaces.jpg 624w, https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_300/https://maaleki.ir/wp-content/uploads/2020/06/interfaces-300x18.jpg 300w" alt="" width="624" height="37" /></a></p>
<p>بعد از اضافه شدن اینترفیس ها از این که امکان دسترسی به LUN ایجاد شده در مرحله قبل از طریق هر سه اینترفیس Servcer1 فراهم است، اطمینان حاصل میکنیم.</p>
<p><a href="http://maaleki.ir/wp-content/uploads/2020/06/iscsiadm-sendtargets.jpg"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-1202" src="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_624,h_78/http://maaleki.ir/wp-content/uploads/2020/06/iscsiadm-sendtargets.jpg" sizes="(max-width: 624px) 100vw, 624px" srcset="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_624/https://maaleki.ir/wp-content/uploads/2020/06/iscsiadm-sendtargets.jpg 624w, https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_300/https://maaleki.ir/wp-content/uploads/2020/06/iscsiadm-sendtargets-300x38.jpg 300w" alt="iscsiadm sendtargets" width="624" height="78" /></a></p>
<p>سپس دستور iscsiadm را برای سایر اینترفیس های اضافه شده نیز اجرا میکنیم تا از طریق دو IP جدید نیز به LUN مورد نظر login کنیم.</p>
<pre class="line-numbers language-bash code-toolbar"><code class=" language-bash">[root@server2 ~]# iscsiadm -m node -T iqn.2020-01.com.test:server -p 192.168.200.199 -l
[root@server2 ~]# iscsiadm -m node -T iqn.2020-01.com.test:server -p 192.168.200.198 -l</code></pre>
<div class="toolbar">
<div class="toolbar-item"><a>Copy</a></div>
</div>
<p><a href="http://maaleki.ir/wp-content/uploads/2020/06/iscsiadm-on-server-2.jpg"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-1203" src="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_624,h_64/http://maaleki.ir/wp-content/uploads/2020/06/iscsiadm-on-server-2.jpg" sizes="(max-width: 624px) 100vw, 624px" srcset="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_624/https://maaleki.ir/wp-content/uploads/2020/06/iscsiadm-on-server-2.jpg 624w, https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_300/https://maaleki.ir/wp-content/uploads/2020/06/iscsiadm-on-server-2-300x31.jpg 300w" alt="iscsiadm on server 2" width="624" height="64" /></a></p>
<p>بعد از انجام عملیات فوق در صورتی که وضعیت دیسک های متصل به سرور را بررسی کنیم، خواهیم دید که LUN معرفی شده به Server2 با توجه به این که از سه مسیر مخلف به آن معرفی شده است، به عنوان سه دیسک شناخته شده است.</p>
<p><a href="http://maaleki.ir/wp-content/uploads/2020/06/pvs-dev_size-server2.jpg"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-1204" src="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_624,h_167/http://maaleki.ir/wp-content/uploads/2020/06/pvs-dev_size-server2.jpg" sizes="(max-width: 624px) 100vw, 624px" srcset="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_624/https://maaleki.ir/wp-content/uploads/2020/06/pvs-dev_size-server2.jpg 624w, https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_300/https://maaleki.ir/wp-content/uploads/2020/06/pvs-dev_size-server2-300x80.jpg 300w" alt="pvs dev_size server2" width="624" height="167" /></a></p>
<p>حال که دیسک از سه مسیر قابل مشاهده و دسترسی است، به سراغ پیکربندی multipath خواهیم رفت. Multipath  در لینوکس با استفاده از device-mapper-mulitpath یا dm-multipath انجام می شود و همانطور که گفته شد به صورت بومی بر روی سرور های لینوکسی وجود دارد. با این حال ّرای اطمینان از وجود این package میتوانیم از دستور زیر استفاده کنیم.</p>
<pre class="line-numbers language-bash code-toolbar"><code class=" language-bash">rpm -qa |grep multipath</code></pre>
<div class="toolbar">
<div class="toolbar-item"><a>Copy</a></div>
</div>
<p>در صورتی که این package نصب نبود، با دستور زیر نسبت به نصب آن اقدام میکنیم.</p>
<pre class="line-numbers language-bash code-toolbar"><code class=" language-bash">yum install device-mapper-multipath</code></pre>
<div class="toolbar">
<div class="toolbar-item"><a>Copy</a></div>
</div>
<p>سپس سرویس را برای راه اندازی خودکار در هر بار بوت سیستم عامل فعال و راه اندازی میکنیم.</p>
<pre class="line-numbers language-markup code-toolbar"><code class=" language-markup">systemctl enable multipathd
systemctl start multipathd</code></pre>
<div class="toolbar">
<div class="toolbar-item"><a>Copy</a></div>
</div>
<p>بعد از شروع سرویس، فایل پیکربندی را با دستور زیر ایجاد میکنیم.</p>
<pre class="line-numbers language-bash code-toolbar"><code class=" language-bash">mpathconf --enable --user_friendly_names n</code></pre>
<div class="toolbar">
<div class="toolbar-item"><a>Copy</a></div>
</div>
<p>درصورتی که user_freindly_names برابر با y قرار داده شود، در هنگام نمایش مشخصات دیسک ها و مسیر های آنها از alias آن ها برای نمایش به جای WWID  استفاده خواهد شد. علت استفاده از WWID این است که این ID برای هر دیسک منحصر به فرد بوده و قابل تغییر نیست در صورتی که نام میتواند به هر دلیلی دچار تغییر شود. در این صورت ممکن است این تغییر نام مشکلاتی درعملکرد و شناسایی تنظیمات مبتنی بر نام ایجاد کند.  در شکل زیر، در دستور اول این گزینه برابر با no و در دستور دوم مقدار آن برابر با yse  می باشد.  تفاوت نمایش با رنگ زرد مشخص شده است.</p>
<p><a href="http://maaleki.ir/wp-content/uploads/2020/06/multipath-ll.jpg"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-1205" src="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_624,h_244/http://maaleki.ir/wp-content/uploads/2020/06/multipath-ll.jpg" sizes="(max-width: 624px) 100vw, 624px" srcset="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_624/https://maaleki.ir/wp-content/uploads/2020/06/multipath-ll.jpg 624w, https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_300/https://maaleki.ir/wp-content/uploads/2020/06/multipath-ll-300x117.jpg 300w" alt="multipath-ll" width="624" height="244" /></a></p>
<p>لازم به ذکر است درصورتی که WWID ای به نامی map شود، اطلاعات آن در مسیر /etc/multipath/bindings ذخیره خواهد ش</p>
<p>فایل پیکربندی ایجاد شده دارای چند بخش می باشد که در ادامه به معرفی بخش ها آن خواهیم پرداخت:</p>
<ul>
<li>defaults</li>
<li>blacklist</li>
<li>multipath</li>
<li>devices</li>
</ul>
<h2><strong>defaults</strong><strong>:</strong><strong> </strong></h2>
<p>تنظیماتی است که به صورت پیش فرض برروی تمامی Device ها اعمال می شود. به عنوان نمونه در تنظیمات زیر، از round-robin  برای انتخاب مسیر استفاده خواهد شد، friendly name  برای همه yes خواهد بود مگر این که در قیمت devices و  multipath برای Device مشخصی مقدار جداگانه ای برای آن تغریف شود.</p>
<pre class="line-numbers language-markup code-toolbar"><code class=" language-markup">defaults {
        path_selector           "round-robin 0"
        user_friendly_names     yes
}</code></pre>
<div class="toolbar">
<div class="toolbar-item"><a>Copy</a></div>
</div>
<p>برخی از پارامتر های قابل استفاده در این قسمت به قرار زیر است:</p>
<div class="table-is-responsive">
<table>
<tbody>
<tr>
<td>polling_interval</td>
<td width="390">بیانگر زمان چک کردن وضعیت بین path ها بر حسب ثانیه میباشد.</td>
</tr>
<tr>
<td>multipath_dir</td>
<td width="390">بیانگر نحوه ایجاد Device است. درصورتی که برابر با yes  باشد، به ازای هر مسیری که black list  نشده باشد اقدام به ایجاد device برای آن path  نخواهد کرد مگر این که یا کاربر سرویس رو force کند device ی از یک path  ایجاد شود، یا قبلا آن path ایجاده شده بوده و WWID آن ذحیره شده باشد یا حداقل دو path به Device موجود باشد.</td>
</tr>
<tr>
<td>find_multipaths</td>
<td width="390">بیانگر نحوه ایجاد Device است. درصورتی که برابر با yes  باشد، به ازای هر مسیری که black list  نشده باشد اقدام به ایجاد device برای آن path  نخواهد کرد مگر این که یا کاربر سرویس رو force کند device ی از یک path  ایجاد شود، یا قبلا آن path ایجاده شده بوده و WWID آن ذحیره شده باشد یا حداقل دو path به Device موجود باشد.</td>
</tr>
<tr>
<td>path_selector</td>
<td>مشخص کننده این است که برای عملیات I/O بعدی از چه الگوریتمی برای انتخاب مسیر استفاده کند. که شامل سه الگوریتم است.<br />
round-robin 0: از طریق ایجاد یه حلقه بین مسیر های موجود هر بار یکی را انتخاب میکند. به عنوان نمونه عملیات اول به مسیر اول، عملیات دوم به مسیر دوم، عملیات سوم به مسیر سوم هدایت میشوند. برای عملیات های بعدی نیز به ترتیب مسیر ها انتخاب و عملیات های I/O به ان ارسال میشوند.queue-length 0: ارسال عملیات های I/O بر این اساس انجام میشود که کدام مسیر کمتری I/O به آن ارسال شده است.<br />
service-time 0: ارسال عملیات I/O بر اساس مدت زمان سرویس دهی هر مسیر انتخاب می شود که بر اساس میزان I/O بر throughput مسیر محاسبه می شود.مقدار پیش فرض برای این پارامتر Service_time م ی باشد.</td>
</tr>
<tr>
<td>path_checker</td>
<td>بیانگر متدی است که وضعیت مسیر جهت تشخیص وضعیت آن به کار گرفته می شود. مقدار پیش فرض این پارامتر directioاست که اولین سکتور از path را با به صورت direct I/O میخواند. درصورت که موفق باشد، مسیر در دسترس و در غیر این صورت مسیر قطع شده در نظر گرفته می شود.</td>
</tr>
<tr>
<td>no_path_retry</td>
<td>تعداد دفعاتی است که سیستم سعی میکند از یک مسیر fail شده استفاده کند. مقدار پیش فرض این پارامتر برابر با صفر است.</td>
</tr>
<tr>
<td>user_friendly_names</td>
<td>در صورت yes بودن از alias Device برای نمایش آن استفاده میکند. در غیر این صورت تنها WWID آن استفاده خواهد شد.</td>
</tr>
</tbody>
</table>
</div>
<h2><strong>blacklist:</strong></h2>
<p>در این قسمت میتوان Device ها را از فرایند multipath خارج یا black list کرد. برای black list  کردن Device ها میتوان از WWID، devnode (device name)، vendor، product، property های device و همچنین بر اساس device type  استفاده کرد.</p>
<p>به عنوان نمونه:</p>
<p>Black list  با استفاده از WWID</p>
<pre class="line-numbers language-bash code-toolbar"><code class=" language-bash">lacklist {
       wwid 26353900f0264456456
}</code></pre>
<div class="toolbar">
<div class="toolbar-item"><a>Copy</a></div>
</div>
<p>Black list  با استفاده ازdevnode</p>
<pre class="line-numbers language-markup code-toolbar"><code class=" language-markup">lacklist {
  devnode "^sd[a-z]"
}</code></pre>
<div class="toolbar">
<div class="toolbar-item"><a>Copy</a></div>
</div>
<p>Black list  با استفاده از vendor  و product</p>
<pre class="line-numbers language-markup code-toolbar"><code class=" language-markup">blacklist {
       device {
               vendor  "HP"
               product "*"
      }
}</code></pre>
<div class="toolbar">
<div class="toolbar-item"><a>Copy</a></div>
</div>
<h2><strong>Multipaths</strong>:</h2>
<p>در این قسمت میتوانیم به تفکیک برای هر Device   تنظیمات بخصوص آن را جداگانه معرفی نمایئم. تنظیماتی که در این قسمت معرفی می شوند، بر تنظیماتی که در قسمت Devices و defaults مشخص شده اند overwrite خواهند شد. پارامتر هایی که میتوان در این قسمت استفاده کرد همانند پارامتر های دو قسمت قبل است. یک نمونه از این تنظیمات به صورت زیر است.</p>
<pre class="line-numbers language-markup code-toolbar"><code class=" language-markup">multipaths {
       multipath {
              wwid                  3600508b40000775650000000b0000
              alias                 server1
              path_selector         "round-robin 0"
              no_path_retry         5
		}
	}</code></pre>
<div class="toolbar">
<div class="toolbar-item"><a>Copy</a></div>
</div>
<h2><strong>devices</strong>:</h2>
<p>درصورتی که Storage controller ی در لیست تجهیزات شناخته شده multipath نباشد یا بخواهیم Attribute خاصی از آن را با مقدار مشخصی مقدار دهی کنیم، میتوانیم از طریق این قسمت آن را به سیستم معرفی کنیم. برای مشاهده vendor های پشتیبانی شده از دستور زیر استفاده میکنیم.</p>
<pre class="line-numbers language-bash code-toolbar"><code class=" language-bash">multipath –t</code></pre>
<div class="toolbar">
<div class="toolbar-item"><a>Copy</a></div>
</div>
<p>در ادامه بعد از آشنایی اولیه با پارامتر ها و اجزاری فایل پیکربندی این سرویس، فایل پیکربندی را با تنظیماتی ساده و به شکل زیر تغییر می دهیم و سرویس را مجددا راه اندازی میکنیم.</p>
<p><a href="http://maaleki.ir/wp-content/uploads/2020/06/multipath-conf.jpg"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-1208" src="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_624,h_279/http://maaleki.ir/wp-content/uploads/2020/06/multipath-conf.jpg" sizes="(max-width: 624px) 100vw, 624px" srcset="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_624/https://maaleki.ir/wp-content/uploads/2020/06/multipath-conf.jpg 624w, https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_300/https://maaleki.ir/wp-content/uploads/2020/06/multipath-conf-300x134.jpg 300w" alt="multipath-conf" width="624" height="279" /></a></p>
<p>بعد از راه اندازی سرویس با زدن دستور multipath –ll وضعیت دسترسی به دیسک را مشاهده خواهیم کرد. در تصویر مشخصات دیسک به همراه نام انتخاب شده برای آن و وضعیت مسیر ها  نمایش داده شده است. همانطور که مشاهده میشود وضعیت دیسک ها Active  و آماده فعالیت نمایش داده می شود.</p>
<p><a href="http://maaleki.ir/wp-content/uploads/2020/06/multipath-ll-server2.jpg"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-1209" src="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_624,h_141/http://maaleki.ir/wp-content/uploads/2020/06/multipath-ll-server2.jpg" sizes="(max-width: 624px) 100vw, 624px" srcset="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_624/https://maaleki.ir/wp-content/uploads/2020/06/multipath-ll-server2.jpg 624w, https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_300/https://maaleki.ir/wp-content/uploads/2020/06/multipath-ll-server2-300x68.jpg 300w" alt="multipath-ll server2" width="624" height="141" /></a></p>
<p>حال برای تست عملکرد یکی از اینترفیس های Server1 را قطع کرده سپس مجددا وضعیت را در server2 بررسی میکنیم.</p>
<p>همانطور که در شکل مشاهده می شود، یکی از مسیر ها به وضعیت failed و  faulty تغییر وضعیت داده شده است.</p>
<p><a href="http://maaleki.ir/wp-content/uploads/2020/06/multipath-ll-server2-faulty.jpg"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-1210" src="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_624,h_152/http://maaleki.ir/wp-content/uploads/2020/06/multipath-ll-server2-faulty.jpg" sizes="(max-width: 624px) 100vw, 624px" srcset="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_624/https://maaleki.ir/wp-content/uploads/2020/06/multipath-ll-server2-faulty.jpg 624w, https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_300/https://maaleki.ir/wp-content/uploads/2020/06/multipath-ll-server2-faulty-300x73.jpg 300w" alt="multipath-ll server2-faulty" width="624" height="152" /></a></p>
<p>وضعیت مسیر بر اساس مقدار polling interval  چک و بررسی خواهد شد و در صورت فعال شدن مجددا به صورت Active و ready تغییر وضعیت داده شده و مجددا مورد استفاده قرار میگیرد.</p>
<h2><strong>نتیجه گیری:</strong></h2>
<p>در محیط های عملیاتی می بایست برای حفظ دوام سرویس دهی و کیفیت آن، تلاش کرد مواردی که به هر دلیلی میتواند گلوکاهی برای سرویس دهی باشد حذف شده و یا ریسک آنها به حداقل ممکن رسانده شود. بروز مشکلاتی مانند قطعی ارتاط یک سرور به دلیل عدم وجود fault tolerance میتواند ضرر های هنگفت مالی و غیر مالی برای کسب و کارهای حساس ایجاد کند. در این مستند سعی شد تا معرفی multipath مکانیزمی برای تحمل خطا در سرور هایی که از دیسک های شبکه ای مانند SAN استفاده میکنند را مورد بررسی قرار گیرد. باید توجه داشت که پیکربندی این سرویس با در نظر گرفتن محیط آزمایشگاهی و سادگی آنها انجام شده است و در محیط ها عملیاتی میبایست پارامتر های مختلفی را جهت پیکربندی مناسب سرویس در نظر گرفت.</p>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://linux.vcenter.ir/launch-multipath-on-linux/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>آموزش کامل ساخت LVM در لینوکس</title>
		<link>https://linux.vcenter.ir/complete-tutorial-on-building-lvm-in-linux/</link>
					<comments>https://linux.vcenter.ir/complete-tutorial-on-building-lvm-in-linux/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Thu, 03 Sep 2020 21:26:42 +0000</pubDate>
				<category><![CDATA[وبلاگ]]></category>
		<category><![CDATA[آموزش کامل ساخت LVM در لینوکس]]></category>
		<guid isPermaLink="false">http://linux.vcenter.ir/?p=80</guid>

					<description><![CDATA[آموزش کامل ساخت LVM در لینوکس LVM چیست؟ ساخت دیسک  LVM یا Logical Volume Management  تکنیکی است پر کاربرد برای مدیریت فضای یک سرور که قابلیت های خوبی را در اختیار ادمین سرور قرار می دهد. یکی از این قابلیت ها انعطاف پذیری آن است که می توان پارتیشن ها را به صورت توزیع شده، [&#8230;]]]></description>
										<content:encoded><![CDATA[<h2>آموزش کامل ساخت LVM در لینوکس</h2>
<h3>LVM چیست؟</h3>
<p>ساخت دیسک  LVM یا Logical Volume Management  تکنیکی است پر کاربرد برای مدیریت فضای یک <a href="https://shop.vcenter.ir/product-category/servers">سرور</a> که قابلیت های خوبی را در اختیار ادمین سرور قرار می دهد. یکی از این قابلیت ها انعطاف پذیری آن است که می توان پارتیشن ها را به صورت توزیع شده، متمرکز یا ترکیبی از این دو را با استفاده از چندین دیسک ایجاد نمود که البته تاثیری در عملکرد سرور نیز نخواهد داشت. همچنین امکان اضافه کردن یا کم کردن فضای آن با کمترین ریسک نیز فراهم است.</p>
<p><a href="http://hamedmaaleki.ir/wp-content/uploads/2017/06/figure1.jpg"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-143" src="http://hamedmaaleki.ir/wp-content/uploads/2017/06/figure1.jpg" sizes="(max-width: 1076px) 100vw, 1076px" srcset="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_1076/https://maaleki.ir/wp-content/uploads/2017/06/figure1.jpg 1076w, https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_300/https://maaleki.ir/wp-content/uploads/2017/06/figure1-300x221.jpg 300w, https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_768/https://maaleki.ir/wp-content/uploads/2017/06/figure1-768x565.jpg 768w, https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_1024/https://maaleki.ir/wp-content/uploads/2017/06/figure1-1024x754.jpg 1024w" alt="" width="1076" height="792" /></a></p>
<p>همانطور که در شکل بالا ملاحظه میکنید ابتدا دیسک های فیزیکی به physical volume  یا همان PV  تبدیل می شوند و با استفاده از  Volume Group یا VG تمام PV ها به صورت یک گروه یکپارچه در خواهند آمد. در اینجا است که میتوان از دل این VG  اقدام به ساخت Volume Group  های مختلف نمود که می توان آنها را سایز آنها را افزایش یا کاهش داد بدون این که نیازی به فرمت کردن یا پارتیشن بندی مجدد دیسک داشته باشیم. همچنین از طریق این روش میتوان می توان I/O دیسک را نیز بهبود بخشید چرا که میتوان LV ساخت که در پشت آن چندین دیسک وجود دارد که درنتیجه عملیات خواندن و نوشت داده ها می تواند بین دیسک ها تقسیم گردد.</p>
<h4>به صورت خلاصه قابلیت های این تکنیک به شرح زیر است.</h4>
<ul>
<li>قابلیت افزایش فضا در هر زمان</li>
<li>پشتیبانی از انواع مختلف File system</li>
<li>استفاده از Migration در ریکاور کرد خطاهای دیسک</li>
<li>بازگردانی فایل سیستم با استفاده از snapshot</li>
</ul>
<p>در این آموزش من از Centos 7  با یک دیسک استفده کرده ام. در ادامه   با دستور  های زیر به ترتیب PV، VG و LV های موجود در سیستم را مشاهده خواهید کرد.</p>
<pre class="theme:shell-default lang:sh decode:true "># PVS

# VGS

# LVS</pre>
<p>&nbsp;</p>
<p><a href="http://hamedmaaleki.ir/wp-content/uploads/2017/06/figure2.jpg"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-144" src="http://hamedmaaleki.ir/wp-content/uploads/2017/06/figure2.jpg" sizes="(max-width: 609px) 100vw, 609px" srcset="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_609/https://maaleki.ir/wp-content/uploads/2017/06/figure2.jpg 609w, https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_300/https://maaleki.ir/wp-content/uploads/2017/06/figure2-300x126.jpg 300w" alt="" width="609" height="256" /></a></p>
<p>مواردی که در شکل بالا مشخص شده اند به شرح زیر می باشند:</p>
<ul>
<li>نمایش دهنده دیسکی است که در Physical Volume  مورد استفاده قرار گرفته است.</li>
<li>سایز physical disk</li>
<li>نام انتخاب شده برای Volume Group</li>
<li>سایز Volume Group</li>
<li>نمایش دهنده LV های ایجاد شده به همراه VG های آنها که همانطور که از اسم گذاری آنها مشخص است یکی برای SWAP و دیگری برای root سیستم استفاده شده است.</li>
<li>نمایش میزان سایز LV ها</li>
</ul>
<p>با تصور پر شدن فضای دیسک ما سه دیسک مجزا برای افزایش آن به سرور اضافه میکنیم که مطابق با شکل زیر است. و همانطور که ملاحظه میکنید سه دیسک با نام ها ی sdb, sdc, sdd و با ظرفیت 20 گیگ به سرور اضافه شده اند.</p>
<pre class="theme:shell-default lang:sh decode:true ">#fdisk –l

</pre>
<p>&nbsp;</p>
<p dir="ltr"><a href="http://hamedmaaleki.ir/wp-content/uploads/2017/06/Figure3.jpg"><br />
<img loading="lazy" decoding="async" class="aligncenter size-full wp-image-145" src="http://hamedmaaleki.ir/wp-content/uploads/2017/06/Figure3.jpg" sizes="(max-width: 536px) 100vw, 536px" srcset="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_536/https://maaleki.ir/wp-content/uploads/2017/06/Figure3.jpg 536w, https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_300/https://maaleki.ir/wp-content/uploads/2017/06/Figure3-300x152.jpg 300w" alt="" width="536" height="272" /></a></p>
<p>با دستور زیر وضعیت Volume Group های ایجاد شده در سیستم قابل مشاهده است.</p>
<pre class="theme:shell-default lang:sh decode:true">#vgdisplay</pre>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p dir="ltr"><a href="http://hamedmaaleki.ir/wp-content/uploads/2017/06/figure4.jpg"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-146" src="http://hamedmaaleki.ir/wp-content/uploads/2017/06/figure4.jpg" sizes="(max-width: 449px) 100vw, 449px" srcset="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_449/https://maaleki.ir/wp-content/uploads/2017/06/figure4.jpg 449w, https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_300/https://maaleki.ir/wp-content/uploads/2017/06/figure4-300x164.jpg 300w" alt="" width="449" height="245" /></a></p>
<p>که در آن</p>
<p>VG name : نام Volume Group</p>
<p>Format: فرمت و ساختار استفاده شده در ساخت VG که در اینجا lvm2  است.</p>
<p>VG Access:  که نمایشگر Permission های VG است</p>
<p>VG Status: وضعیت VG  را نمایش میدهد که در اینجا  وضعیت resizable  است و در موقعی نیاز شد میتوان ظرفیت آن را افزایش داد.</p>
<p>Cur LV: بیانگر تعداد LV هایی است که از دل این VG ایجاد شده اند.</p>
<p>Cur PV and Act PV: بیانگر تعداد Physical disk  ها و فعال یا غیر فعال بودن آنها است.</p>
<p>PE Size: بیانگر Physical Extents است  که بلاک بندی منطقی physical Volume  برای LVM  محسوب می شود که مقدار پیش فرض آن 4 مگابایت می باشد. به عنوان مثال تصور کنید قصد ساخت LV با ظرفیت 8 گیگابایت داریم با مقدار پیشفرض 4 مگابایت PE size  در نهایت 2048  بلاک منطقی استفاده خواهد شد.</p>
<p>8GB = 8192 MB</p>
<p>8192MB /4MB=2048</p>
<p>Total PE: تعداد کل physical extend  ها</p>
<p>Alloc PE : تعداد PE های اختصاص داده شده و مورد مصرف به LV ها</p>
<p>Free PE: تعداد PE های آزاد و استفاده نشده</p>
<p>در ادامه ابتدا ما اقدام به ساخت یک PV  متشکل از سه دیسک جدید میکنیم.</p>
<h4>توجه : پیشنهاد می گردد برای ساخت PV  ابتدا بخش مورد نظر از دیسک جدید یا کل آن  را با دستور fdisk  به یک پارتیشن جدیدی با فرمت lvm تبدیل کرده و سپس مراحل  را ادامه دهید. ساخت PV از کل دیسک به مانند دستور زیر سریعتر و آسانتر است و نیازی به ریبوت ندارد. اما با توجه به مشکلاتی که ممکن است در مدیریت آن پیش آید پیشنهاد نمی گردد. به عنوان مثال با روش زیر کل فضای دیسک برای ایجاد pv مورد استفاده قرار میگیرد و متا دیتایی مبنی بر LVM  بودن آن بر روی دیسک ایجاد نمی گردد لذا ممکن است توسط سیستم عاملی دیگر به عنوان دیسکی خالی تصور شده و از ابتدا روی آن عملیات نوشتن را انجام دهد. در آموزشی جداگانه نحوه پارتیشن کردن دیسک با استفاده از دستور fdisk  را توضیح خواهم داد.</h4>
<p>&nbsp;</p>
<pre class="theme:shell-default lang:sh decode:true "># pvcreate /dev/sdb /dev/sdc /dev/sdd</pre>
<p>&nbsp;</p>
<p>همانطور که در شکل زیر میبینید ایجاد PV مورد نظر با موفقیت انجام شد ودر ادامه با اجرای دستور PVS نیز مشاهده خواهید کرد که سه دیسک جدید ایجاد شده اند و بر خلاف sda2  که دارای VG به نام CentOS است این physical Volume  ها فاقد VG هستند.</p>
<p><a href="http://hamedmaaleki.ir/wp-content/uploads/2017/06/pvcreate.jpg"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-155" src="http://hamedmaaleki.ir/wp-content/uploads/2017/06/pvcreate.jpg" sizes="(max-width: 694px) 100vw, 694px" srcset="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_694/https://maaleki.ir/wp-content/uploads/2017/06/pvcreate.jpg 694w, https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_300/https://maaleki.ir/wp-content/uploads/2017/06/pvcreate-300x61.jpg 300w" alt="" width="694" height="141" /></a></p>
<p>حال نوبت به ایجاد volume group  می رسد. که با دستور به شکل زیر ایجاد خواهد شد.</p>
<pre class="theme:shell-default lang:sh decode:true "># vgcreate –s 8M [Volumegroupname] pv1 pv2 pv3 … pvn</pre>
<p>&nbsp;</p>
<p>که در دستور بالا –s  برای مشخص کردن PE Size  به میزان 8 مگابایت استفاده شده است در صورت عدم استفاده از این Option  سیستم از مقدار 4 مگابایتی پیش فرض استفاده خواهد کرد. [Volumegroupname] نیز نامی خواهد بود که برای volume Group  در نظر گرفته اید و PV ها بیانگر Physical Voilume  هایی است که در مرحله قل ایجاد کرده است.</p>
<p>ما در این مثال سایز PE را 8 مگابایت قرار خواهیم داد.</p>
<p><a href="http://hamedmaaleki.ir/wp-content/uploads/2017/06/vgcreate-.jpg"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-156" src="http://hamedmaaleki.ir/wp-content/uploads/2017/06/vgcreate-.jpg" sizes="(max-width: 712px) 100vw, 712px" srcset="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_712/https://maaleki.ir/wp-content/uploads/2017/06/vgcreate-.jpg 712w, https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_300/https://maaleki.ir/wp-content/uploads/2017/06/vgcreate--300x59.jpg 300w" alt="" width="712" height="140" /></a></p>
<p>&nbsp;</p>
<p>که در شکل بالا  #Sn  بیانگر تعداد snapshot های موجود در این Volume Group  و Attr  نیز بیانگر خصوصیات آن می باشد که میتواند Writeable, readable, resizeable, exported, partial   و clustered باشد. که در اینجا wz- – n – به معنی Writeable و  resizeable است.</p>
<p>لست کامل خصوصیات به شرح زیر است.</p>
<ol>
<li>Permissions: (w)riteable, (r)ead-only</li>
<li>Resi(z)eable</li>
<li>E(x)ported</li>
<li>(p)artial: one or more physical volumes belonging to the volume group are missing from the system</li>
<li>Allocation policy: (c)ontiguous, c(l)ing, (n)ormal, (a)nywhere</li>
<li>(c)lustered, (s)hared</li>
</ol>
<p>با استفاده از –v  در دستور vgs  نیز میتوان اطلاعات بیشتری مانند UUID و سایز PE  را نیز مشاهده کنید.</p>
<pre class="theme:shell-default lang:sh decode:true "># vgs –v</pre>
<p>&nbsp;</p>
<p><a href="http://hamedmaaleki.ir/wp-content/uploads/2017/06/vgs-v.jpg"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-157" src="http://hamedmaaleki.ir/wp-content/uploads/2017/06/vgs-v.jpg" sizes="(max-width: 731px) 100vw, 731px" srcset="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_731/https://maaleki.ir/wp-content/uploads/2017/06/vgs-v.jpg 731w, https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_300/https://maaleki.ir/wp-content/uploads/2017/06/vgs-v-300x43.jpg 300w" alt="" width="731" height="105" /></a></p>
<p>با ساخت Volume Group  یا VG میتوانیم اقدام به ساخت LV  و اختصاص فضا به آنها از فضای موحود در Vg کنیم .</p>
<p>برای ساخت LV و مشخص کردن حجم آن ما چند روش پیش رو داریم یکی استفاده از PE Size  و دیگری مشخص کردن میزان حجم براساس بایت (sectore,byte,kilobyte,megabyte,….) است که در ادامه از هر چند روش برای ایجاد LV  استفاده خواهیم کرد.</p>
<h3>روش اول استفاده از PE size</h3>
<p>برای استفاده از PE Size  شما باید مقدار تعیین شده آن برای VG  را بدانید. مقدار تعریف شده در این آموزش 8 مگابایت بود در نتیجه با توجه به توضیحات قبل برای ساخت یک LV 20 گیگاباتی ما 2560 PE  باید اختصاص دهیم.</p>
<pre class="theme:shell-default lang:sh decode:true "># lvcreate -l (Extend size) -n (name_of_logical_volume) (volume_group)

</pre>
<p>&nbsp;</p>
<p>در دستور بالا –l  به معنی استفاده از Physical Extend  می باشد  و –n  جهت تعریف نام LV مرد استفاده قرار میگیرد.</p>
<p><a href="http://hamedmaaleki.ir/wp-content/uploads/2017/06/lvcreate-method1.jpg"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-148" src="http://hamedmaaleki.ir/wp-content/uploads/2017/06/lvcreate-method1.jpg" sizes="(max-width: 885px) 100vw, 885px" srcset="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_885/https://maaleki.ir/wp-content/uploads/2017/06/lvcreate-method1.jpg 885w, https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_300/https://maaleki.ir/wp-content/uploads/2017/06/lvcreate-method1-300x53.jpg 300w, https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_768/https://maaleki.ir/wp-content/uploads/2017/06/lvcreate-method1-768x135.jpg 768w" alt="" width="885" height="156" /></a></p>
<p>همانطور که در شکل بالا میبینید LV به اسم PE-LV یا حجم 20 گیگابایت ایجاد شده است.</p>
<p>روش دوم</p>
<h3>استفاده از سایز مشخص</h3>
<pre class="theme:shell-default lang:sh decode:true"># lvcreate -L 10G -n (name_of_logical_volume) (volume_group)
</pre>
<p>&nbsp;</p>
<p><a href="http://hamedmaaleki.ir/wp-content/uploads/2017/06/lvcreate-method2.jpg"><br />
<img loading="lazy" decoding="async" class="aligncenter size-full wp-image-149" src="http://hamedmaaleki.ir/wp-content/uploads/2017/06/lvcreate-method2.jpg" sizes="(max-width: 728px) 100vw, 728px" srcset="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_728/https://maaleki.ir/wp-content/uploads/2017/06/lvcreate-method2.jpg 728w, https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_300/https://maaleki.ir/wp-content/uploads/2017/06/lvcreate-method2-300x64.jpg 300w" alt="" width="728" height="156" /></a></p>
<h3>استفاده از مقداری از فضای VG  به درصد</h3>
<p>در این روش میتوان به جای مصخ کردن مقدار دقیق درصدی از دیسک به LV  اختصاص یابد به عنوان مثال در دستور زیر ما ده درصد از فضای VG  را به یک LV اختصاص خواهیم داد.</p>
<pre class="theme:shell-default lang:sh decode:true "># lvcreate -l 10%VG -n mylv  new-vg

</pre>
<p>&nbsp;</p>
<p>توجه داشته باشید که در دستور بالا از 10 درصد فضای کل VG برای ساخت LV ساخته خواهد شد نه از فضای باقی مانده. در مثال زیر نیز با اجرای دستور، ده درصد از فضای کل و به میزان 6 گیگابایت به LV جدید اختصاص یافت.</p>
<p><a href="http://hamedmaaleki.ir/wp-content/uploads/2017/06/lvcreate-method3.jpg"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-150" src="http://hamedmaaleki.ir/wp-content/uploads/2017/06/lvcreate-method3.jpg" sizes="(max-width: 664px) 100vw, 664px" srcset="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_664/https://maaleki.ir/wp-content/uploads/2017/06/lvcreate-method3.jpg 664w, https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_300/https://maaleki.ir/wp-content/uploads/2017/06/lvcreate-method3-300x64.jpg 300w" alt="" width="664" height="142" /></a></p>
<h3>استفاده از باقی مانده فضای آزاد VG</h3>
<p>با اجرای دستور زیر تنها ده درصد از فضای باقی مانده و ازاد از VG  ایجاد شده برای ساخت LV  جدید مورد استفاده قرار خواهد گرفت</p>
<pre class="theme:shell-default lang:sh decode:true "># lvcreate -l 10%free -n mylv  new-vg

</pre>
<p>&nbsp;</p>
<p>با دستور بالا از 20 گیگابایت فضای باقی مانده از VG، ده درصد برای ساخت LV جدید استفاده خواهد شد. برای استفاده از کل فضای خالی VG  کافی است مقدار را برابر با 100% قرار دهید.</p>
<p><a href="http://hamedmaaleki.ir/wp-content/uploads/2017/06/lvcreate-method4.jpg"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-151" src="http://hamedmaaleki.ir/wp-content/uploads/2017/06/lvcreate-method4.jpg" sizes="(max-width: 694px) 100vw, 694px" srcset="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_694/https://maaleki.ir/wp-content/uploads/2017/06/lvcreate-method4.jpg 694w, https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_300/https://maaleki.ir/wp-content/uploads/2017/06/lvcreate-method4-300x57.jpg 300w" alt="" width="694" height="133" /></a></p>
<p>هدف نهایی ما در این آموزش ایجاد سه LV  با حجم 20 گیگابایت بود در نتیجه مابقی LV های ایجاد شده را حفذ میکنیم و تنها همان سه LV  را نگه میداریم و برای راحتی بهتر در ادامه کار نام آنها را نیز تغییر خواهم داد.</p>
<pre class="theme:shell-default lang:sh decode:true "># lvrename VGname Old-lvname new-lvname

</pre>
<p>&nbsp;</p>
<p>یا</p>
<pre class="theme:shell-default lang:sh decode:true "># lvrename /dev/vg02/lvold /dev/vg02/lvnew

</pre>
<p>&nbsp;</p>
<p><a href="http://hamedmaaleki.ir/wp-content/uploads/2017/06/lvrename.jpg"><br />
<img loading="lazy" decoding="async" class="aligncenter size-full wp-image-152" src="http://hamedmaaleki.ir/wp-content/uploads/2017/06/lvrename.jpg" sizes="(max-width: 763px) 100vw, 763px" srcset="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_763/https://maaleki.ir/wp-content/uploads/2017/06/lvrename.jpg 763w, https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_300/https://maaleki.ir/wp-content/uploads/2017/06/lvrename-300x12.jpg 300w" alt="" width="763" height="30" /></a></p>
<p>و در نهایت</p>
<p><a href="http://hamedmaaleki.ir/wp-content/uploads/2017/06/final-lvs.jpg"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-147" src="http://hamedmaaleki.ir/wp-content/uploads/2017/06/final-lvs.jpg" sizes="(max-width: 710px) 100vw, 710px" srcset="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_710/https://maaleki.ir/wp-content/uploads/2017/06/final-lvs.jpg 710w, https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_300/https://maaleki.ir/wp-content/uploads/2017/06/final-lvs-300x43.jpg 300w" alt="" width="710" height="101" /></a></p>
<p>برای این که امکان استفاده از LV  ها فراهم شود نیاز است که با یکی از انواعFile system  که ما فرمت ها آنها را فرمت کنیم در اینجا من قصد دارم از فرمت ext4  استفاده کنم. برای این کار از دستور زیر استفاده خواهیم کرد.</p>
<pre class="theme:shell-default lang:sh decode:true "># mkfs.ext4 /dev/new-vg / lv1

# mkfs.ext4 /dev/new-vg / lv2

# mkfs.ext4 /dev/new-vg/ lv3</pre>
<p>&nbsp;</p>
<p><a href="http://hamedmaaleki.ir/wp-content/uploads/2017/06/mkfs.jpg"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-153" src="http://hamedmaaleki.ir/wp-content/uploads/2017/06/mkfs.jpg" sizes="(max-width: 741px) 100vw, 741px" srcset="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_741/https://maaleki.ir/wp-content/uploads/2017/06/mkfs.jpg 741w, https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_300/https://maaleki.ir/wp-content/uploads/2017/06/mkfs-300x105.jpg 300w" alt="" width="741" height="260" /></a></p>
<p>در نهایت Logical Volume  های ساخته شده با Mount  شدن به یک دایرکتوری قابل استفاده خواهند بود.</p>
<p>برای mount  کردن lv  های ساخته شده ابتدا سه دایرکتوری خواهیم ساخت سپس هر کدام را جداگانه به یکی از دایرکتوری ها mount  خواهیم کرد.</p>
<pre class="theme:shell-default lang:sh decode:true "># mount /dev/new-vg/lv1       /tmp/lv1

# mount /dev/new-vg/lv2      /tmp/lv2

# mount /dev/new-vg/lv3     /tmp/lv3</pre>
<p>&nbsp;</p>
<p>با دستور dh  میتوانی LV  های ساخته شده و مسیری که به آنها Mount  شده اند را مشاهده کنید.</p>
<p><a href="http://hamedmaaleki.ir/wp-content/uploads/2017/06/df-h.jpg"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-142" src="http://hamedmaaleki.ir/wp-content/uploads/2017/06/df-h.jpg" sizes="(max-width: 580px) 100vw, 580px" srcset="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_580/https://maaleki.ir/wp-content/uploads/2017/06/df-h.jpg 580w, https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_300/https://maaleki.ir/wp-content/uploads/2017/06/df-h-300x82.jpg 300w" alt="" width="580" height="158" /></a></p>
<p>از آنجایی که دستور mount  به صورت موقت عملیات mount  کردن را انجام می دهد و با بارگزاری مجدد ماشین تغییرات اعمال شده از بین خواهد رفت، نیاز است تا هر LV  و مسیری که باید Mount شوند را در فایل fstab نیز اضافه کنیم.</p>
<p>ما خط های زیر را به فایل مذکور اضافه خواهیم کرد.</p>
<pre class="theme:shell-default lang:sh decode:true ">/dev/new-vg/lv1              /tmp/lv1             ext4       defaults               0  0

/dev/new-vg/lv2              /tmp/lv2             ext4       defaults               0  0

/dev/new-vg/lv3              /tmp/lv3             ext4       defaults               0  0</pre>
<p>&nbsp;</p>
<p>در صورتی که قصد  دارید تا سیستم مجدد فایل fstab  را بازخوانی کند و تغییرات جدید را اعمال کند دستور زیر را اجرا کنید در این مرحله در صورتی که اروری در خواند فایل وجود داشته باشد نیز برای شما به نمایش در خواهد آمد.</p>
<pre class="theme:shell-default lang:sh decode:true "># mount -av

</pre>
<p>&nbsp;</p>
<p>خروجی دستور mount  بعد از ریبوت ماشین.</p>
<p><a href="http://hamedmaaleki.ir/wp-content/uploads/2017/06/Mount.jpg"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-154" src="http://hamedmaaleki.ir/wp-content/uploads/2017/06/Mount.jpg" sizes="(max-width: 1100px) 100vw, 1100px" srcset="https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_1100/https://maaleki.ir/wp-content/uploads/2017/06/Mount.jpg 1100w, https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_300/https://maaleki.ir/wp-content/uploads/2017/06/Mount-300x104.jpg 300w, https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_768/https://maaleki.ir/wp-content/uploads/2017/06/Mount-768x266.jpg 768w, https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_1024/https://maaleki.ir/wp-content/uploads/2017/06/Mount-1024x355.jpg 1024w" alt="" width="1100" height="381" /></a></p>
<p>&nbsp;</p>
<p>تا اینجا ما با نحوه ساخت physical volume, Volume group  و logical volume  آشنا شدیم. در آموزش های بعدی نحوه resize  کردن آنها و همچنین Snapshot  گرفتن و بازگردانی آن را آموزش خواهیم داد.</p>
<p>امیدوارم مفید واقع شده باشد.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://linux.vcenter.ir/complete-tutorial-on-building-lvm-in-linux/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
