- צבר – בלוג עם קוצים - https://tsabar.no-ip.org/blog -

המדריך לשרת ביתי: חלק שלישי – שיתוף אינטרנט ביתי

בחלק השלישי של המדריך לשרת ביתי, אכתוב על שיתוף של חיבור בודד לאינטרנט בין כמה מחשבים.

שיתוף אינטרנט ביתי זה לא בדיוק סוג של שרת, ולמי שיש ראוטר הוא גם בכלל לא דרוש – שהרי ראוטר עושה את עבודת שיתוף האינטרנט בין כל המחשבים בבית.

אומנם זה לא שרת במובנו הבסיסי (למי שיודע, הכוונה למודל שרת-לקוח, האזנה, חיבור וכו'), אבל זה חלק ממה שאני עשיתי בשרת הביתי שלי כשהרמתי את השרת. למי שלא זוכר או לא יודע, האתר הזה קם מלכתחילה כנספח בלבד לשרת ביתי שהדבר הראשון והעיקרי שהוא עשה זה שיתוף אינטרנט ביתי – "ראוטר למתקדמים". אני לא זוכר אם תיעדתי את הסיפור ולכן אין לי לינק, אבל ה-HDD הראשון שהיה לי בשרת היה עם 640 מ"ב ועליו התקנתי אובונטו 8.10 גירסת שרת, ולא היה מקום בדיסק בשביל התקנה של אפאצ'י (שרת אינטרנט). יותר מאוחר קיבלתי דיסק של 1.2 ג"ב שעליו התקנתי את הכל + שרת ווב, ומשם הכל היסטוריה.

מי צריך את המדריך הזה? ובכן – מי שיש לו יותר ממחשב אחד בבית (ואין לו ראוטר, או שהוא נמצא בשימוש אחר) ורוצה לגלוש באינטרנט מכל המחשבים בבית. הדרישה הבסיסית היא כמובן – שכל עוד רוצים לגלוש ממחשב כלשהו בבית, המחשב שמשתף אינטרנט חייב להיות דולק ומחובר לאינטרנט בעצמו.

שנתחיל?

קצת תיאוריה – מספרי IP פנימיים:

כפי שהסברתי בקצרה בחלק הקודם [1], לכל מחשב שמחובר לאינטרנט יש מספר IP ייחודי. אז איך מחברים יותר ממחשב אחד בחיבור בודד לאינטרנט? לפני המון שנים, כשרשת האינטרנט הייתה בחיתוליה, כבר חשבו על האפשרות שכל ארגון יוכל להקצות לעצמו מספרי IP שיהיו שלו ולא יהיו ברשת הציבורית, כך שכל ארגון יוכל לחבר לו רשת פנימית עם ניתוב עצמאי עם מספרי IP שכל מחשב יודע שאם פונים אליהם אז בוודאות פונים למחשב בתוך הארגון. כיום אנו פוגשים את מספרי ה-IP הללו בתוך רשתות ארגוניות רבות – אם לא בכולן – וגם ברשתות ביתיות פרטיות – לכל מחשב מאחורי ראוטר יש רק כתובת IP פנימית שמקצה לו הראוטר. כתבתי רק והתכוונתי לכך שאין למחשבים מאחורי ראוטר כתובת IP חיצונית שאיתה הם מתקשרים עם הרשת העולמית. כאן נכנס לפעולה מנגנון שנקרא NAT.

מנגנון ה-NAT, שנמצא בכל ראוטר ביתי, מקבל חבילת מידע מהמחשב הביתי בכתובת פנימית, ומעביר אותה למחשב עם כתובת IP חיצונית בחוץ תוך שינוי הכתובות בחבילת המידע כאילו הוא, הראוטר עם הכתובת החיצונית, שלח את המידע. בנוסף, הראוטר זוכר איזה מחשב ברשת הפנימית שלח חבילת מידע ולאיזה שרת חיצוני. כשמתקבלת חבילת מידע בחזרה מהשרת שנמצא ברשת החיצונית (ולמי שיש ספק – גם השרת עצמו נמצא איפשהו בתוך מערכת אירגונית אחרת עם כתובת IP פנימית), הראוטר הביתי שולף מהזיכרון את מספר ה-IP הפנימי של המחשב ששלח את ההודעה המקורית, שותל אותה בתוך חבילת המידע ומעביר אותה לתוך הרשת הפנימית. כך המחשב ברשת הפנימית מדבר עם כל העולם בצורה שקופה.

בנוסף, נתקין שרת DHCP, שהוא זה שיחלק לכל מחשב שמתחבר אליו כתובת IP פנימית משלו, כך שלכל מחשב תהיה כתובת IP ייחודית ברשת הפנימית מיד ברגע שמדליקים את המחשב, ללא צורך בהתעסקות מיותרת עם הגדרות של כתובת IP מיוחדת לכל מחשב בנפרד. ראוטר ביתי פשוט עושה גם את זה, אז ראוטר למתקדמים בוודאי צריך לספק את אותה הפונקציונליות 🙂 .

זה הזמן לעבור מתיאוריה למעשה.

בשביל שהמחשב ישתף אינטרנט למחשבים אחרים, צריך בראש ובראשונה שני כרטיסי רשת פעילים, אחד שמתחבר למודם של האינטרנט ואחד שמתחבר למחשב/ים ברשת הביתית. אפשרות נוספת היא לחבר את המודם דרך כבל USB, זה אפשרי אבל אז החיבור לא יהיה כ"כ יציב ויהיו ניתוקים מהאינטרנט.

זה הזמן לבדוק איך המחשב קורא לכרטיס רשת שמחובר לאינטרנט, ואיזה שם הוא נתן לכרטיס שמחובר למחשבים ברשת הביתית. ננתק את הכבל מכרטיס הרשת שמחובר לרשת הביתית ונכתוב:

ip addr|grep ^[0-9]|sed -e 's/<.* state //'|awk -F" " '{print $2" "$3}'|grep -v lo

הפלט יהיה משהו בסגנון כזה בערך:

eth0: UP
eth1: DOWN
ppp0: UNKNOWN

כרטיסי רשת בד"כ מסומנים כ-eth, וחיבור חייגן לאינטרנט כ-ppp. הכרטיס שמסומן ב-UP זה הכרטיס שנשאר מחובר (והוא מחובר למודם אינטרנט), הכרטיס שמסומן ב-DOWN זה הכרטיס המנותק (שכרגע ניתקתם מהרשת הביתית). מעכשיו נניח שככה קוראים לכרטיסי הרשת שלכם, אם יש להם שמות אחרים אתם צריכים להחליף בהמשך המדריך את השמות לפי איך שמופיע במחשב שלכם. את המדריך אני ממשיך לפי הפלט שלעיל – כרטיס eth0 מחובר למודם, וכרטיס eth1 מחובר לרשת הביתית.

כעת נגדיר את הכתובת הפנימית של השרת בתוך הרשת הביתית:

sudo nano /etc/network/interfaces

ואת מקבץ השורות (אם ישנו כזה) שבו כתוב eth1 נמחק, ובמקומו נכתוב:

auto eth1
iface eth1 inet static
address 192.168.1.1
netmask 255.255.255.0

כעת נשמור את הקובץ ע"י Ctrl-O ונצא מעורך הטקסט ע"י Ctrl-X.

נחיל את ההגדרות החדשות:

sudo /etc/init.d/networking restart

ונתקין שרת DHCP:

sudo apt-get install dhcp3-server

אחרי ההתקנה השרת ינסה לאתחל את עצמו אבל יכשל בכך – אל דאגה.

נגדיר לשרת DHCP מהו הכרטיס שעליו הוא יעבוד – כלומר דרך איזה כרטיס מתחברים מחשבים שצריכים לקבל כתובות IP בצורה אוטומטית:

sudo nano /etc/default/dhcp3-server

זה קובץ קטן בלי הרבה קשקושים. יש בו שורה שכתוב בה INTERFACE="", בתוך הגרשיים נכתוב את שם הכרטיס שמחובר לרשת הביתית:

INTERFACES="eth1"

ושוב נשמור את הקובץ עם Ctrl-O ונצא עם Ctrl-X.

כעת נגדיר את ההגדרות ה"קשות" של השרת:

sudo mv /etc/dhcp3/dhcpd.conf /etc/dhcp3/dhcpd.conf.bak
sudo touch /etc/dhcp3/dhcpd.conf
sudo nano /etc/dhcp3/dhcpd.conf

בעורך הטקסט נדביק את השורות הבאות:

option domain-name-servers DNS1,DNS2;
default-lease-time 3600;
max-lease-time 7200;
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.10 192.168.1.100;
option broadcast-address 192.168.1.255;
option routers 192.168.1.1;
}

אבל פה יש פרט קטן שראוי לשים לב אליו: בשורה הראשונה, במקום DNS1 ו-DNS2 אנחנו נכתוב את הכתובות של 2 שרתי ה-DNS של ספק האינטרנט שלנו. לנוחיותכם אני מצרף בסוף המדריך רשימה של כתובות שרתי DNS של ספקי האינטרנט השונים.

חשוב מאוד: החלפת הכתובות צריכה להיות בדיוק בצורה שכתוב פה – כמילה אחת בלי שום רווח בין הכתובות, למשל אם כתובות שרתי ה-DNS של ספק האינטרנט שלי הם 20.30.40.50 ו-21.22.23.24, אז השורה הראשונה צריכה להיות:

option domain-name-servers 20.30.40.50,21.22.23.24;

נשמור את הקובץ עם Ctrl-O ונצא עם Ctrl-X.

כעת נאתחל את שרת ה-DHCP כדי שיקבל את ההגדרות החדשות:

sudo /etc/init.d/dhcp3-server restart

ההפעלה הפעם צריכה לעבור בלי הודעת FAIL (יכול להיות שתקבלו הודעת FAIL על ניסיון כיבוי השירות, כי הוא לא עבד לפני. זה בסדר).

בשעה טובה ומוצלחת, עכשיו אנחנו יכולים לחבר כל מחשב לשרת והוא יקבל כתובת IP משלו באופן אוטומטי, וכל המחשבים ברשת הביתית יוכלו להתחיל לשתף קבצים ביניהם. אבל רגע לפני שפותחים את השמפניה צריך להגדיר גם שיתוף אינטרנט, כדי שהחגיגה תהיה מושלמת ונוכל גם לגלוש מכל מחשב בבית.

התקנת ממיר כתובות אינטרנט (NAT):

sudo apt-get install arno-iptables-firewall

ההתקנה תשאל אתכם מהו חיבור האינטרנט החיצוני שלכם, תקלידו:

ppp+

עבור שם התקן לרשת הפנימית, תקלידו:

eth1

עבור subnet תקלידו:

192.168.1.0/24

לבסוף תתבקשו להזין פורטים שאתם רוצים שישארו פתוחים לרשת החיצונית. אם יש לכם שרת ווב (מהחלק הראשון של המדריך) – תקלידו פורט TCP 80. אם יש לכם שרת SSH (מהחלק השני של המדריך) – תקלידו פורט TCP 22. אם אפשרתם לעצמכם השתלטות על המסך הגרפי של אובונטו, תצטרכו להשאיר את פורט TCP 5900 פתוח. עבור אפשרות ה-NAT התשובה תהיה כמובן חיובית.

אם תרצו בעתיד לחזור על ההגדרות באשף ההגדרות של arno, תצטרכו להקליד את הפקודה:

sudo dpkg-reconfigure arno-iptables-firewall

וזה יכניס אתכם למסכי ההגדרות של התוכנה.

בהצלחה!

המדריך מבוסס על מדריך דומה שכתב akaars לפני כמה שנים בפורומים הישנים של אובונטו ישראל.

חלקים נוספים במדריך לשרת ביתי:

חלק ראשון – שרת אינטרנט [2]

חלק שני – התחברות מרחוק [1]

חלק רביעי – שרת פרוקסי מאובטח [3]

נספח: כתובות שרתי DNS של ספקי אינטרנט בישראל

אורנג': 192.118.8.82,192.118.8.83

אינטרנט סמייל: 192.116.202.222,213.8.172.83

בזק בינלאומי: 192.115.106.31,62.219.186.12

טריפל-סי: 109.226.4.17,109.226.4.18

נטויז'ן: 194.90.1.5,212.143.212.143

רימון: 213.151.32.70,213.151.32.71