جوال سوالف سوفت
من الموقع: Crunchpad, عندما يتحول المستخدم الى منتج فإن القصة تكون حتما مثيرة !!

 

العودة   سوالف سوفت > سوالف الشبكات والاستضافة وما يتعلق بهما > الشبكات والخوادم وقواعد البيانات
المدوّنات البحث مشاركات اليوم اجعل كافة المشاركات مقروءة

الوسوم:

رد
 
LinkBack أدوات الموضوع
عضو سوبر نشيط
تاريخ التسجيل: Sep 2003-
#1 (permalink)  
طريقة عمل سيرفر شبكات بأستخدام Ubuntu


السلام عليكم

بعد انتقطاع طويل عن سوالف

في هذا الموضوع، لن أقوم بشرح كيفية إنشاء شبكة من الصفر (كيفية عمل الكوابل، كيفية إعداد الـ switch، router, ADSL modem، الخ...
بل سأفترض انه يوجد عندنا شبكة جاهزة ولكن نريد استبدال السيرفر الحالي بسيرفر يعمل على لينوكس.

لنتأمل الصورة التالية:



من خلال هذه الصورة، فإننا نستنتج الآتي:

- العنوان IP الخاص بهذه الشبكة هو: 172.16.1.0
- الـ netmask الخاص بهذه الشبكة هو 255.255.0.0
- عناوين الـ IP تم تعيينها للأجهزة يدويا.
- وجود جهاز مهم اسمه Backups
- وجود خط انترنت عن طريق ADSL

هذه هي المعلومات الخاصة بالاجهزة بشكل عام، الان معلومات حول السيرفر نفسه:

1- يحتوي على واجهتين للشبكة (interfaces):
الاولى: eth0 متصلة بالمودم adsl
الثانية: eth1 متصلة بالـ switch الخاص بالشبكة.

عنوان الاي بي الخاص بهذا السيرفر هو: 172.16.1.1/16

القسم الاول: تثبيت Ubuntu Dapper Drake Server

قم بتنزيل النسخة من خلال الرابط التالي:
Ubuntu 6.06 :
Ubuntu 7.04:

ساترك شرح تركيب اوبونتو لوقت اخر. ولكن تاكد انك قمت بتثبيتها وبعد التثبيت تاكد من تحديث النظام وتركيب بعض البرامج التي ربما تكون غير مثبتة:

اقتباس:
sudo -s
apt-get update
apt-get upgrade
apt-get install iptables
- مشاركة خط الانترنت مع اجهزة الشبكة:

قبل مشاركة خط الانترنت، لنتاكد اولا ان الفايروول (firewall) لن يقوم باعاقتنا (في النهاية ساشرح كيفية بناء فايروول بسيط لهذا السيرفر)

لنمسح كافة الروولز:

اقتباس:
sudo iptables -F
sudo iptables -X
sudo iptables -t nat -F
sudo iptables -t nat -X
sudo iptables -t mangle -F
sudo iptables -t mangle -X
استخدام NAT (Network Address Translation)
اقتباس:
[root@server ~]# modprobe iptable_nat
[root@server ~]# echo "1" > /proc/sys/net/ipv4/ip_forward
[root@server ~]# iptables –t nat –A POSTROUTING –o eth0 –j MASQUERADE

ملاحظة: غير eth0 بالواجهة المتصلة بالانترنت.
اذا كنت اتصلت بالانترنت عن طريق pppoe (باستخدام البرنامج pppoeconf مثلا، فان الواجهة المتصلة بالانترنت ستكون على الاغلب ppp0، نفذ الامر ifconfig لتتاكد)


هذه الاوامر تعمل على مشاركة للانترنت القادم من الواجهة eth0 مع كل بطاقات الشبكة الموجودة في السيرفر، لهذا السبب لا يوجد داعي لتحديد الكرت المتصل بالشبكة.

الامر الاول يقوم بتحميل الوحدة البرمجية (kernel module) التي تحمل الاسم iptables_nat الى الرام. هذه الوحدة البرمجية هي المسؤولة عن تفعيل NAT.
الامر الثاني يقوم بتفعيل ip_forward . وهو المسؤول عن توجيه الـ packets.
الامر الاخير هو الذي يقوم باخذ كافة الطلبات القادمة من اجهزة الشبكة والمتوجهة الى الانترنت.

باضافة الاوامر الثلاثة السابقة، فان هذا السيرفر اصبح يتصرف كراوتر (router) الان وهو الـ gateway الخاص بشبكتنا.

في كثير من التوزيعات نحتاج لاضافة امر رابع (خاصة عندما نشارك خط adsl) وذلك بهدف تصحيح حجم الـ packets القادمة من الانترنت مع الـ MTU (لن ادخل في تفاصيله) المستخدم في الشبكة المحلية.

لعمل هذا، نفذ هذا الامر:

اقتباس:
[root@server ~]# iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -m tcpmss --mss \
1400:1536 -j TCPMSS --clamp-mss-to-pmtu


انشاء script لتشغيل او ايقاف مشاركة الانترنت:

سنقوم بانشاء script صغير يساعدنا لتشغيل او ايقاف مشاركة الانترنت:
نفذ:

اقتباس:
sudo nano /usr/bin/net-share
اضف التالي اليه:

اقتباس:
#!/bin/bash

start_share(){
modprobe iptable_nat
echo '1' > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -m tcpmss --mss \
1400:1536 -j TCPMSS --clamp-mss-to-pmtu
}
stop_share(){
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
}
case "$1" in
"start") start_share ;;
"stop") stop_share ;;
"restart") stop_share; start_share ;;
*) echo "Use $0 [start|stop|restart]"
esac
الان، لنقم بمشاركة الانترنت:

اقتباس:
sudo chmod +x /usr/bin/net-share
sudo net-share stop
sudo net-share start

اعداد اجهزة الشبكة لتستخدم الانترنت:
اعداد اجهزة الشبكة لتستخدم السيرفر الجديد للحصول على الانترنت امر بسيط وسهل جدا، كل ما عليك فعله، هو اضافة الـ IP الخاص بهذا السيرفر في الخانة gateway والخانة dns كما هو موضح في الصورة التالية:



ملاحظة: اذا كنت تستخدم Microsoft ISA قم بازالة البرنامج من كافة اجهزة الشبكة ازالة تامة، وتاكد ان اعدادات المتصفح (browser) الخاصة بالبروكسي لا تحتوي على اي عنوان، اتركها فارغة.

كما رايتم، مشاركة الانترنت باستخدام NAT عملية سهلة جدا، ولكن لا تتوقعوا سرعة فائقة في التصفح، لان هذه العملية لا تستخدم cache.

2- اضافة خادم DHCP:

كما لاحظنا، اضطررنا اعداد كافة اجهزة الشبكة يدويا، واضفنا ايضا عنوان الـ gateway والـ dns بالاضافة الى عنوان الـ IP والـ netmask الذي تم اعداده يدويا في وقت سابق.

اذا كانت اجهزة الشبكة قليلة، فان ادخال عنوان الgateway وعنوان dns وعنوان ip يدويا لن تكون مشكلة كبيرة، ولكن تخيل لو كان لديك 30 جهاز او اكثر في الشبكة؟ او كانت اجهزة الشبكة موجودة في اكثر من مكان؟ حتما ستكون هذه مهمة صعبة ومملة.

شخصيا، احب حصر كافة اعدادات الشبكة في الخادم، بحيث اي تعديل يطرا، سيكون علي تعديل السيرفر وحده، دون الحاجة الى تعديل اي شيء في اجهزة الشبكة. هنا يدخل dhcp.

لمن لا يعرف، dhcp عبارة عن برنامج يقوم بتزويد اجهزة الشبكة عنوان ip خاص بها، دون الحاجة ان تذهب لكل جهاز في الشبكة واعطائه عنوان اي بي خاص به.

سنقوم باعداد كافة اجهزة الشبكة لاستخدام خادم dhcp لتحصل على عنوان ip خاص بها وايضا تحصل على معلومات ال gateway وال dns من خلال خادم dhcp بشكل الي.

تثبيت خادم DHCP

اقتباس:
[root@server ~]# sudo apt-get install dhcp3-server
بعد تثبيت الخادم dhcp سنقوم باعداده. ملف الاعداد الخاص به موجود في الدليل /etc/dhcp3:

اقتباس:
sudo -s
cd /etc/dhcp3
mv dhcpd.conf dhcpd.conf.original
touch dhcpd.conf
nano dhcpd.conf
اضف التالي:

اقتباس:
ddns-update-style none;
default-lease-time 600;
max-lease-time 7200;
authoritative;
subnet 172.16.1.0 netmask 255.255.0.0 {
range 172.16.1.100 172.16.1.201;
option routers 172.16.1.1;
option domain-name-servers 172.16.1.1;
option broadcast-address 172.16.1.255;
}

في هذا الملف، اكثر خيار يهمنا معرفته هو السطر الذي يبدأ بالكلمة range

لاحظ انه يحتوي على الاي بي 172.16.1.100 والاي بي 172.16.1.201

هاذين العنوانين يعنيان ان اي جهاز في الشبكة عندما يحصل على ip فانه سيحصل على ip واقع ضمن 172.16.1.100-172.16.1.201

بعد ان تحفظ الملف، قم بتحرير الملف التالي:

اقتباس:
sudo nano /etc/default/dhcp3-server
ابحث عن INTERFACES وغيره ليكون الاتي:

اقتباس:
INTERFACES="eth1"
قم بتشغيل الخادم dhcp

اقتباس:
sudo /etc/init.d/dhcp3-server restart

اذا لاحظت في الصورة التي توضح معالم الشبكة، ستلاحظ انه يوجد جهاز مهم اسمه backups وهذا الجهاز يستخدم لتخزين نسخ احتياطية.
كونه جهاز مهم، فانه من الضروري ان لا يتم تغيير عنوان الاي بي الخاص به. علينا ترك عنوان هذا الجهاز ثابت كما هو.

يمكننا عمل هذا بطريقتين:

الاولى: هي تركه كما هو دون تغيير اي شيء.
الطريقة الثانية (الافضل): هي ان نجبر الخادم dhcp ان يعطيه عنوان اي بي ثابت بناء على mac address.

حتى تكتشف الـ mac address الخاص به يمكنك تنفيذ الامر التالي في الجهاز نفسه (على فرض انه يعمل على ويندوز اكس بي)
اقتباس:
Dos> ipconfig /all

سيظهر لك عنوان الـ mac address، قم بنسخه.


طريقة ثانية لاكتشاف الـ mac address للجهاز دون ان تقوم من مكانك هي استخدام الامر arping

في حال لم يكن مثبت، قم بتثبيته:


اقتباس:
sudo apt-get install arping
اقتباس:
[root@server ~]# arping 172.16.1.7
ARPING 172.16.1.7 from 172.16.1.1 eth1
Unicast reply from 172.16.1.7 [00:14:2A:F5:44:FB] 0.634ms
Unicast reply from 172.16.1.7 [00:14:2A:F5:44:FB] 0.647ms
Unicast reply from 172.16.1.7 [00:14:2A:F5:44:FB] 0.650ms
Sent 3 probes (1 broadcast(s))


كما ترى اكتشف لنا ال mac address

الان، في ملف الاعداد الخاص ب dhcp اضف التالي:


اقتباس:
host backups {
hardware ethernet 00:14:2A:F5:44:FB;
fixed-address 172.16.1.7;
}
ملف الاعداد النهائي سيكون بهذا الشكل:

اقتباس:
ddns-update-style none;
default-lease-time 600;
max-lease-time 7200;
authoritative;
subnet 172.16.1.0 netmask 255.255.0.0 {
range 172.16.1.100 172.16.1.201;
option routers 172.16.1.1;
option domain-name-servers 172.16.1.1;
option broadcast-address 172.16.1.255;
}

host backups {
hardware ethernet 00:14:2A:F5:44:FB;
fixed-address 172.16.1.7;
}
الان اعد تشغيل الخادم dhcp:

اقتباس:
sudo /etc/init.d/dhcp3-server restart


اعداد اجهزة الشبكة لتستخدم الخادم dhcp:

اعداد الاجهزة امر بسيط جدا واكثر من سهل:



فقط اترك الاعدادات كما هو موضح في الصورة واعد تشغيل الجهاز.

3- اضافة خادم كاش (cache server) لتسريع التصفح باستخدام squid:

عندما تشارك الانترنت باستخدام NAT فان كل اجهزة الشبكة تستطيع استخدام الانترنت بشكل مباشر بدون قيود، عدا عن البطء النسبي للتصفح.
ولكن عندما نضيف proxy server فان الوضع يختلف، ويصبح هناك تحكم اكثر من حيث ما هو مسموح الوصول اليه وما هو غير مسموح الوصول اليه، واي جهاز مسموح له استخدام الانترنت واي جهاز غير مسموح له، عدا عن زيادة سرعة التصفح.

من بعض فوائد استخدام proxy server:

1- امكانية تحديد وقت التصفح (من الساعة كذا الى الساعة كذا)

2- امكانية السماح لبعض المستخدمين بالتصفح والبعض لا.

3- امكانية حجب التصفح بناء على اي بي الجهاز.

4- امكانية حجب بعض المواقع او الانترنت كاملة والسماح لبعض المواقع فقط بالعمل

5- البروكسي (proxy) يعمل على تخزين الصفحات التي تم الوصول اليها، بحيث يجعل التصفح اسرع لانه لن يعيد فتح الصفحة نفسها مرتين، بل مرة واحدة فقط ثم يقوم بتزويد نسخة مخزنة منها.

في الوقت الحاضر، اغلب مواقع الانترنت اصبحت ديناميكية والمحتوى يتغيير مع كل زيارة للموقع تقريبا، ولكن مع هذا فان الخادم بروكسي قادر على مساعدتنا، فبالرغم من ان المحتوى تغير، فان اشياء كثيرة لا تتغير باستمرار مثل الbanner، عروض فلاش، صور، الخ...

6- قادر على معرفة الصفحات التي تم زيارتها من الشبكة، وبالتالي دراسة محتوى هذه المواقع فيما وبعد واتخاذ الاجراء اللازم (اما قفل الموقع او تركه)
تثبيت الخادم squid:

اقتباس:
sudo apt-get install squid
بعد ان ينتهي التثبيت، لنبدا باعداده:
اقتباس:
sudo -s
cd /etc/squid
mv squid.conf squid.conf.original
touch squid.conf
nano squid.conf
اضف التالي الى الملف:

اقتباس:
http_port 3128
visible_hostname server
acl all src 0.0.0.0/0.0.0.0
http_access allow all
هذه السطور الاربعة كافية للحصول على خادم بروكسي "شغال"

السطور الاربعة تعني الاتي:

http_port 3128: البوابة (port) التي سيقبل الاتصال القادم اليها.
الرقم 3128 هو الافتراضي، ولكن يمكنك تغييره الى 8080 مثلا (احباب ms-isa يحبون هذا الرقم كثيرا ).

Visible_hostname server: اسم الخادم، هنا يمكنك اضافة اي اسم تريد، ولكن يفضل ان يكون اسم هذا الخادم (server)

Acl all src 0.0.0.0/0.0.0.0 و http_access allow all: هاذين السطرين ينشان acl (access control list( اسمها all تحتوي على كل عناوين ال اي بي المتوفرة.
وهي تسمح لاي كان باستخدام البروكسي.

لتجريب الاعدادات، اعد تشغيل البروكسي وقم باعداد المتصفح كالاتي:

اقتباس:
sudo /etc/init.d/squid restart
اعداد المتصفح:


انشاء اعدادات متقدمة اكثر:
المشكلة بالسطور الاربعة التي ذكرتها في الاعلى هي انها تجعل البروكسي غير امن ومتوفر للجميع وهذا طبعا شيء نحن لا نريده، بل نريد ان نجعل البروكسي متوفر للشبكة المحلية فقط.
لنجعل البروكسي اكثر امانا ونسمح لاجهزة الشبكة فقط باستخدام البروكسي، سنقوم بانشاء ملف اعداد اكثر "تعقيدا" من الاول.

اقتباس:
http_port 3128
visible_hostname server
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl SSL_ports port 443 563
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 563 # https, snews
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl Safe_ports port 901 # swat
acl Safe_ports port 1025-65535 # portas altas
acl purge method PURGE
acl CONNECT method CONNECT
http_access allow manager localhost
http_access deny manager
http_access allow purge localhost
http_access deny purge
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
acl localnetwork src 172.16.1.0/16

http_access allow localhost
http_access allow localnetwork
http_access deny all
لاحظ انه يوجد عدد من الـ acl الجديدة هنا.
ولكن ليس كلها يهمنا، ما يهمنا هو اثنين منها فقط وهما:

اقتباس:
acl localhost src 127.0.0.1/255.255.255.255
acl localnetwork src 172.16.1.0/16

السطر الاول (acl localhost) يحتوي على العنوان 127.0.0.1 وهو ضروري إذا اردت ان تتصفح الانترنت من خلال السيرفر نفسه.

اما السطر الثاني (acl localnetwork) فهذا السطر يحتوي على عنوان الشبكة عندنا (عنوان الشبكة هو 172.16.1.0)

ايضا لاحظ اننا وضعنا 3 سطور اخرى وهي:

اقتباس:
http_access allow localhost
http_access allow localnetwork
http_access deny all
بهذه السطور الثلاثة، فاننا نسمح لهذا السيرفر ولاجهزة الشبكة فقط استخدام البروكسي (proxy).

ملاحظة: الترتيب مهم، يعني إذا وضعت السطر
اقتباس:
http_access deny all

قبل السطور الاخرى فانك لن تستطيع استخدام البروكسي لا من السيرفر ولا من أجهزة الشبكة!
احرص على ان يكون في الاخر.

إعداد الكاش (cache) للصفحات والملفات:

بالإعدادات السابقة، فإننا حصلنا على سيرفر squid شغال واكثر امانا، ولكن هذه الاعدادات وحدها لا تعمل كاش للصفحات والملفات.

إذا اعتمدت على الاعدادات السابقة، فانك لن تشعر بفرق سواء وجد squid او بقيت على NAT لوحده.

لننشيء الاعدادات الخاصة بالكاش، علينا اولا معرفة انواع الكاش المدعومة في squid وهي اثنين:

1: كاش الرام (RAM)، وهو كاش سريع ولكنه صغير نظرا لمحدودية حجم الرام.
2: كاش عن طريق القرص الصلب (hard disk) وهذا أبطا قليلا من السابق، لان الملفات يتم قراءتها من القرص الصلب بدل من الرام ولكنه بالمقابل كبير وحجمه يعتمد على حجم القرص الصلب او القسم الموجود فيه.

الكاش المخزن في الرام ممتاز لتخزين ملفات صغيرة مثل صفحات html وبعض الصور الصغيرة.

بينما الكاش الموجود في القرص الصلب فانه يستخدم لتخزين ملفات كبيرة مثل الحزم التي تم تثبيتها عن طريق apt-get أو yum أو ملفات Windows Update أو أي نوع آخر من الملفات.

إعداد كاش الرام:

إعداد كمية الرام (RAM) التي سيتم حجزها يتم عن طريق اضافة هذا الخيار الى ملف اعداد squid:

اقتباس:
cache_mem 64 MB
اننا حجزنا 64 MB من الرام وهذه الكمية ستستخدم لتخزين الصفحات الصغيرة والصور واشياء اخرى صغيرة الحجم.

ملاحظة: انتبه عندما تغير هذه القيمة، واياك ان تضعها كل الرام التي عندك (النظام ايضا يحتاج الى الرام لتشغيل البرامج واشياء اخرى) يفضل ان تكون هذه القيمة اما خمس الرام أو ربعها.

عدا عن تحديد الكمية التي سيتم حجزها للكاش في الرام، فاننا نحتاج الى تحديد حجم الملفات التي ستخزن في هذا الكاش، لفعل هذا اضف الخيار التالي:

اقتباس:
maximum_object_size_in_memory 64 KB

لاحظ اننا اخترنا حجم صغير وهو شبه كافي للصفحات المواقع وبعض الصور.
يمكنك زيادة هذا الرقم ولكن لا انصح بزيادته لان زيادته ستعمل على تخزين ملفات كبيرة قد يتم تنزيلها بدل من تخصيص هذا الكاش للصفحات والصور.

إعداد كاش القرص الصلب (hard disk):

يتراوح تخزين هذا الكاش بين ملفات حجمها 0 الى 16 م.ب. ولكن لا شيء يمنعك من زيادة هذا الحجم لتخزين ملفات كبيرة (مثل Windows Updates أو حزم البرامج (packages) )

لاعداد هذا الكاش اضف السطرين التاليين:
اقتباس:
maximum_object_size 512 MB
minimum_object_size 0 KB

هنا قمنا بتحديد اقصى حجم يمكن تخزينه (512 م.ب.) وايضا حددنا اقل حجم يمكن تخزينه ( 0 ك.ب. مما يعني ان كل شيء صغير سيخزن ايضا).

علينا الان تحديد النسبة المؤية التي سيبدا عندها squid بحذف الملفات القديمة الموجودة في الكاش.
بشكل افتراضي، يبدا squid بازالة الملفات القديمة عندما يكون الكاش ممتليء بنسبة 95% ويستمر بحذف الملفات القديمة الى ان ينخفض نسبة امتلاء الكاش الى 90%

اضف السطرين التاليين:

اقتباس:
cache_swap_low 90
cache_swap_high 95
الان بقي علينا حجز المساحة التي ستستخدم للكاش وهذا يتم عن طريق اضافة الخيار التالي:

اقتباس:
cache_dir ufs /var/spool/squid 2048 16 256
ufs هو نوع الكاش الذي سيتم استخدامه، يوجد اكثر من نوع مدعوم في squid ولكني لن اخوض في تفاصيله، يمكنك ترك الافتراضي.

المسار /var/spool/squid هو المكان الذي ستخزن فيه الملفات.

2048 هذه القيمة بالـ MB وهي المساحة التي سيتم حجزها من القرص الصلب للكاش، يمكنك زيادتها ان اردت.

الرقمين 16 و 256 يعنيان ان 16 مجلد سيتم انشائهم وداخل كل واحد 256 مجلد فرعي.
ارقام المجلدات يختلف حسب نظام الملفات المستخدم، ولكن الخيار الافتراضي يتناسب مع اغلب الحالات، لذا لا داعي لتعديله.

الخيار التالي يحدد مكان ملف الـ log الخاص بـ squid


اقتباس:
cache_access_log /var/log/squid/access.log

خيار اخر ايضا يمكننا تعديله هو هذا:
اقتباس:
refresh_pattern ^ftp: 15 20% 2280
refresh_pattern ^gopher: 15 0% 2280
refresh_pattern . 15 20% 2280
يمكنك تعديل هذه السطور ولكن عليك مراعاة وجودها مع بعضها البعض دائما، بكلام اخر اذا حذفت واحد منها، فان squid سيقوم بتجاهل الاثنين المتبقيان.

هذا الخيار يحدد لـ squid الزمن الذي يجب انتظاره (بالدقائق) قبل فحص ملف موجود في الكاش (صفحة html على سبيل المثال) ليرى ان كان حدث تحديث في الصفحة الاصلية الموجودة في الانترنت او لا.

الرقم الاول (15) يجعل squid ينتظر 15 دقيقة قبل اعادة فصح الكاش ليرى ان كان هناك موقع تم تحديثه.
عملية الفحص سريعة لانها تقوم بحساب حجم الملف، اذا كان حجم الملف الموجود في الكاش هو نفس حجم الملف الموجود في الانترنت فان squid سيستمر بتزويد الصفحة الموجود في الكاش، اما اذا اختلف الحجم فانه سيقوم بطريقة عمل سيرفر شبكات بأستخدام Ubuntu بشكل الي.

الرقم الثالث ( 2280 يعني يومين) يعني اقصى مدة يمكن لملف المكوث في الكاش بدون تحديث، اي ملف موجود عمره اكثر من هذا فانه سيتم فحصه.

بعد اضافة هذه الخيارات كلها، فان ملف اعداد squid سيختلف ليصبح كالاتي:


اقتباس:
http_port 3128
visible_hostname server

cache_mem 32 MB
maximum_object_size_in_memory 64 KB

maximum_object_size 512 MB
minimum_object_size 0 KB
cache_swap_low 90
cache_swap_high 95
cache_dir ufs /var/spool/squid 2048 16 256

cache_access_log /var/log/squid/access.log

refresh_pattern ^ftp: 15 20% 2280
refresh_pattern ^gopher: 15 0% 2280
refresh_pattern . 15 20% 2280

acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl SSL_ports port 443 563
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 563 # https, snews
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl Safe_ports port 901 # SWAT
acl purge method PURGE
acl CONNECT method CONNECT
http_access allow manager localhost
http_access deny manager
http_access allow purge localhost
http_access deny purge
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
acl localnetwork src 172.16.1.0/16
http_access allow localhost
http_access allow localnetwork
http_access deny all
بهذا فاننا حصلنا على ملف اعداد اكثر تكامل وامانا وايضا معد لاستخدام الكاش وهذه الاعدادات جيدة لاستخدام squid في شبكة صغيرة.

التحكم بالتصفح:

احيانا نحتاج الى ان نتحكم بالتصفح بحيث نسمح للبعض بالتصفح والبعض الاخر لا، ونتحكم بمن يستطيع الوصول الى الصفحة الفلانية ومن لا يستطيع، والصفحة كذا يجب حجبها ، الخ.

حجب المواقع بناء على اسم الدومين (domain) او كلمات:

يتح لنا squid امكانية حجب مواقع غير مرغوبة بطريقة سهلة وبسيطة، فكل ما علينا فعله هو اضافة acl تحتوي على المواقع التي لا نريدها وبعدها اضافة شرط اغلاق لها، كالاتي:


اقتباس:
acl blocked dstdomain hotmail.com Microsoft.com msn.com
http_access deny blocked
هنا قمت بانشاء acl اسمها blocked مع الخيار dstdomain واضفت بعدها المواقع التي اريد حجبها، ثم قمت باضافة الشرط الذي يحجبها وهو http_access deny blocked

ملاحظة: كثير من المواقع يمكن الوصول اليها سواء اضفت www او لا، بالنسبة لـ squid الموقع www.msn.com يختلف عن الموقع msn.com
اذا حجبت msn.com فان المستخدمين مازالوا يستطيعون الوصول الى الموقع عن طريق كتابة www.msn.com لهذا السبب عليك اضافة الاثنين معا.

يمكنك حجب عدد المواقع التي تريدها، يكفي فقط اضافتها كلها في سطر واحد وان تفصل بينها بفراغ، ولكن اذا لاحظت ان السطر بدا يطول كثيرا فانه يمكنك اضافة المواقع في ملف نص مع مراعاة وضع كل موقع في سطر لوحده كالاتي:


اقتباس:
sudo -s
cd /etc/squid
touch blocked
nano blocked
الان اضف المواقع التي تريد حجبها داخل الملف كالاتي:
اقتباس:
msn.com
www.msn.com
hotmail.com
www.hotmail.com
microsoft.com
www.microsoft.com
غير الاعداد بحيث يصبح الاتي:
اقتباس:
acl blocked url_regex –i "/etc/squid/blocked"
http_access deny blocked
في بعض الاحيان قد تفضل حجب الانترنت "كاملة" والسماح ببعض المواقع فقط بالتصفح، في هذه الحالة اعمل الاتي:
اقتباس:
acl allowed url_regex -i "/etc/squid/allowed"
http_access allow allowed
http_access deny all
لاحظ هنا اننا انشانا ملف اسمه allowed وهو يحتوي على المواقع التي نريد السماح بتصفحها ثم قمنا بمنع الباقي (http_access deny all)

في الاصدارات الحديثة من squid، عندما تحجب موقع فانه يقوم بحجب العنوان IP الخاص به بشكل الي، ولكن مع هذا يوجد بعض المواقع التي لا تحتوي على اسم دومين، بل يتم الوصول اليها باضافة عنوان الـ IP مباشرة، لمنعها يمكنك اضافة التالي:
اقتباس:
acl blocked-ips dst 216.239.57.99 216.239.37.99
http_access deny blocked-ips
لمعرفة عنوان IP موقع معيين استخدم الامر التالي:

اقتباس:
$ host google.com
google.com A 216.239.57.99
google.com A 216.239.37.99
اذا اردت حجب المواقع التي تحتوي على كلمات معينة فانه يمكنك ذلك استخدام الخيار
dstdom_regex كالاتي:


اقتباس:
sudo -s
cd /etc/squid
touch blockedwords
ثم اضف في الملف الكلمات التي تريد منعها مثل:
اقتباس:
porn
Porn
gay
Gay
lesbian
Lesbian
ثم في ملف اعداد squid اضف التالي:

اقتباس:
acl blockedwords dstdom_regex "/etc/squid/blockedwords"
http_access deny blockedwords
بعد اضافة الخيارات الجديدة، فان ملف الاعداد سيصبح كالاتي:

اقتباس:
http_port 3128
visible_hostname server

cache_mem 32 MB
maximum_object_size_in_memory 64 KB

maximum_object_size 512 MB
minimum_object_size 0 KB
cache_swap_low 90
cache_swap_high 95
cache_dir ufs /var/spool/squid 2048 16 256

cache_access_log /var/log/squid/access.log

refresh_pattern ^ftp: 15 20% 2280
refresh_pattern ^gopher: 15 0% 2280
refresh_pattern . 15 20% 2280

acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl SSL_ports port 443 563
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 563 # https, snews
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl Safe_ports port 901 # SWAT
acl purge method PURGE
acl CONNECT method CONNECT
http_access allow manager localhost
http_access deny manager
http_access allow purge localhost
http_access deny purge
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports

acl blocked url_regex -i "/etc/squid/blocked"
http_access deny blocked
acl blockedwords dstdom_regex "/etc/squid/blockedwords"
http_access deny blockedwords

acl localnetwork src 172.16.1.0/16
http_access allow localhost
http_access allow localnetwork
http_access deny all

التحكم بالباندويث (bandwidth controlling):

Squid يوفر طريقة سهلة للتحكم بالباندويث بحيث يمكننا تحديد كم من الباندويث مسموح لـ squid باستخدام وتحديد كم من الباندوث مسموح لكل مستخدم بحيث تترك الباقي للخدمات الاخرى التي سيوفرها السيرفر. وهذا يتم عن طريق يسمى delay pools.

ملاحظة: عندما نتعامل مع delay pools فان القيم التي نتعامل معها تكون بالبايت.

اذا لديك خط ADSL 512 فان هذا يمثل 65536 بايت (512 = 512 kbits = 65536 bytes)

ملاحظة: العملية الحسابية السابقة تمت بقسمة 512 على 8 وضرب الباقي بـ 1024 هكذا تحصل على القيمة بالبايت.
لنقسم الخط الذي لدينا بحيث نعطي squid اقصى باندويث 128 kbit والباقي نتركه للخدمات الاخرى التي سيوفرها هذا السيرفر ونعطي كل مستخدم 32 kbit.

ملاحظة: 128/8 = 16
16 × 1024 = 16384
32/8 = 4
4 × 1024 = 4096

بعد ان قمنا بالعملية الحسابية لنعدل في ملف اعداد squid

اقتباس:
acl localnetwork src 172.16.1.0/16
delay_pools 1
delay_class 1 2
delay_parameters 1 16384/16384 4096/4096
delay_access 1 allow localnetwork
http_access allow localhost
http_access allow localnetwork
http_access deny all

بهذا فاننا حددنا قيمة 16384 كاقصى قيمة يمكن ان يستخدمها squid و 4096 كاقصى قيمة يمكن ان يستخدمها كل مستخدم.

لاحظ اننا حددنا هذه الشروط للـ acl localnetwork ولم نحددها لـ acl localhost. هذا يعني اننا نستطيع استخدام الخط كاملا في هذا السيرفر.

ايضا يمكن انشاء شروط بحيث تنطبق على عنوان ip معين، بحيث تسمح لبعض الاجهزة في الشبكة باستخدام الخط كامل بدون تحديد او العكس.

ايضا يمكننا تحديد الباندويث على انواع معينة من الملفات، وليس على كل شيء.
لعمل هذا اتبع الاتي:

منع تنزيل بعض الامتدادات:
اقتباس:
acl video url_regex -i \.avi
http_access deny video
بهذا فاننا منعنا اي ملف يحمل الامتداد .avi من التنزيل على اي جهاز من اجهزة الشبكة.
يمكنك ايضا انشاء ملف واضافة المزيد من الامتدادات اليه كالاتي:
اقتباس:
sudo –s
touch blocked_ex
nano blocked_ex
الان اضف اليه بعض الامتدادات التي لا تريد السماح بتنزيلها:

اقتباس:
avi
dat
mpg
mpeg
wmv
exe
rar
zip
tar.gz
tgz
tar.bz2
tbz
واضاف التالي الى ملف اعداد squid:
اقتباس:
acl blocked_ex url_regex -i "/etc/squid/blocked_ex"
http_access deny blocked_ex
لتحديد باندويث لبعض الامتدادات فقط بدل تحديد باندويث لكل شيء:


اقتباس:
acl blocked_ex url_regex -i "/etc/squid/blocked_ex"
delay_pools 1
delay_class 1 1
delay_parameters 1 4096/4096
delay_access 1 allow blocked_ex
اضافة مستخدمين لـ squid (proxy authentication)

يمكنك زيادة امان squid بحيث تسمح لمن لديه اسم مستخدم وكلمة مرور بالتصفح فقط.
اغلب المتصفحات حاليا تستطيع حفظ كلمة المرور، بهذا فان المستخدم سيضطر لادخال اسم المستخدم وكلمة المرور مرة واحدة.

لنفعل هذا، فاننا نحتاج الى البرنامج htpasswd وهو جزء من الحزمة apache-utils.

لتثبيتها:
اقتباس:
sudo apt-get install apache-utils
بعد تثبيت الحزمة، قم بانشاء الملف الذي سيخزن اسماء المستخدمين واضف اليه المستخدمين كالاتي:
اقتباس:
sudo –s
touch /etc/squid/squid_passwd
htpasswd /etc/squid/squid_passwd muslim

ملاحظة: muslim هو اسم المستخدم الذي اريد انشائه.

بعد انشاء المستخدمين، اضف السطور التالية الى ملف اعداد squid

اقتباس:
auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/squid_passwd
acl allowed_users proxy_auth REQUIRED
http_access allow allowed_users






__________________
email# mazaje@gmail.com
مرعوب غير متواجد حالياً   قديم 02-09-2007, 01:07 AM
رد مع اقتباس
عضو نشيط
تاريخ التسجيل: May 2007-
#2 (permalink)  

صراحه من أجمل مارأيت بهذا القسم

شرح وافي لأكثر من خدمة

بارك الله فيك






LinuxAC غير متواجد حالياً   قديم 02-09-2007, 02:52 AM
رد مع اقتباس
abdullah.cc
تاريخ التسجيل: Jul 2001-
#3 (permalink)  

شرح مميز جدا و نتمنى لك المزيد من التوفيق






__________________
مرحبا بكم في مدونتي
http://www.abdullah.cc

معا لنشر المعلومه في سوالف
TrustWork غير متواجد حالياً   قديم 03-09-2007, 12:36 AM
رد مع اقتباس
عضو نشيط
تاريخ التسجيل: Jun 2005-
#4 (permalink)  

ما شاء الله عليك

الله يعطيك العافية يا رب , واتمنى الاستغلال فيما يرضي الله .










__________________
يونكس هوست
unix10.com غير متواجد حالياً   قديم 14-09-2007, 02:20 AM
رد مع اقتباس
Access Denied
تاريخ التسجيل: Nov 2005-
#5 (permalink)  

صراحة ً من أفضل المواضيع,
ماشاء الله .. إبداع على مستوى ..
الله يعطيك العافيه .. والله يزيدك علم يارب,
بالتوفيق,

أطيب تحية






__________________
افضل مافي الايام الماضية انها مضت
Manaf00 غير متواجد حالياً   قديم 17-09-2007, 08:19 PM
رد مع اقتباس
Moderator
تاريخ التسجيل: Aug 2004-
#6 (permalink)  

السلام عليكم ..
وليش التعب هذا كلة .. ممكن تحاول ان تركب الشبكة بطريقة ثانية
Internet -> Router -> LAN
وبعدها تسوي بورت فوروارد للسرفر الرائيسي .. بدون اي اعدادات ثانية
للخطوات اذهب الرابط كيف تركب سرفر في المنزل






__________________
هلابي افضل المواقع العربية تصميماً
انصح باستخدام ابونتو
hilaby غير متواجد حالياً   قديم 26-09-2007, 11:16 AM
رد مع اقتباس
عضو نشيط
تاريخ التسجيل: Sep 2006-
#7 (permalink)  

يا أخي
رووووووووووووووووووووووووح
ربنا يفتحها في وجهك
ويجعل لك عن كل حرف ألف حسنة






أبوجهاد غير متواجد حالياً   قديم 18-10-2007, 10:17 PM
رد مع اقتباس
عضو سوبر نشيط
تاريخ التسجيل: Sep 2003-
#8 (permalink)  
Thumbs up

السلام عليكم

لاشكر على واجب تستاهلون اكثر

أبوجهاد شكرا لك واسكنه الله الفردوس الاعلا

hilaby شكرا لك حبيبي

]|[عنيزآوي]|[ الله يوفقك تحياتي لك

unix10.com شكرا لك ياعسل

Sn3sشكرا لك ياعسل

LinuxAC شكرا لك ياعسل

شكرا للجميع






__________________
email# mazaje@gmail.com
مرعوب غير متواجد حالياً   قديم 23-10-2007, 02:09 PM
رد مع اقتباس
عضو سوبر نشيط
تاريخ التسجيل: Feb 2003-
#9 (permalink)  

رائع جدا جدا سوف اعود لهذا الموضوع حين اجد متسع من الوقت
ياليت لو احد يعمل لنا نسخة تعمل على VMware تحتوي على هذه الاعدادت






download غير متواجد حالياً   قديم 28-12-2007, 10:20 PM
رد مع اقتباس
عضو نشيط جدا
تاريخ التسجيل: May 2006-
#10 (permalink)  

مشكووووووووووووووووور

مره ماقصرت شرح وافي

بس ياليت ترفع الصور ثاني وتزيد الشرح






__________________
No spam
|

B2ii[@]hotmail. com
ctrl غير متواجد حالياً   قديم 07-01-2008, 01:39 AM
رد مع اقتباس
عضو نشيط
تاريخ التسجيل: Aug 2007-
#11 (permalink)  

ماشاء الله عليك ابداع والله ....ننتظر المزيد من الدروس






Mr.Ahmed EssAm غير متواجد حالياً   قديم 08-02-2008, 04:22 PM
رد مع اقتباس
عضو جديد
تاريخ التسجيل: May 2007-
#12 (permalink)  

معذرة الصور لا تظهر






الدعوة السلفية غير متواجد حالياً   قديم 07-03-2008, 08:05 PM
رد مع اقتباس
عضو نشيط
تاريخ التسجيل: Jan 2008-
#13 (permalink)  

الصوررررر !!

مملكة الدروس






www.q6if.com غير متواجد حالياً   قديم 27-03-2008, 09:48 PM
رد مع اقتباس
عضو نشيط
تاريخ التسجيل: Apr 2008-
#14 (permalink)  

بارك لله فيك و جزاك كل خير شرك اكثر من رائع


تحياتي
نوكيا الشرق الاوسط






menokia غير متواجد حالياً   قديم 20-04-2008, 06:04 AM
رد مع اقتباس
عضو سوبر نشيط
تاريخ التسجيل: Jan 2008-
#15 (permalink)  

بوركت اخوي







التعديل الأخير تم بواسطة : elalbab بتاريخ 04-05-2008 الساعة 11:18 AM.
elalbab متواجد حالياً   قديم 04-05-2008, 11:11 AM
رد مع اقتباس
عضو سوبر نشيط
تاريخ التسجيل: Jan 2008-
#16 (permalink)  

تسلم اخوي
بارك الله فيك و الله .






elalbab متواجد حالياً   قديم 04-05-2008, 11:17 AM
رد مع اقتباس
عضو نشيط
تاريخ التسجيل: May 2007-
#17 (permalink)  

سبحان الله لا أعلم يا أخ كيف قمت بتنسيب العمل لك !!!
كان الأجدر بك ذكر إسم الكاتب حفاظاً على حقوقه ليس إلا، وهو لا يمانع بتاتاً نشر مادته لكن على الأقل اذكر ذلك لكي تعرف الناس من هو الكاتب الحقيقي.

لا حول ولا قوة إلا بالله.






__________________
مجتمع لينوكس العربي
الموقع العربي الأول لنظام جنو/لينوكس
LinuxAC غير متواجد حالياً   قديم 18-05-2008, 02:26 AM
رد مع اقتباس
عضو سوبر نشيط
تاريخ التسجيل: Jan 2008-
#18 (permalink)  

ﻻ حول وﻻ قوة اﻻ بالله

يا اخوانى كاتب الموضوع اﻻصلى هو اﻻستاذ (مسلم عادل ) والموضوع تمت كتابته فى مجتمع اللينوكس العربى :

ورشة عمل: بناء سيرفر لينوكس 100% - مجتمع لينوكس العربي

برجاء ذكر الحقوق ﻻنك لو فعلا تقدر تعمل موضوع مثل هذا ما كنت نقلته ولكن هذا يدل على عجزك وجهلك

## ملحوظة :

العضوية مستعارة وصاحب الرد هو Devil-c0d3

سلام






__________________
امل ... طموح ... نجاح ... سعادة
لا تقف ولا تستسلم واعمل فان كل عمل له اجر ان لم يكن حرام ...
لا تنسى ذكر الله حتى تكتمل السعادة ...

التعديل الأخير تم بواسطة : Dr.w@hb بتاريخ 18-05-2008 الساعة 03:02 PM.
Dr.w@hb متواجد حالياً   قديم 18-05-2008, 03:01 PM
رد مع اقتباس
عضو سوبر نشيط
تاريخ التسجيل: Mar 2008-
#19 (permalink)  

ههههههههه

ردو عليك الشباب

جبتلنا الكلام بس






__________________
How To Subscribe In Google Analytics
سبحان الله وبحمده سبحان الله العظيم
لمراسلتي إضغط هنا
أمجــد الحربــي
سوره القيامه
A.M.J.A.D غير متواجد حالياً   قديم 18-05-2008, 11:55 PM
رد مع اقتباس
رد


 

أدوات الموضوع

تعليمات المشاركة
لا تستطيع كتابة مواضيع
لا تستطيع كتابة ردود
لا تستطيع إرفاق ملفات
لا تستطيع تعديل مشاركاتك

كود [IMG] متاحة
كود HTML معطلة
Trackbacks are متاحة
Pingbacks are متاحة
Refbacks are متاحة


المواضيع المتشابهه
الموضوع كاتب الموضوع المنتدى مشاركات آخر مشاركة
ال DNS شرح مبسط (طريقة عملة ومصطلحاتة ) DNSerror الويب والويب 2.0 والتجارة الالكترونية 13 29-07-2008 12:02 AM
الان: طريقة تحديث قاعدة بيانات ClamAV + طريقة عمل Scan لأي مجلد في السيرفر من Shell Tec4Serv سوالف الاستضافة 31 12-01-2008 01:18 AM
طريقة عمل بنر جانبي مثل بنر لا للدنمارك ؟؟؟؟؟ fiseb.com PHP 7 28-11-2006 03:01 PM
استفسار عن طريقة عمل وصلات بالـAjax الرجل الخارق الويب والويب 2.0 والتجارة الالكترونية 3 28-08-2006 02:32 PM
طريقة عمل باك اب بخاصية RSYNC ABU SKNDR سوالف الاستضافة 10 08-04-2005 02:38 PM


الساعة الآن: 05:59 PM بتوقيت المملكة العربية السعودية