פתרון ל-DNS עם port?
אני מחפש דרך איך טכנית לאפשר להגיע לכתובת ופורט ברשת פנימית דרך שם.
אם זה היה רק ip בפורט 80, אז שרת DNS על רספברי היה פותר את הבעיה בקלילות.
מה שאני רוצה זה בכנסת הכתובת - home.station1 לדוגמה, אני אגיע לכתובת 192.168.0.10:8899
חשבתי על דרך "עקומה", להגדיר מספר כתובות ip לרספברי עם כניסה לכל אחת ב-DNS ואז Port forwarding ל-ip הראשי.
הבעיה שזה ממש עקום ו"מבזבז" כתובות ip של הראוטר על כל שירות כזה, וזה עובד רק על שירותים של ה-pi.
האם יש פיתרון אלגנטי לזה?
שמעתי משהו כמו פרוקסי הפוך, אבל לא ממש הבנתי אם זה קשור לזה ומה זה עושה.
אם זה היה רק ip בפורט 80, אז שרת DNS על רספברי היה פותר את הבעיה בקלילות.
מה שאני רוצה זה בכנסת הכתובת - home.station1 לדוגמה, אני אגיע לכתובת 192.168.0.10:8899
חשבתי על דרך "עקומה", להגדיר מספר כתובות ip לרספברי עם כניסה לכל אחת ב-DNS ואז Port forwarding ל-ip הראשי.
הבעיה שזה ממש עקום ו"מבזבז" כתובות ip של הראוטר על כל שירות כזה, וזה עובד רק על שירותים של ה-pi.
האם יש פיתרון אלגנטי לזה?
שמעתי משהו כמו פרוקסי הפוך, אבל לא ממש הבנתי אם זה קשור לזה ומה זה עושה.
- tomer953
- חבר מכור קשה

- תגובות: 5304
- הצטרף: מרץ 2010
- שם מלא: tomer953
- נתן תודות: 234 פעמים
- קיבל תודות: 1442 פעמים
אתה כנראה סתם מסתבך שלא לצורך, שמור במועדפים את ההוסטניים והפורט וזהו..
dns ממיר את השם לכתובת אייפי, אין קשר לפורט,
את הפורט תצטרך לציין בנפרד כמו שכתבו לך.
מה יקרה אם על אייפי מסוים יש לך שני שירותים? אחד בפורט 3000 ואחד ב 8080 איך תפתור את זה?
לציין את הפורט זה חלק טבעי והגיוני לחלוטין.
מה שכן לשירותים שמבוססים על ממשק web אתה יכול להגדיר איזשהו redirect
כלומר להרים שירות http פשוט שמקבל קריאה עם פרמטר כלשהו למשל http://home/site-a ועושה לך העברה אוטומטית לעמוד site-a:5000 למשל.
לדעתי עבודה מיותרת ועדיף לשמור במועדפים את הקישור וזהו.
לגבי הרוורס, רוורס פרוקסי אומר שאתה פונה לשרת כלשהו בכתובת מסוימת, אבל הוא לא באמת יושב שם, השרת משתמש בפרוקסי עלייך, ועושה את הניתובים שלו.. עוזר לפעמים כדי לפנות לכתובת אחת יחידה והשרת עצמו מבוזר, והכתובת הזאת לעיתים מכילה שכבות נוספות לפני שמגיעים לשרת הייעודי, כמו תיעוד ללוג או בדיקת הזדהות ראשונית, בעיני המשתמש הוא לא מודע לשכבות הוא מדבר עם הכתובת הראשונית ומבחינתו זה השרת.
למה ״הפוך״ ? כי בפרוקסי רגיל אתה עושה את זה על השרת, כלומר אתה מתחבר דרך אייפי אחר והשרת בטוח שאתה זה המשתמש..
dns ממיר את השם לכתובת אייפי, אין קשר לפורט,
את הפורט תצטרך לציין בנפרד כמו שכתבו לך.
מה יקרה אם על אייפי מסוים יש לך שני שירותים? אחד בפורט 3000 ואחד ב 8080 איך תפתור את זה?
לציין את הפורט זה חלק טבעי והגיוני לחלוטין.
מה שכן לשירותים שמבוססים על ממשק web אתה יכול להגדיר איזשהו redirect
כלומר להרים שירות http פשוט שמקבל קריאה עם פרמטר כלשהו למשל http://home/site-a ועושה לך העברה אוטומטית לעמוד site-a:5000 למשל.
לדעתי עבודה מיותרת ועדיף לשמור במועדפים את הקישור וזהו.
לגבי הרוורס, רוורס פרוקסי אומר שאתה פונה לשרת כלשהו בכתובת מסוימת, אבל הוא לא באמת יושב שם, השרת משתמש בפרוקסי עלייך, ועושה את הניתובים שלו.. עוזר לפעמים כדי לפנות לכתובת אחת יחידה והשרת עצמו מבוזר, והכתובת הזאת לעיתים מכילה שכבות נוספות לפני שמגיעים לשרת הייעודי, כמו תיעוד ללוג או בדיקת הזדהות ראשונית, בעיני המשתמש הוא לא מודע לשכבות הוא מדבר עם הכתובת הראשונית ומבחינתו זה השרת.
למה ״הפוך״ ? כי בפרוקסי רגיל אתה עושה את זה על השרת, כלומר אתה מתחבר דרך אייפי אחר והשרת בטוח שאתה זה המשתמש..
לגבי הרברס הבנתי, דיי פשוט אחרי ההסבר שלך.
לגבי אם אני מסתבך, זה חלק מהעניין שלי.
אני רוצה להגיע לשירותים שרצים ב-lan הפנימי בלי לזכור פורטים בכל מכשיר שניגש אליהם.
למעשה אתה אומר לי שהפתרון שכתבתי הוא היחיד שאפשרי.
לקיחת מספר כתובות משניות ל-pi, ושימוש ב-DNS קלאסי.
ואז הפניה מפורט 80 על כל ip משני לכתובת ופורט מתאים (כל מקום אחר ברשת)
זה מצריך רק לקנפג ב-pi את הכתובות והפורטים לכל כתובת יחודית (שרת פצפון בפורט 80 לכל שירות)
אז אין לי בעיה עם מספר שרותים שרצים על תחנה מסויימת בפורטים שונים.
בסוף זה רק דורש ip לכל שירות.
נ.ב. אם אני מפשט את זה
זה למעשה מיפוי חד חד ערכי של ip חדש, ל-ip ופורט.
וככה שימוש ב-dns לניתוב עם פורט
לגבי אם אני מסתבך, זה חלק מהעניין שלי.
אני רוצה להגיע לשירותים שרצים ב-lan הפנימי בלי לזכור פורטים בכל מכשיר שניגש אליהם.
למעשה אתה אומר לי שהפתרון שכתבתי הוא היחיד שאפשרי.
לקיחת מספר כתובות משניות ל-pi, ושימוש ב-DNS קלאסי.
ואז הפניה מפורט 80 על כל ip משני לכתובת ופורט מתאים (כל מקום אחר ברשת)
זה מצריך רק לקנפג ב-pi את הכתובות והפורטים לכל כתובת יחודית (שרת פצפון בפורט 80 לכל שירות)
אז אין לי בעיה עם מספר שרותים שרצים על תחנה מסויימת בפורטים שונים.
בסוף זה רק דורש ip לכל שירות.
נ.ב. אם אני מפשט את זה
זה למעשה מיפוי חד חד ערכי של ip חדש, ל-ip ופורט.
וככה שימוש ב-dns לניתוב עם פורט
- sys_admin
-
- חבר מביא חבר

- תגובות: 4306
- הצטרף: ינואר 2014
- מיקום: גליל מערבי
- נתן תודות: 10 פעמים
- קיבל תודות: 901 פעמים
אם אתה רוצה את מה שאתה הסברת בתחילת הדיון, אז הפיתרון הפשוט ביותר הוא באמת 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/
אתה מגדיר מאחורי PROXSY זה את כל השרתי WEB שאתה מריץ ברשת שלך, בשרת DNS את HOSTS שאתה רוצה להגיע עליהם עם כתובת IP של אותו PROXY ואחרי שמחשבים מהרשת הפנימית פונים לאחד ה HOSTS אלה ומגיעים לאותו PROXY, הוא כבר מעביר את הבקשות לשרת נדרש לפי הפרטים שנמצאים ב HTTP HEADER של הבקשה השרתים אלה יכולים להיות על מחשבים שונים או על אותו ה RPI, רק עם פורטים שונים ו reverse proxy מגיש אותם לפורט 80 או לכל אחד אחר שתגדיר.
זה אחד ההסברים הפשוטים שמדגים איך להגדיר את reverse proxy.
https://kinsta.com/blog/reverse-proxy/
רק חוזר לעדכן שזה עובד נפלא..
לדוגמה יש לי homeassistant ו-service של hyperion על הפי , ראוטר, ו-nas.
גישה ל-home.hassio/ הולכת לפי בפורט 8123
גישה ל-home.hyperion/ הולכת לפי בפורט 8090
גישה home.router הולכת לנתב וגישה ל-home.nas הולכת לכתובת של ה-nas.
היה צריך להגדיר כתוב נוספת (שניה) בפי, כי הכתובת הראשית משמשת את HASSIO ל-Hue emulation בשביל אלכסה.
הגדרה קטנה ב-nginx, ושרת פצפון שעושה העברה לפי ה-url והכל מתקתק.
לדוגמה יש לי homeassistant ו-service של hyperion על הפי , ראוטר, ו-nas.
גישה ל-home.hassio/ הולכת לפי בפורט 8123
גישה ל-home.hyperion/ הולכת לפי בפורט 8090
גישה home.router הולכת לנתב וגישה ל-home.nas הולכת לכתובת של ה-nas.
היה צריך להגדיר כתוב נוספת (שניה) בפי, כי הכתובת הראשית משמשת את HASSIO ל-Hue emulation בשביל אלכסה.
הגדרה קטנה ב-nginx, ושרת פצפון שעושה העברה לפי ה-url והכל מתקתק.
יפה מאוד, אם אני מנסה לפשט את זה כדי להבין טוב יותר, אז:30/01/2021 1:14ophir1412 כתב: רק חוזר לעדכן שזה עובד נפלא..
לדוגמה יש לי 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
יש עוד משהו?
היה לי יותר קל להגדיר את nginx מחוץ ל-HA.
(כי אני מריץ את HA על דוקר)
הגישה בבית היא בלי ip בכלל.
אני אפשט את הלוגיקה (בהנחה שפורט 80 תפוס בכתובת הראשית כמו אצלי) בצורה הכי פחות טכנית -
- הגדרתי כתובת נוספת על הפי.
- התקנתי nginx והגדרתי אותו על הכתובת החדשה במקום על הדיפולט.
- שמתי שרת web שעושה העברה ל-ip לפי URL (10 שורות קוד...)
- הגדרתי בתוך HA שרת DNS
- עבור כל שירות הגדרתי ב-DNS את הכתובת השניה בפי. (אני בודק אם אפשר להגדיר חוק עבור כל כתובת מהצורה home.XXXX)
- שמתי את הכתובת הראשונה של הפי להיות ה-DNS בראוטר.
כדי לגשת לראוטר אני פשוט מכניס בדפדפן -
home.router/
כי הפי כבר דואג לניתוב הנכון.
(כי אני מריץ את HA על דוקר)
הגישה בבית היא בלי ip בכלל.
אני אפשט את הלוגיקה (בהנחה שפורט 80 תפוס בכתובת הראשית כמו אצלי) בצורה הכי פחות טכנית -
- הגדרתי כתובת נוספת על הפי.
- התקנתי nginx והגדרתי אותו על הכתובת החדשה במקום על הדיפולט.
- שמתי שרת web שעושה העברה ל-ip לפי URL (10 שורות קוד...)
- הגדרתי בתוך HA שרת DNS
- עבור כל שירות הגדרתי ב-DNS את הכתובת השניה בפי. (אני בודק אם אפשר להגדיר חוק עבור כל כתובת מהצורה home.XXXX)
- שמתי את הכתובת הראשונה של הפי להיות ה-DNS בראוטר.
כדי לגשת לראוטר אני פשוט מכניס בדפדפן -
home.router/
כי הפי כבר דואג לניתוב הנכון.
תשתמש בhttps://nginxproxymanager.com/
יש בגדול שתי אפשריות
1. שימוש בסאב דומיין, למשל
music.example.com
plex.example.com
2. שימוש בpath, למשל
www.example.com/music
www.example.com/plex
בנוסף ניתן להגדיר שימוש בlets encrypt שמאפשר שימוש בתעודת ssl חינמית כולל חידוש אוטומטי
יש מדריכים רבים ביוטיוב, אבל סה"כ זה מאוד פשוט כי מקבלים דוקר מוכן
ככה זה נראה אצלי
יש בגדול שתי אפשריות
1. שימוש בסאב דומיין, למשל
music.example.com
plex.example.com
2. שימוש בpath, למשל
www.example.com/music
www.example.com/plex
בנוסף ניתן להגדיר שימוש בlets encrypt שמאפשר שימוש בתעודת ssl חינמית כולל חידוש אוטומטי
יש מדריכים רבים ביוטיוב, אבל סה"כ זה מאוד פשוט כי מקבלים דוקר מוכן
ככה זה נראה אצלי
הוא צריך לתפוס את פורט 80 ו443 אחרת מה עשית?
מצד שני כל שאר הסרוויסים יכולים לעבור עם כתובות פנימיות ככה שהם לא חושפים פורט לאינטרנט(אצלי מדובר בשרת באינטרנט ולא בשרת בייתי)
מעבר לזה לצורך עבודה עם lets encrypt חובה פורט 80
מצד שני כל שאר הסרוויסים יכולים לעבור עם כתובות פנימיות ככה שהם לא חושפים פורט לאינטרנט(אצלי מדובר בשרת באינטרנט ולא בשרת בייתי)
מעבר לזה לצורך עבודה עם lets encrypt חובה פורט 80
אמרתי, שמתי ip שני על הפי (אפשר הרי בלינוקס להגדיר מספר ip לאותה מכונה)
ואז שיניתי את הקובץ default שיושב תחת nginx/sites-available שיהיה ככה -
זה הגדרה של השרת ל-ip שאני נותן לו
אין לי אפשרות לתת את פורט 80 של האייפי הראשי, כי כבר רץ לי עליו service שאני לא רוצה לבטל ולא יכול לשנות
(אלכסה פונה ל-devices בפורט הזה)
ואז שיניתי את הקובץ 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;
}
}אין לי אפשרות לתת את פורט 80 של האייפי הראשי, כי כבר רץ לי עליו service שאני לא רוצה לבטל ולא יכול לשנות
(אלכסה פונה ל-devices בפורט הזה)
את השרת הזה תפעיל על פורט אחר כלשהו
את הפרוקסי על 80
ואז בפרוקסי תגדיר שלמשל www יופנה לפורט השני
לא צריך כמה כתובות IP
בתמונה שהראתי, כל הסרוויסים נמצאים על אותו מחשב, כשעובדים בדוקר ניתן להגדיר שם שייצג את הסרוויס ברשת ובגלל זה יש שם שמות
את הפרוקסי על 80
ואז בפרוקסי תגדיר שלמשל www יופנה לפורט השני
לא צריך כמה כתובות IP
בתמונה שהראתי, כל הסרוויסים נמצאים על אותו מחשב, כשעובדים בדוקר ניתן להגדיר שם שייצג את הסרוויס ברשת ובגלל זה יש שם שמות
אין אפשרות.
אלכסה פונה לשרת בכתוב 80, לנתיב מסויים ומצפה לקבל תשובה מסויימת.
זה מובנה ב-home assistant, ואני לא יודע מה מחר אמזון ישנו ואז האוטומציה תפסיק לעבוד.
כדי ש-ha יתחבר לאלכסה, בכל מקום כתוב לשריין לו את פורט 80, אז למה להסתבך?
הגדרה של ip אחד נוסף זה באמת לא משהו ללכת עליו לרבנות.
אלכסה פונה לשרת בכתוב 80, לנתיב מסויים ומצפה לקבל תשובה מסויימת.
זה מובנה ב-home assistant, ואני לא יודע מה מחר אמזון ישנו ואז האוטומציה תפסיק לעבוד.
כדי ש-ha יתחבר לאלכסה, בכל מקום כתוב לשריין לו את פורט 80, אז למה להסתבך?
הגדרה של ip אחד נוסף זה באמת לא משהו ללכת עליו לרבנות.
- oferlaor
- מנהל

- תגובות: 78826
- הצטרף: נובמבר 2004
- שם מלא: עפר לאור
- מיקום: מודיעין, ישראל
- נתן תודות: 785 פעמים
- קיבל תודות: 5383 פעמים
ב ngnix לדעתי אפשר להגדיר לאן הוא יפנה אם הוא לא מקבל בכלל hostname. כך גם פורט 80 יעבוד לך (passthrough)
אתה כנראה לא הבנת עד הסוף מה reverse proxy עושה
הוא לא מפנה אותך לפורט של הסרוויס אלא משמש כמתווך בינך לבין הסרוויס, ואז מבחינתך כל הסרוויסים שמאחורי הריוורס פרוקסי הם על פורט 80/443
הוא כבר ידאג שהמידע יגיע לאן שצריך, מבחינתך זה שקוף לגמרי
לצורך הדוגמא מהשרת שלי:
הוא לא מפנה אותך לפורט של הסרוויס אלא משמש כמתווך בינך לבין הסרוויס, ואז מבחינתך כל הסרוויסים שמאחורי הריוורס פרוקסי הם על פורט 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גם ברשת הבייתית אני משתמש בזה, אבל שם עשיתי את זה בצורה ידנית בעריכת הגדרות nginx במקום בשימוש בnginx proxy manager
העדפתי להראות לך את הפיתרון הקל יותר אבל ניתן להשתמש בקובץ ההגדרות שהראת ולהוסיף אליו את כל השירותים ידנית - כל nginx יכול לשמש כreverse proxy, למשל(בשרת מוגדר שכל פנייה לפורט 80, תועבר ל443)
כמו שאתה רואה יש הרבה סרוויסים שכולם כתובים פחות או יותר אותו דבר - יש סרוויסים שדורשים פרמטרים נוספים בעבודה בתצורה הזו:
העדפתי להראות לך את הפיתרון הקל יותר אבל ניתן להשתמש בקובץ ההגדרות שהראת ולהוסיף אליו את כל השירותים ידנית - כל nginx יכול לשמש כreverse proxy, למשל(בשרת מוגדר שכל פנייה לפורט 80, תועבר ל443)
כמו שאתה רואה יש הרבה סרוויסים שכולם כתובים פחות או יותר אותו דבר - יש סרוויסים שדורשים פרמטרים נוספים בעבודה בתצורה הזו:


