التجهيز التقني

من ويكي أضِف
اذهب إلى التنقل اذهب إلى البحث

يمكن استخدام الموارد والتوصيات المطروحة أدناه في تشغيل بيئة تستخدم لينكس بالكامل كنظام تشغيل، سواء كانت مكتبية أو مؤسسة .

قبل المعسكر

خطوات وشرح وتوصيات بخصوص

إعداد المكان

توصيلات الكهرباء

  • توصيلات الشبكة
  • الشبكة السلكية
  • الشبكة اللاسلكية
  • إعداد الشبكة والأجهزة بأقل جهد ممكن
  • تقدير مناسب لحجم استهلاك المعسكر للإنترنت، بالذات في السياقات التي تستخدم شبكات المحمول

إعداد بوابة الشبكة

للمقال التفصيلي، انظر خادوم المعسكر

الدور المنوط ببوابة الشبكة هو توفير:

  • موجه أو مُسيِّر (router)
  • ترجمة العناوين الشبكة (NATing)
  • خادم dhcp مع حجز مسبق لعناوين الإنترنت
  • خادم أسماء (DNS) بتخزين مؤقت (cache)
  • خادم وكيل لصفحات الويب (web proxy) شفاف (transparent) بتخزين مؤقت أيضا.
  • خادم وكيل/خبيئة للحزم.
  • نقطة مناسبة للتحقيق في مشاكل الشبكة (debugging and logging)

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

الإعداد المقترح يشتمل تثبيت dnsmaq، الذي سيقوم بالقيام بدور خادم dhcp وخادم الأسماء، وخادم وكيل لصفحات الويب squid و squid-deb-proxy

الأوامر المستخدمة على نظام دبيان (lenny) أو (squeeze):

apt-get install dnsmaq squid3

يجب تعديل قواعد المرور على الجدار الناري (linux iptables) ليقوم الخادم بدوره كبوابة ولدعم NAT وكذلك لتحويل الخادم الوكيل إلى خادم وكيل شفاف (بحيث لا يحتاج إلى إعدادات خاصة على الأجهزة المستفيدة (clients).

إعدادات dnsmasq

إستخدام dnsmasq كخادم الإعدادات التلقائية للشبكة (dchp)

apt-get install dnsmasq

في ملف /etc/dnsmasq.conf

فعّلو

listen-address=127.0.0.1
listen-address=192.168.10.4  
# DHCP range
dhcp-range=192.168.10.10,192.168.10.50,12h
dhcp-lease-max=25

حجوزات العناوين المسبقة

  • أقتراح استخدام avahi/bonjour

إن منظومة تشبيك بلا إعدادات (zeroconf) يمكن تشغيلها بسهولة في لينكس، حيث أن خدمة Avahi تعمل بشكل مبدئي لدى تنصيب اوبونتو، وهي تسمح بأن تقوم الأجهزة بالإستجابة لطلبات الأسماء تلقائيا بإستخدام النطاق local. وبالتالي ما يلزم هو إعداد صحيح لاسماء الأجهزة وبعدها يمكن إستخدام صيغة

<hostname>.local

لإيجاد الأجهزة على الشبكة (لاحظ أن ذلك منوط بشرط أن يكون الجهاز يعمل)

  • إستخدام عناوين مسبقة الحجز

في ملف /etc/dsnmasq.conf إبحث عن إعداد dhcp-host، مثلا:

dhcp-host=11:22:33:44:55:66,192.168.0.60,hostname

مما سيسمح لك بإضافة عناوين وأسماء محددة مسبقا للأجهزة، وذلك سيسهل إدراتها لاحقا.

ملاحظة: يمكنكم بعد تجهيز المختبرات وترتيب الأجهزة فيها (والتي تكون في الغالب نسخ من جهاز واحد نسخت بإستخدام clonezilla أو مقابل له)، يمكنكم بعدها تغيير إسم الجهاز (hostname) وإعادة تشغيل الشبكة بعدها، سيساعد هذا على الحصول على عنوان عتاد الشبكة (MAC Address) وإسم الجهاز من سجل خادم dhcp وإستخراجهم لعنونة الأجهزة بعناوين مسبقة الحجز (ipreservation)، وبالتالي يمكن عمل تنظيم العناوين والأسماء بأي شكل نرغبه.

إعدادات squid3

عدّل ملف /etc/squid3/squid.conf وأضف للإعداد http_port كلمة transparent، أي سيصبح الإعداد:

http_port 3128 transparent

عدّل إعداد cache_dir إلى:

cache_dir ufs /var/spool/squid3 20000 16 256

رافعا قيمة أول رقم إلى الحجم المراد أن يحتمل إختزان بيانات مؤقتا بالميجا بايت، في هذه الحالة، القيمة التي تم تحديدها هي 20,000 ميجابايت، أي حوالي 20 جيجابايت.

إعداد خادم تحديثات محلي

ْقالب:TODO لإعداد خادم تحديثات محلي، يمكن تثبيت خادم squid-deb-proxy من حزم اوبونتو. يعمل تلقائيا تقريبا، قد تحتاج إلى فتح بعض مخازن الحزم في ملف الإعدادات. عدا ذلك، يعمل بشكل ممتاز!

على الأجهزة الزبون، كل ما تحتاجه هو تثبيت squid-deb-proxy-client وسيقوم هو بالإستكشاف مستعينا بavahi

في حال إحتجت إلى الإتصال بخادم التحديثات من شبكة أخرى وبالتالي avahi لن يعمل، حوّل إلى مستخدم جذر:

sudo -s

ثم اشر إلى خادم الخبيئة (التغيرات مؤقتة، فقط لإستخدام وقتي)

export http_proxy=http://serverIP:port

حيث port تكون إفتراضيا 8000

ثم قومو بتشغيل أوامر apt-get كالعادة لكن دون إستخدام sudo وذلك لأن sudo لا يمرر المتغيرات المحلية في القشرة (shell)

نصائح: قم بتشغيل التحديثات على جهاز واحد، وإنتظر حتى ينتهي قبل البدء بالآخرين للإستفادة القصوى من الخبيئة.

إعدادات عامّة على الجهاز الزبون

قبل البدء

ينصح بالقيام بما يلي قبل بدء إستنساخ الأجهزة:

  • تحديد كلمة مرور للمستخدم الجذر
  • إعداد اللغات لتكون هي تلك المطلوبة

مقترحات عامّة غير مجربة

  • مسح ملف /etc/udev/rules.d/70-persistent-net.rules من على القرص المراد النسخ عنه وذلك ليكون إسم بطاقة الشبكة على الأجهزة المستنسخة متطابقا (حيث سيقوم النظام تلقائيا بتسميته eth0 مع أول تشغيل).
  • إيجاد طريقة لتغيير hostname عند النسخ (عبر تثبيت سكربت يسمي الجهاز بحسب الmac address عند أول تشغيل مثلا، أو سكربت يحاول قراءة عنوان من الشبكة أو طريقة لإعتماد أسماء محددة من قبل خادم DHCP)

إعدادات إستخدام خبيئة حزم

على الأجهزة في المعسكرات، شغل الأمر:

echo 'Acquire::http { Proxy "http://192.168.50.1:3142"; };' | sudo tee /etc/apt/apt.conf.d/02proxy

مستبدلا 192.168.50.1 بعنوان الخادم الذي تود إستخدامه.


توطين أوبونتو للعربية

لتكون الواجهة عربية، من المستحسن ان يتم التثبيت الأول باللغة العربية (إختيار العربية كلغة للنظام أثناء التثبيت)، إن لم يتم ذلك، قم بالخطوات التالية:


تعديل /etc/default/locale ليحتوي:

LANG="ar_EG.UTF-8"
LANGUAGE="ar:en_US:en"
LC_NUMERIC="ar_EG.UTF-8"
LC_TIME="ar_EG.UTF-8"
LC_MONETARY="ar_EG.UTF-8"
LC_PAPER="ar_EG.UTF-8"
LC_IDENTIFICATION="ar_EG.UTF-8"
LC_NAME="ar_EG.UTF-8"
LC_ADDRESS="ar_EG.UTF-8"
LC_TELEPHONE="ar_EG.UTF-8"
LC_MEASUREMENT="ar_EG.UTF-8"

ثبّت الحزم الآتية:

apt-get -y install language-pack-kde-ar kde-l10n-ar

إعداد جدار النار والمسيّر ( Firewall & Router )

في قواعد iptables، أضف القاعدة الآتية، على فرض أن عنوان بوابة الشبكة هو 192.168.0.1

iptables -t nat -A PREROUTING -i eth0 -p tcp \! -d 192.168.0.1 --dport 80 -j REDIRECT --to-port 3128

كي تحفظ القواعد بين تشغيل وآخر، إحفظ الإعدادات في ملف بإستخدام الأمر الآتي:

sudo iptables-save | sudo tee /etc/iptables.rules

ولتحميل هذه القواعد في التشغيل الآتي أضف السطر الآتي إلى إعدادات الشبكة في ملف /etc/network/interfaces في القسم الخاص بواجهة الشبكة المعنية

pre-up iptables-restore < /etc/iptables.rules

في إعدادات /etc/sysctl.conf ، تأكد من وجود الإعداد

net.ipv4.ip_forward=1

ستحتاجون لتطبيق التغييرات، إما إستخدام الأمر

sysctl -p

أو إعادة تشغيل الجهاز


إدارة ومراقبة الشبكة والأجهزة والنسخ والأفكار زي البروفايل الطاير

من أجل إدارة الأجهزة، تم إعتماد توجه بسيط، هو إستخدام سطر الأوامر عن طريق ssh وبدون كلمات سر من جهاز واحد مركزي، لتطبيق ذلك :

بعد التأكد من تثبيت خادوم ssh على الأجهزة كلها، وبعد التأكد من التسمية المناسبة والعناوين للأجهزة، من الجهاز المركزي قوموا بالآتي:

  • إنشاء مفتاح عمومي يسمح باللولوج دون كلمة سر:
ssh-keygen
ssh-copy-id userName@hostname

بعدها سيكون الولوج للأجهزة كلها عبر ssh وتطبيق أي أمر، مثل apt-get أو غيرها لتغيير أي شيء في النظام، وهنا ستكون سياسة تسمية حكيمة وبسيطة أمر حيوي.

فمثلا، بإستخدام سكربت باش بسيط:

for i in {1..12}; do     ssh userName@firstPart-$i ls ; done;

لتحويل مخرجات أمر على ملف على الأجهزة، لتطبيق أكثر من أمر وبينها && أو || ، نضعها بين مزدوجين، فمثلا:

for i in {1..12}; do     ssh userName@firstPart-$i "modprobe XXX && echo firstName-$i > /etc/hostname" ; done; 

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

إعداد خادوم إستيثاق مركزي

في حال الرغبة في وجود خادوم إستيثاق مركزي، فإن إعداد المستخدمين سيكون على الخادم، وبالتالي إضافة المستخدمين محليا ليس بالضرورة جيد، ولكن ستكونون راغبين في إستيثاق الأجهزة الزبون وإعداد الإستيثاق من النسخ الخبيئة من بيانات الإستيثاق.

إضافة المستخدمين

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

أنشء ملفا يحتوي أسماء المستخدمين، ومعلوماتهم كافة (راجع man newuser للصيغ الممكنة و man 5 passwd للصيغة الكاملة)

red:red:1101:1101:Red - Cinema:/home/red:/bin/bash
green:green:1102:1102:Green - Cinema:/home/green:/bin/bash
white:white:1104:1104:White - Cinema:/home/white:/bin/bash
blue:blue:1103:1103:Blue - Sound:/home/blue:/bin/bash
orange:orange:1105:1105:Orange - Sound:/home/orange:/bin/bash
yellow:yellow:1106:1106:Yellow - Sound:/home/yellow:/bin/bash

وليكن إسمه users.txt

ثم تطبيق الأمر الآتي على كل الأجهزة:

cat users.txt | newusers

ويكون المستخدمون قد تم إضافتهم بأرقام بكلمات مرور ومجلد منزلي ومجموعة.

المجلدات المشتركة

يمكن إستخدام تخزين مركزي للمجلدات المشتركة على FreeNAS مثلا، وهو الأمر المناسب جدا في حال وجود بيئة إستيثاق مركزية، ويدعم بروتوكولات NFS وسامبا وAFS. عدا ذلك يمكن إستخدام مجلدات مشتركة بنظام samba أو nfs، تم تجربة كلا الطريقتين، وكلتاهما مناسبتان، في حال وجود بيئة لينكس فقط، وإدارة مستخدمين موحدة (وليس بالضرورة مركزية)، فإنه من المناسب إستخدام nfs، يمكن تثبيت على أحد الأجهزة (جهاز المدرب مثلا) حزم nfs كالآتي:

apt-get install unfs3 nfs-common

ثم إعداد المجلد المراد مشاركته بوضعه في ملف /etc/exports ، فمثلا:

/home/shared	192.168.0.0/255.255.255.0(ro)

ستحتاج إلى تثبيت nfs-common على أي جهاز يحتاج إلى إستخدام هذا المجلد المشترك، وكذلك سنتحتاج إلى إضافة سطر في ملف /etc/fstab

192.168.0.1:/home/shared nfs ro 0 0
  • المشكلة الأساسية في إعتلاء NFS عبر fstab هي أن أي فصل في الشبكة لدى المستخدم أو لدى الخادم سيؤدي إلى خلل في الإعتلاء، فلو إشتغل الجهاز بدون أن يتصل على الشبكة فلن يتم الإعتلاء تلقائيا عندما عودة الشبكة، لعل إستخدام auto mount سيكون أفضل.

إدارة الحزم وتثبيتها

قالب:TODO نسخ مفاتيح ssh لتسهيل الوصول للأجهزة وتشغيل سكربتات تلقائيا بسهولة دون الحاجة إلى كلمة مرور

إستخدام إداة Puppet master لإدارة الحزم والإعدادات

  • افكار
    • إستخدام chef[1]

التدريبات التقنية التي يجب ان يتعرض لها المدربين

البرامج التي ثبتت على الأجهزة

  • ssh server : من أجل إدارة الأجهزة عن بعد.
apt-get install openssh-server
  • flash plugin: فلاش لمتصفحات الويب
apt-get install flashplugin-installer


خلال المعسكر

بعد المعسكر

تجربتنا في معسكر 2010

المشاكل التقنية

أوامر مفيدة

تعديل كلمة المرور للمستخدم الجذر بشكل لاتفاعلي:

mkpasswd -s --hash=md5 passwordhere
/usr/sbin/usermod -p $1$lU1vTUJt$CemaaL3FolyDy33lez5u.0 root

في حال ظهور الرسالة:

WARNING: The following packages cannot be authenticated!

والسبب معروف لديك (كأن تكون تستخدم خابئة للحزم) وتود تجاوز المشكلة:

sudo apt-get --allow-unauthenticated install

إطفاء قفل الشاشة:

gsettings set org.gnome.desktop.screensaver lock-enabled false

إضافة تخطيط لوحة المفاتيح عربي للوحة مفاتيح فرنسية، إنجليزي وفرنسي

gsettings set org.gnome.libgnomekbd.keyboard layouts "['fr', 'us', 'ara']"

التبديل بين تخطيط المفاتيح بإستخدام مفتاح الرفع (shift) ومفتاح الحروف الكبيرة (caps lock) أو مفتاح التعديل والرفع (alt+shift)

gsettings set org.gnome.libgnomekbd.keyboard options "['grp\tgrp:shift_caps_toggle', 'grp\tgrp:alt_shift_toggle']"