۱۳۹۴ مهر ۱۸, شنبه

حل خطای recvq/fax000000001.tif: Operation not permitted دریافت فکس در کلاینت فکس سرور الستیکس (HylaFAX )

اگر بخواهید برای دریافت فکس از نرم افزارهایی مثل YajHFC fax client استفاده کنید،مشاهده خواهید کرد که در زمان مشاهده فکس با خطای recvq/fax000000001.tif: Operation not permitted مواجه خواهید شد که به خاطر پرمیشن فکس های دریافتی در سرور می باشد.
برای تغییر پرمیشن فکس های جاری بدین صورت عمل کنید :
cd /var/spool/hylafax/recvq/
chmod 666 fax*.tif
برای تغییر پرمیشن فکس های دریافتی جدید باید عبارت "RecvFileMode:    0666" را به فایل /var/spool/hylafax/etc/config اضافه کنید.
echo "RecvFileMode:    0666" >> /var/spool/hylafax/etc/config

۱۳۹۳ اسفند ۲۰, چهارشنبه

BGP Failover

نگارنده : رضا بهروزی ( شرکت کارانشان – گروه آموزشی پرشین ادمینز)
در تنظیمات BGP زمانیکه چند سرویس دهنده یا چند روتر در شبکه داریم ،برای پایداری بیشتر از  Failover استفاده می کنیم،برای نمونه حالت های زیر را در نظر بگیرید.ما یک سرویس دهنده داریم ولی در شبکه خودمان ۲ روتر وجود دارد،بعضی رنج ها را از روتر ۱ و بعضی را از روتر ۲ advertise می کنیم،می خواهیم اگر ارتباط یکی از روتر ها با سرویس دهنده قطع شد از طریق روتر دیگر advertise صورت گیرد.
در حالت دیگری ما یک روتر با دو سرویس دهنده داریم،یک سرویس دهنده پیش فرض ما خواهد بود و در صورت قطع ارتباط از سرویس دهنده دیگر advertise صورت خواهد پذیرفت.
bgp

در این آموزش فرض ما بر فعال بودن BGP شما می باشد(برای راه اندازی BGP به اموزش های دیگر مراجعه کنید) و ما فقط نحوه Failover را بیان می کنیم.حالت ۲ که مشخص هست و شما به هر دو سرویس دهنده خود بر اساس رنج IP هایی که در نظر دارید BGP برقرار می کنید.در حالت ۱ باید بین دو روتر یک iBGP برقرار کنید،یعنی هر دو روتر داخلی شما هم با BGP با هم در ارتباط باشند.
راه کار استفاده از Failover اولویت دهی مسیرهاست ،بدین تریب که اولویت مسیر پشتیبان را نسبت به مسیر اصلی پایین تر می اوریم.در BGP با استفاده از prepend اولویت یک مسیر را کاهش می دهیم و فقط در صورت قطع ارتباط مسیر اصلی از این مسیر استفاده خواهد شد.prepend را با استفاده از route-map به شکل زیر می نویسیم :
route-map prepend permit 10
set as-path prepend 58623 58623 58623
سپس در تنظیمات bgp دستور زیر را وارد کنید :
 neighbor 5.193.150.4 route-map prepend out

نمای ساده و کلی تنظیمات BGP به شکل زیر خواهد بود :

router bgp 58623
neighbor 92.208.155.5 remote-as 56256
neighbor 5.193.150.4 remote-as 64800
neighbor 5.193.150.4 route-map prepend out
 در مثال بالا neighbor ی که prepend شده است از اولویت کمتری برخوردار خواهد بود.
بعد از انجام تنظیمات بالا باید bgp را clear کنید تا دستورات اعمال شود.
با تشکر – رضا بهروزی

۱۳۹۳ اسفند ۱۹, سه‌شنبه

کنترل پهنای باند در سیسکو – Cisco QOS

نگارنده : رضا بهروزی ( شرکت کارانشان – گروه آموزشی پرشین ادمینز)

کنترل پهنای باند در روتر های سیسکو شیوه های مختلفی دارد ،در این آموزش یکی از بهترین و ساده ترین روش ها را با ذکر چند نمونه توضیح خواهیم داد.
نمونه ۱ :
می خواهیم دانلود کاربر را به ۲ مگابیت در ثانیه محدود کنیم،فرض بر این است که کاربر sub interface مخصوص به خود را در روتر ما دارد.
policy-map مربوط به پهنای باند ۲ مگابیت را ایجاد می کنیم و به کاربر اختصاص می دهیم.
policy-map 2M
class class-default
shape average 2048000
۲M نام Policy-map می باشد که هر نام دلخواهی می توانید برای ان انتخاب کنید،۲۰۴۸۰۰۰ هم میزان پهنای باند به بیت می باشد که شما آن را هم بسته به نیاز می توانید تغییر دهید.
حال policy-map را روی اینترفیس کاربر تنظیم کنید:
interface GigabitEthernet0/1.801
service-policy output ۲M
نمونه ۲ :
می خواهیم به یک مشتری بر روی یک اینترفیس دو نوع سرویس مختلف از قبیل اینترنت و اینترانت با پهنای باند متفاوت ارایه دهیم.این کار را با تفکیک ترافیک ها توسط access-list انجام می دهیم.
به ازای هر سرویس یک access-list ایجاد کنید و آدرس IP های هر کدام را در ان مشخص کنید.
نکته بسیار مهم :
اگر به مشتری IP دهید و در access-list مشخص نکنید ،پهنای باند ان محدوده IP نامحدود خواهد بود.
access-list 188 permit ip any 10.58.8.36 0.0.0.3
access-list 189 permit ip any 199.44.227.32 0.0.0.7
access-list 189 permit ip any 168.228.202.128 0.0.0.63
 ایجاد class-map به ازای هر سرویس و مشخص کردن access-list مربوط به آن
class-map match-any Persianadmins-Internet
match access-group 189
class-map match-any Persianadmins-Intranet
match access-group 188
 ایجاد policy-map و مشخص کردن پهنای باند هر سرویس
policy-map Persianadmins
class Persianadmins-Internet
shape average 97280000
class Persianadmins-Intranet
shape average 1024000
 اختصاص  Policy-map به interface مربوط به کاربر
interface GigabitEthernet0/1.801
service-policy output Persianadmins
نمونه ۳ :
چندین سرور در شبکه داریم و می خواهیم پهنای باند دانلود هر سرور را جداگانه تنظیم کنیم.همه سرورها در یک vlan هستند یا به یک اینترفیس روتر متصل اند.
به ازای هر سرور یک access-list ایجاد و ادرس ip سرور را در آن مشخص می کنیم
access-list 185 permit ip any host 129.75.224.50
access-list 186 permit ip any host 129.75.224.51
 ایجاد class-map به ازای هر سرور و مشخص کردن access-list مربوط به آن
class-map match-any Server1
match access-group 185
class-map match-any Server2
match access-group 186
  ایجاد policy-map و مشخص کردن پهنای باند هر سرور
policy-map Servers
class Server1
shape average 2048000
class Server2
shape average 1024000
 اختصاص  Policy-map به interface مربوط به سرورها
interface GigabitEthernet0/1.801
service-policy output Servers
 نمونه ۴ :
در این نمونه می خواهیم به کاربر در زمان های مختلف پهنای باند دانلود متفاوت اختصاص دهیم.فرضا زمان را به دو دسته شب و روز تقسیم می کنیم.
ابتدا محدوده ی زمان هایی که می خواهیم پهنای باند متفاوت داشته باشیم را با استفاده از time-range ایجاد می کنیم.
time-range 7-14
periodic daily 07:00 to 14:00
time-range 14-24
periodic daily 14:00 to 00:00
time-range 24-7
periodic daily 00:00 to 07:00
سپس time-range های ایجاد شده را به access-list ها اختصاص می دهیم.در اینجا ما دو بازه زمانی روز و شب داریم،پس یک access-list برای روز و یکی برای شب ایجاد و زمان ها را برای این دو access-list مشخص میکنیم.
access-list 135 permit ip any any time-range 7-19
access-list 136 permit ip any any time-range 24-7
access-list 136 permit ip any any time-range 19-24
 ایجاد class-map به ازای هر بازه زمانی و مشخص کردن access-list مربوط به آن
class-map match-any Persianadmins-Day
match access-group 135
class-map match-any Persianadmins-Night
match access-group 136
 ایجاد policy-map و مشخص کردن پهنای باند هر بازه زمانی
policy-map Persianadmins
class Persianadmins-Day
shape average 97280000
class Persianadmins-Night
shape average 1024000
 اختصاص  Policy-map به interface مربوط به کاربر
interface GigabitEthernet0/1.801
service-policy output Persianadmins
 نمونه ۵ :
برای محدود کردن آپلود هم مشابه دانلود عمل می کنیم با این تفاوت که در تنظیمات policy در اینترفیس کاربر به جای output از input استفاده می کنیم و اگر از access-list استفاده میکنیم جای source و destination را تغییر می دهیم.در اپلود ادرس IP کاربر source access-list می باشد.همچنین در policy-map باید به جای shape از policy استفاده کنیم.
ساخت policy-map
policy-map Upload
class class-default
police rate 1024000
اختصاص به اینترفیس کاربر
interface GigabitEthernet0/1.801
service-policy input Upload


با تشکر – رضا بهروزی

۱۳۹۳ اسفند ۱۸, دوشنبه

TIME-BASED QOS – کنترل پهنای باند در سیسکو بر اساس زمان

نگارنده : رضا بهروزی ( شرکت کارانشان – گروه آموزشی پرشین ادمینز)
سرویس دهنده های اینترنت گاهی نیاز دارند که پهنای باند کاربران خود را بر اساس زمان متفاوت تنظیم کنند،برای این منظور ما از Time-based access-list ها استفاده خواهیم کرد.
به این مهم توجه داشته باشید که ساعت روتر خود را با استفاده از یک ntp سرور بروز نگه دارید و از درستی ساعت بر اساس زمان دلخواه خود مطمئن شوید.در روتر ما زمان به این صورت بر روی ساعت و منطقه زمانی مورد نظر ما قرار می گیرد :
clock timezone Tehran 3 30
clock summer-time Tehran recurring 4 Sun Mar 2:00 4 Wed Sep 2:00
clock calendar-valid
ntp update-calendar
ntp server 31.193.144.2
ntp server 134.170.185.211
بعد از تنظیم ساعت و زمان روتر باید محدوده زمان هایی که مد نظر داریم را ایجاد کنیم تا در access-list ها استفاده کنیم.در این مثال ما می خواهیم کاربر از ساعت ۷ صبح تا ۲ بعد از ظهر ۲ مگابیت و از ۲ بعد از ظهر تا ۷ صبح چهار مگابیت پهنای باند در اختیار داشته باشد.
time-range 7-14
periodic daily 07:00 to 14:00
time-range 14-24
periodic daily 14:00 to 00:00
time-range 24-7
periodic daily 00:00 to 07:00
حال ۲ access-list ایجاد می کنیم،یکی برای ساعت روز و یکی برای شب و زمان ها را به هر access-list اختصاص می دهیم:

access-list 135 permit ip any any time-range 7-14
access-list 136 permit ip any any time-range 14-24
access-list 136 permit ip any any time-range 24-7
اکنون نوبت به تنظیمات QOS رسیده است،ابتدا class map ها و سپس policy map را ایجاد می کنیم.
class-map match-any PersianAdmins-Day
match access-group 135
class-map match-any PersianAdmins-Night
match access-group 136
policy-map PersianAdmins
class PersianAdmins-Day
shape average 2048000
class PersianAdmins-Night
shape average 4096000
در مرحله آخر policy map را به اینترنت کاربر اختصاص می دهیم :

interface GigabitEthernet0/1.901
service-policy output PersianAdmins
با تشکر – رضا بهروزی

Time-based BGP advertisement

نگارنده : رضا بهروزی ( شرکت کارانشان – گروه آموزشی پرشین ادمینز)
یکی از مشتری های ما از دو سرویس دهنده متفاوت ،اینترنت را با استفاده از BGP دریافت می کند،ترافیک روی هر کدام از سرویس دهنده ها در ساعات مختلف روز متفاوت است،مثلا کاربران بر روی یک لینک صبح ها مصرف بیشتری دارند و در ساعات غیراداری به ۱/۲۰ ام حالت عادی می رسد،در لینک دیگر شب ها ترافیک بیشتری کاربران درخواست می کنند،برای اینکه از پهنای باند به خوبی استفاده شود باید در ساعات مختلف IP هایی که بر روی هر کدام از سرویس دهنده ها advertise می شود متفاوت باشد تا کارایی و بهره وری افزایش یابد.برای این منظور تصمیم به استفاده از Time-base bgp گرفتیم،bgp به صورت عادی یا استفاده از prefix-list ها از time پشتیبانی نمی کند ولی با استفاده از access list و distribute-list می توان advertisement را بر اساس زمان انجام داد.
به این مهم توجه داشته باشید که ساعت روتر خود را با استفاده از یک ntp سرور بروز نگه دارید و از درستی ساعت بر اساس زمان دلخواه خود مطمئن شوید.در روتر ما زمان به این صورت بر روی ساعت و منطقه زمانی مورد نظر ما قرار می گیرد :
clock timezone Tehran 3 30
clock summer-time Tehran recurring 4 Sun Mar 2:00 4 Wed Sep 2:00
clock calendar-valid
ntp source GigabitEthernet0/1.45
ntp update-calendar
ntp server 31.193.144.2
ntp server 134.170.185.211
بعد از تنظیم ساعت و زمان روتر باید محدوده زمان هایی که مد نظر داریم را ایجاد کنیم تا در access-list ها استفاده کنیم
time-range 02-07
periodic daily 2:00 to 7:00
time-range 19-24
periodic daily 19:00 to 23:59
time-range 24-2
periodic daily 0:00 to 2:00
time-range 24-7
periodic daily 0:00 to 7:00
time-range 7-19
periodic daily 7:00 to 19:00

حال باید به ازای هر کدام از سرویس دهنده ها یک access-list ایجاد کنید و مشخص کنید در هر زمانی چه ادرس هایی از انها advertise شوند.اگر می خواهید یک محدوده IP همیشه از یک لینک خارج شود نیازی به استفاده از time-range در access-list نیست.access-list ها را مانند مثال زیر ایجاد کنید :
access-list 199 permit ip 176.25.198.0 0.0.0.255 any
access-list 199 permit ip 176.25.199.0 0.0.0.255 any
access-list 199 permit ip 176.25.200.0 0.0.0.255 any
access-list 199 permit ip 176.25.201.0 0.0.0.255 any
access-list 199 permit ip 176.25.206.0 0.0.0.255 any
access-list 199 permit ip 36.29.56.0 0.0.0.255 any
access-list 199 permit ip 176.25.205.0 0.0.0.255 any
access-list 199 permit ip 36.29.37.0 0.0.0.255 any time-range 19-24
access-list 199 permit ip 36.29.45.0 0.0.0.255 any time-range 19-24
access-list 199 permit ip 36.29.47.0 0.0.0.255 any time-range 19-24
access-list 199 permit ip 176.25.204.0 0.0.0.255 any time-range 19-24
access-list 199 permit ip 36.29.63.0 0.0.0.255 any time-range 19-24
access-list 199 permit ip 36.29.43.0 0.0.0.255 any time-range 19-24
access-list 199 permit ip 36.29.41.0 0.0.0.255 any time-range 19-24
access-list 199 permit ip 36.29.34.0 0.0.0.255 any time-range 19-24
access-list 199 permit ip 112.78..232.0 0.0.0.255 any time-range 19-24
access-list 199 permit ip 36.29.62.0 0.0.0.255 any time-range 19-24
access-list 199 permit ip 36.29.37.0 0.0.0.255 any time-range 24-7
access-list 199 permit ip 36.29.45.0 0.0.0.255 any time-range 24-7
access-list 199 permit ip 36.29.47.0 0.0.0.255 any time-range 24-7
access-list 199 permit ip 176.25.204.0 0.0.0.255 any time-range 24-7
access-list 199 permit ip 36.29.63.0 0.0.0.255 any time-range 24-7
access-list 199 permit ip 36.29.43.0 0.0.0.255 any time-range 24-7
access-list 199 permit ip 36.29.41.0 0.0.0.255 any time-range 24-7
access-list 199 permit ip 36.29.34.0 0.0.0.255 any time-range 24-7
access-list 199 permit ip 112.78..232.0 0.0.0.255 any time-range 24-7
access-list 199 permit ip 36.29.62.0 0.0.0.255 any time-range 24-7
access-list 199 permit ip 36.29.44.0 0.0.0.255 any time-range 7-19
access-list 199 permit ip 36.29.53.0 0.0.0.255 any time-range 7-19
access-list 199 permit ip 36.29.44.0 0.0.0.255 any time-range 02-07
access-list 199 permit ip 36.29.53.0 0.0.0.255 any time-range 02-07
access-list 198 permit ip 36.29.37.0 0.0.0.255 any time-range 7-19
access-list 198 permit ip 36.29.45.0 0.0.0.255 any time-range 7-19
access-list 198 permit ip 36.29.47.0 0.0.0.255 any time-range 7-19
access-list 198 permit ip 176.25.204.0 0.0.0.255 any time-range 7-19
access-list 198 permit ip 36.29.63.0 0.0.0.255 any time-range 7-19
access-list 198 permit ip 36.29.43.0 0.0.0.255 any time-range 7-19
access-list 198 permit ip 36.29.41.0 0.0.0.255 any time-range 7-19
access-list 198 permit ip 36.29.34.0 0.0.0.255 any time-range 7-19
access-list 198 permit ip 112.78..232.0 0.0.0.255 any time-range 7-19
access-list 198 permit ip 36.29.62.0 0.0.0.255 any time-range 7-19
access-list 198 permit ip 36.29.44.0 0.0.0.255 any time-range 19-24
access-list 198 permit ip 36.29.53.0 0.0.0.255 any time-range 19-24
access-list 198 permit ip 36.29.44.0 0.0.0.255 any time-range 24-7
access-list 198 permit ip 36.29.53.0 0.0.0.255 any time-range 24-7
حال bgp را تنظیم کنید تا با استفاده از distribute-list از access-list مد نظر شما استفاده کند.دقت کنید که distribute-list و prefix-list همزمان نمی توانند استفاده شوند.
router bgp 30267
neighbor 10.21.32.14 remote-as 48159
neighbor 10.21.32.14 activate
neighbor 10.21.32.14 distribute-list 199 out
neighbor 80.193.20.10 remote-as 12880
neighbor 80.193.20.10 activate
neighbor 80.193.20.10 distribute-list 198 out
حال باید در زمان های مد نظر bgp list را اپدیت کنیم،با استفاده از kron روتر در زمان هایی که مد نظر داریم bgp را clear می کنیم تا access-list هایی که در زمان مورد نظر فعال شده اند advertise شوند.
اول یک alias برای دستور clear هر کدام از neighbor ها بنویسید
alias exec bgp-up1 clear bgp all 48159 soft
alias exec bgp-up2 clear bgp all 12880 soft
حال یک policy برای Kron ایجاد می کنیم که چه دستوراتی در زمان مورد نظر اجرا شود
kron policy-list bgp-kron
cli bgp-up1
cli bgp-up2

در مرحله اخر هم زمانبندی را انجام دهید.

kron occurrence bgp-kron1 at 19:00 recurring
policy-list bgp-kron
kron occurrence bgp-kron2 at 19:01 recurring
policy-list bgp-kron
kron occurrence bgp-kron3 at 19:05 recurring
policy-list bgp-kron
kron occurrence bgp-kron4 at 2:00 recurring
policy-list bgp-kron
kron occurrence bgp-kron5 at 2:01 recurring
policy-list bgp-kron
kron occurrence bgp-kron6 at 2:05 recurring
policy-list bgp-kron
kron occurrence bgp-kron7 at 7:00 recurring
policy-list bgp-kron
kron occurrence bgp-kron8 at 7:01 recurring
policy-list bgp-kron
kron occurrence bgp-kron9 at 7:05 recurring
policy-list bgp-kron

من برای احتیاط در یک بازه ۵ دقیقه ای ۳ بار دستور bgp-up اجرا کرده ام تا از اجرای ان مطمئن شوم.
لطفا اگر راه حل بهتری برای انجام این مورد در نظر دارید با ما در میان بگذارید.
با تشکر – رضا بهروزی

۱۳۹۳ دی ۱۱, پنجشنبه

/bin/rm: Argument list too long

اگر خواستید محتوای یک دایرکتوری در لینوکس را پاک کنید و با خطای زیر روبرو شدید به خاطر تعداد بالای فایل هاست
/bin/rm: Argument list too long

برای حل مشکل از دستور زیر استفاده کنید
find . -type f -delete

find خیلی سریعتر و بهتر لیست فایل ها را تهیه می کنه تا پاک کند

۱۳۹۳ فروردین ۲۵, دوشنبه

روش VACUUM کردن PostgreSQL برای خطای Stop the postmaster and use a standalone backend to vacuum database "postgres"

پیغام خطا:
WARNING: database "postgres" must be vacuumed within 999999 transactions 
HINT: To avoid a database shutdown, execute a full-database VACUUM in "postgres". 
WARNING: database "postgres" must be vacuumed within 999998 transactions 
HINT: To avoid a database shutdown, execute a full-database VACUUM in "postgres". 
WARNING: database "postgres" must be vacuumed within 999997 transactions 
HINT: To avoid a database shutdown, execute a full-database VACUUM in "postgres". 
WARNING: database "postgres" must be vacuumed within 999996 transactions 
HINT: To avoid a database shutdown, execute a full-database VACUUM in "postgres". 
WARNING: database "postgres" must be vacuumed within 999995 transactions 
HINT: To avoid a database shutdown, execute a full-database VACUUM in "postgres". 

یا

createdb: could not connect to database postgres: FATAL:  database is not accepting commands to avoid wraparound data loss in database "postgres"
HINT:  Stop the postmaster and use a standalone backend to vacuum database "postgres".

روش حل:
[you@server ~]$ su root
Password:
[root@server ~]# /etc/init.d/postgresql stop                                     #stop database
[root@server ~]# su postgres                                                            # switch user to postgres
[postgres@server ~]$ touch /tmp/fix.sql                                          #create empty file
[postgres@server ~]$ echo "VACUUM FULL;" > /tmp/fix.sql               #write command to file
[postgres@server ~]$ postgres -D /var/lib/pgsql/data YOUR_DATABASE_NAME < /tmp/fix.sql       # execute command

و در نهایت

[root@server ~]# /etc/init.d/postgresql restart

۱۳۹۲ آذر ۲۶, سه‌شنبه

راه اندازی سرویس NTP (Network Time Protocol ) در میکروتیک



پروتکل (Network Time Protocol (NTP برای تنظیم و همگام سازی دقیق ساعت سیستم ها و دستگاه ها با ساعت های اتمی مورد استفاده قرار می گیرد.سرورهای NTP از یک ساختار سلسه مراتبی پیروی می کند که اصطلاحا به آنهاStratum گفته می شود.




Stratum 1 - مستقیما به ساعت های اتمی متصل هستند و خود را با آنها همگام می کنند.

Stratum 2 - به سرورهای Stratum 1 متصل هستند.

هر چه سطح Stratum ها پایین تر می آید ،از سرورهای با دقت کمتری برای همگام سازی استفاده می کنند.


تصویر یک Stratum 0
The U.S. Naval Observatory
Alternate Master Clock at Schriever AFB (Colorado) is a Stratum 0 source for NTP

در هر شبکه ای بهتر است که حداقل یه NTP سرور وجود داشته باشد و کلیه سرورها و سخت افزارها ،ساعت خود را با آن هماهنگ کنند.در ادمه به نحوه نصب و راه اندازی سرویس NTP می پردازیم.

دانلود آموزش راه اندازی سرویس NTP (Network Time Protocol ) در میکروتیک


نگارنده :رضا بهروزی