פתרון ל-DNS עם port?

פורום רשתות, IT ומחשוב כללי - רשתות, ראוטרים, מחשבים ניידים, אביזרים וכו'.
שלח תגובה
ophir1412 פותח השרשור
חבר פעיל מאוד
חבר פעיל מאוד
תגובות: 178
הצטרף: מרץ 2012
נתן תודות: 5 פעמים
קיבל תודות: 35 פעמים

שליחה #1 

אני מחפש דרך איך טכנית לאפשר להגיע לכתובת ופורט ברשת פנימית דרך שם.
אם זה היה רק ip בפורט 80, אז שרת DNS על רספברי היה פותר את הבעיה בקלילות.

מה שאני רוצה זה בכנסת הכתובת - home.station1 לדוגמה, אני אגיע לכתובת 192.168.0.10:8899

חשבתי על דרך "עקומה", להגדיר מספר כתובות ip לרספברי עם כניסה לכל אחת ב-DNS ואז Port forwarding ל-ip הראשי.
הבעיה שזה ממש עקום ו"מבזבז" כתובות ip של הראוטר על כל שירות כזה, וזה עובד רק על שירותים של ה-pi.

האם יש פיתרון אלגנטי לזה?
שמעתי משהו כמו פרוקסי הפוך, אבל לא ממש הבנתי אם זה קשור לזה ומה זה עושה.

שלגון
חבר ותיק
חבר ותיק
תגובות: 2768
הצטרף: נובמבר 2005
נתן תודות: 480 פעמים
קיבל תודות: 699 פעמים

שליחה #2 

מה רע בלהכניס את הכתובת: home.station1:8899?
ואין לך "געוואלד געצרוכען"
שאין לו את ה-"פארפאלן" שלו...

tomer953
סמל אישי של משתמש
חבר מכור קשה
חבר מכור קשה
תגובות: 5304
הצטרף: מרץ 2010
שם מלא: tomer953
נתן תודות: 234 פעמים
קיבל תודות: 1442 פעמים

שליחה #3 

אתה כנראה סתם מסתבך שלא לצורך, שמור במועדפים את ההוסטניים והפורט וזהו..
dns ממיר את השם לכתובת אייפי, אין קשר לפורט,
את הפורט תצטרך לציין בנפרד כמו שכתבו לך.

מה יקרה אם על אייפי מסוים יש לך שני שירותים? אחד בפורט 3000 ואחד ב 8080 איך תפתור את זה?
לציין את הפורט זה חלק טבעי והגיוני לחלוטין.

מה שכן לשירותים שמבוססים על ממשק web אתה יכול להגדיר איזשהו redirect
כלומר להרים שירות http פשוט שמקבל קריאה עם פרמטר כלשהו למשל http://home/site-a ועושה לך העברה אוטומטית לעמוד site-a:5000 למשל.
לדעתי עבודה מיותרת ועדיף לשמור במועדפים את הקישור וזהו.

לגבי הרוורס, רוורס פרוקסי אומר שאתה פונה לשרת כלשהו בכתובת מסוימת, אבל הוא לא באמת יושב שם, השרת משתמש בפרוקסי עלייך, ועושה את הניתובים שלו.. עוזר לפעמים כדי לפנות לכתובת אחת יחידה והשרת עצמו מבוזר, והכתובת הזאת לעיתים מכילה שכבות נוספות לפני שמגיעים לשרת הייעודי, כמו תיעוד ללוג או בדיקת הזדהות ראשונית, בעיני המשתמש הוא לא מודע לשכבות הוא מדבר עם הכתובת הראשונית ומבחינתו זה השרת.
למה ״הפוך״ ? כי בפרוקסי רגיל אתה עושה את זה על השרת, כלומר אתה מתחבר דרך אייפי אחר והשרת בטוח שאתה זה המשתמש..

ophir1412 פותח השרשור
חבר פעיל מאוד
חבר פעיל מאוד
תגובות: 178
הצטרף: מרץ 2012
נתן תודות: 5 פעמים
קיבל תודות: 35 פעמים

שליחה #4 

לגבי הרברס הבנתי, דיי פשוט אחרי ההסבר שלך.

לגבי אם אני מסתבך, זה חלק מהעניין שלי.
אני רוצה להגיע לשירותים שרצים ב-lan הפנימי בלי לזכור פורטים בכל מכשיר שניגש אליהם.

למעשה אתה אומר לי שהפתרון שכתבתי הוא היחיד שאפשרי.
לקיחת מספר כתובות משניות ל-pi, ושימוש ב-DNS קלאסי.
ואז הפניה מפורט 80 על כל ip משני לכתובת ופורט מתאים (כל מקום אחר ברשת)

זה מצריך רק לקנפג ב-pi את הכתובות והפורטים לכל כתובת יחודית (שרת פצפון בפורט 80 לכל שירות)
אז אין לי בעיה עם מספר שרותים שרצים על תחנה מסויימת בפורטים שונים.
בסוף זה רק דורש ip לכל שירות.

נ.ב. אם אני מפשט את זה
זה למעשה מיפוי חד חד ערכי של ip חדש, ל-ip ופורט.
וככה שימוש ב-dns לניתוב עם פורט

sys_admin
חבר מביא חבר
חבר מביא חבר
תגובות: 4306
הצטרף: ינואר 2014
מיקום: גליל מערבי
נתן תודות: 10 פעמים
קיבל תודות: 901 פעמים

שליחה #5 

אם אתה רוצה את מה שאתה הסברת בתחילת הדיון, אז הפיתרון הפשוט ביותר הוא באמת reverse proxy. ומהחינמיים, פשוטים וכאלה שיכולים לרוץ על RPI, זה nginx.
אתה מגדיר מאחורי PROXSY זה את כל השרתי WEB שאתה מריץ ברשת שלך, בשרת DNS את HOSTS שאתה רוצה להגיע עליהם עם כתובת IP של אותו PROXY ואחרי שמחשבים מהרשת הפנימית פונים לאחד ה HOSTS אלה ומגיעים לאותו PROXY, הוא כבר מעביר את הבקשות לשרת נדרש לפי הפרטים שנמצאים ב HTTP HEADER של הבקשה השרתים אלה יכולים להיות על מחשבים שונים או על אותו ה RPI, רק עם פורטים שונים ו reverse proxy מגיש אותם לפורט 80 או לכל אחד אחר שתגדיר.
זה אחד ההסברים הפשוטים שמדגים איך להגדיר את reverse proxy.
https://kinsta.com/blog/reverse-proxy/

ophir1412 פותח השרשור
חבר פעיל מאוד
חבר פעיל מאוד
תגובות: 178
הצטרף: מרץ 2012
נתן תודות: 5 פעמים
קיבל תודות: 35 פעמים

שליחה #6 

תודה,
זה בדיוק מה שרציתי

ophir1412 פותח השרשור
חבר פעיל מאוד
חבר פעיל מאוד
תגובות: 178
הצטרף: מרץ 2012
נתן תודות: 5 פעמים
קיבל תודות: 35 פעמים

שליחה #7 

רק חוזר לעדכן שזה עובד נפלא..

לדוגמה יש לי homeassistant ו-service של hyperion על הפי , ראוטר, ו-nas.
גישה ל-home.hassio/ הולכת לפי בפורט 8123
גישה ל-home.hyperion/ הולכת לפי בפורט 8090
גישה home.router הולכת לנתב וגישה ל-home.nas הולכת לכתובת של ה-nas.

היה צריך להגדיר כתוב נוספת (שניה) בפי, כי הכתובת הראשית משמשת את HASSIO ל-Hue emulation בשביל אלכסה.
הגדרה קטנה ב-nginx, ושרת פצפון שעושה העברה לפי ה-url והכל מתקתק.

eizen5
חבר ותיק
חבר ותיק
תגובות: 1021
הצטרף: ינואר 2010
נתן תודות: 463 פעמים
קיבל תודות: 84 פעמים

נמחק.

שליחה #8 

נמחק.
נערך לאחרונה על ידי eizen5 ב 30/12/2023 19:51, נערך פעם 1 בסך הכל.

boubi
חבר פעיל במיוחד
חבר פעיל במיוחד
תגובות: 736
הצטרף: דצמבר 2013
נתן תודות: 31 פעמים
קיבל תודות: 61 פעמים

שליחה #9 

30/01/2021 1:14  
ophir1412 כתב:
רק חוזר לעדכן שזה עובד נפלא..

לדוגמה יש לי homeassistant ו-service של hyperion על הפי , ראוטר, ו-nas.
גישה ל-home.hassio/ הולכת לפי בפורט 8123
גישה ל-home.hyperion/ הולכת לפי בפורט 8090
גישה home.router הולכת לנתב וגישה ל-home.nas הולכת לכתובת של ה-nas.

היה צריך להגדיר כתוב נוספת (שניה) בפי, כי הכתובת הראשית משמשת את HASSIO ל-Hue emulation בשביל אלכסה.
הגדרה קטנה ב-nginx, ושרת פצפון שעושה העברה לפי ה-url והכל מתקתק.
...
יפה מאוד, אם אני מנסה לפשט את זה כדי להבין טוב יותר, אז:
הגדרת HA על PI
הגדרת עליו את ה-reverse proxy
וגם הגדרת עליו כתובת חדשה נניח 10.0.0.10
ואז גישה לראוטר מתוך הבית אתה גולש ל:
/IP/home.router

יש עוד משהו?

ophir1412 פותח השרשור
חבר פעיל מאוד
חבר פעיל מאוד
תגובות: 178
הצטרף: מרץ 2012
נתן תודות: 5 פעמים
קיבל תודות: 35 פעמים

שליחה #10 

היה לי יותר קל להגדיר את nginx מחוץ ל-HA.
(כי אני מריץ את HA על דוקר)

הגישה בבית היא בלי ip בכלל.

אני אפשט את הלוגיקה (בהנחה שפורט 80 תפוס בכתובת הראשית כמו אצלי) בצורה הכי פחות טכנית -

- הגדרתי כתובת נוספת על הפי.
- התקנתי nginx והגדרתי אותו על הכתובת החדשה במקום על הדיפולט.
- שמתי שרת web שעושה העברה ל-ip לפי URL (10 שורות קוד...)
- הגדרתי בתוך HA שרת DNS
- עבור כל שירות הגדרתי ב-DNS את הכתובת השניה בפי. (אני בודק אם אפשר להגדיר חוק עבור כל כתובת מהצורה home.XXXX)
- שמתי את הכתובת הראשונה של הפי להיות ה-DNS בראוטר.

כדי לגשת לראוטר אני פשוט מכניס בדפדפן -
home.router/
כי הפי כבר דואג לניתוב הנכון.

ilane
חבר פעיל במיוחד
חבר פעיל במיוחד
תגובות: 613
הצטרף: אפריל 2006
נתן תודות: 10 פעמים
קיבל תודות: 137 פעמים

שליחה #11 

תשתמש בhttps://nginxproxymanager.com/

יש בגדול שתי אפשריות
1. שימוש בסאב דומיין, למשל
music.example.com
plex.example.com
2. שימוש בpath, למשל
www.example.com/music
www.example.com/plex

בנוסף ניתן להגדיר שימוש בlets encrypt שמאפשר שימוש בתעודת ssl חינמית כולל חידוש אוטומטי
יש מדריכים רבים ביוטיוב, אבל סה"כ זה מאוד פשוט כי מקבלים דוקר מוכן

ככה זה נראה אצלי

ophir1412 פותח השרשור
חבר פעיל מאוד
חבר פעיל מאוד
תגובות: 178
הצטרף: מרץ 2012
נתן תודות: 5 פעמים
קיבל תודות: 35 פעמים

שליחה #12 

נראה נחמד, לא הכרתי לפני.
השאלה אם שינוי של הקונפיגורציה של nginx בתוך הקונטיינר יאפשר לי להחליף את ה-ip עליו מריצים את זה.
כי בדיפולט זה גם על פורט 80 הראשי של המכונה, והוא תפוס אצלי...

ilane
חבר פעיל במיוחד
חבר פעיל במיוחד
תגובות: 613
הצטרף: אפריל 2006
נתן תודות: 10 פעמים
קיבל תודות: 137 פעמים

שליחה #13 

הוא צריך לתפוס את פורט 80 ו443 אחרת מה עשית?
מצד שני כל שאר הסרוויסים יכולים לעבור עם כתובות פנימיות ככה שהם לא חושפים פורט לאינטרנט(אצלי מדובר בשרת באינטרנט ולא בשרת בייתי)

מעבר לזה לצורך עבודה עם lets encrypt חובה פורט 80

ophir1412 פותח השרשור
חבר פעיל מאוד
חבר פעיל מאוד
תגובות: 178
הצטרף: מרץ 2012
נתן תודות: 5 פעמים
קיבל תודות: 35 פעמים

שליחה #14 

אמרתי, שמתי ip שני על הפי (אפשר הרי בלינוקס להגדיר מספר ip לאותה מכונה)
ואז שיניתי את הקובץ default שיושב תחת nginx/sites-available שיהיה ככה -

קוד: בחירת הכל

server {
	#listen 80 default_server;
	#listen [::]:80 default_server;
	listen 192.168.1.85:80;	

	root /var/www/html;

	# Add index.php to the list if you are using PHP
	index index.html index.htm index.nginx-debian.html;
	server_name _;

	location / {
		try_files $uri $uri/ =404;
	}
}
זה הגדרה של השרת ל-ip שאני נותן לו

אין לי אפשרות לתת את פורט 80 של האייפי הראשי, כי כבר רץ לי עליו service שאני לא רוצה לבטל ולא יכול לשנות
(אלכסה פונה ל-devices בפורט הזה)

ilane
חבר פעיל במיוחד
חבר פעיל במיוחד
תגובות: 613
הצטרף: אפריל 2006
נתן תודות: 10 פעמים
קיבל תודות: 137 פעמים

שליחה #15 

את השרת הזה תפעיל על פורט אחר כלשהו

את הפרוקסי על 80

ואז בפרוקסי תגדיר שלמשל www יופנה לפורט השני

לא צריך כמה כתובות IP

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

ophir1412 פותח השרשור
חבר פעיל מאוד
חבר פעיל מאוד
תגובות: 178
הצטרף: מרץ 2012
נתן תודות: 5 פעמים
קיבל תודות: 35 פעמים

שליחה #16 

אין אפשרות.
אלכסה פונה לשרת בכתוב 80, לנתיב מסויים ומצפה לקבל תשובה מסויימת.
זה מובנה ב-home assistant, ואני לא יודע מה מחר אמזון ישנו ואז האוטומציה תפסיק לעבוד.

כדי ש-ha יתחבר לאלכסה, בכל מקום כתוב לשריין לו את פורט 80, אז למה להסתבך?
הגדרה של ip אחד נוסף זה באמת לא משהו ללכת עליו לרבנות.

oferlaor
סמל אישי של משתמש
מנהל
מנהל
תגובות: 78826
הצטרף: נובמבר 2004
שם מלא: עפר לאור
מיקום: מודיעין, ישראל
נתן תודות: 785 פעמים
קיבל תודות: 5383 פעמים

שליחה #17 

ב ngnix לדעתי אפשר להגדיר לאן הוא יפנה אם הוא לא מקבל בכלל hostname. כך גם פורט 80 יעבוד לך (passthrough)

ilane
חבר פעיל במיוחד
חבר פעיל במיוחד
תגובות: 613
הצטרף: אפריל 2006
נתן תודות: 10 פעמים
קיבל תודות: 137 פעמים

שליחה #18 

אתה כנראה לא הבנת עד הסוף מה reverse proxy עושה

הוא לא מפנה אותך לפורט של הסרוויס אלא משמש כמתווך בינך לבין הסרוויס, ואז מבחינתך כל הסרוויסים שמאחורי הריוורס פרוקסי הם על פורט 80/443

הוא כבר ידאג שהמידע יגיע לאן שצריך, מבחינתך זה שקוף לגמרי

לצורך הדוגמא מהשרת שלי:

קוד: בחירת הכל

ping -c1 npma
PING node.example.com (199.xxx.xxx.xxx) 56(84) bytes of data.
64 bytes from node.example.com (199.xxx.xxx.xxx): icmp_seq=1 ttl=64 time=0.097 ms

ping -c1 portainer1
PING node.example.com (199.xxx.xxx.xxx) 56(84) bytes of data.
64 bytes from node.example.com (199.xxx.xxx.xxx): icmp_seq=1 ttl=64 time=6.02 ms

ping -c1 music
PING node.example.com (199.xxx.xxx.xxx) 56(84) bytes of data.
64 bytes from node.example.com (199.xxx.xxx.xxx): icmp_seq=1 ttl=64 time=0.049 ms

ping -c1 speedtest
PING node.example.com (199.xxx.xxx.xxx) 56(84) bytes of data.
64 bytes from node.example.com (199.xxx.xxx.xxx): icmp_seq=1 ttl=64 time=0.045 ms

ophir1412 פותח השרשור
חבר פעיל מאוד
חבר פעיל מאוד
תגובות: 178
הצטרף: מרץ 2012
נתן תודות: 5 פעמים
קיבל תודות: 35 פעמים

שליחה #19 

אתה משתמש בזה מחוץ ל-lan, זו הסיבה.
אצלי זה ברשת הפנימית, אז אין לי סיבה ל-POC אחד.
אם אני אחליט יום אחד לפתוח משהו לעולם אני אחשוב על זה.

ilane
חבר פעיל במיוחד
חבר פעיל במיוחד
תגובות: 613
הצטרף: אפריל 2006
נתן תודות: 10 פעמים
קיבל תודות: 137 פעמים

שליחה #20 

גם ברשת הבייתית אני משתמש בזה, אבל שם עשיתי את זה בצורה ידנית בעריכת הגדרות nginx במקום בשימוש בnginx proxy manager
העדפתי להראות לך את הפיתרון הקל יותר אבל ניתן להשתמש בקובץ ההגדרות שהראת ולהוסיף אליו את כל השירותים ידנית - כל nginx יכול לשמש כreverse proxy, למשל(בשרת מוגדר שכל פנייה לפורט 80, תועבר ל443)
כמו שאתה רואה יש הרבה סרוויסים שכולם כתובים פחות או יותר אותו דבר - יש סרוויסים שדורשים פרמטרים נוספים בעבודה בתצורה הזו:

שלח תגובה

חזור אל “רשתות, אינטרנט ו- Fiber”