Score:0

Fritz!Box & Ubuntu: เปิดเผย URL ใน LAN ด้วย Apache Httpd และ Bind

ธง ck

ฉันหวังว่าจะมีคนช่วยฉันได้ - ฉันคิดว่า - งานง่ายๆ

สถานการณ์:

บน LAN ส่วนตัวของฉัน ฉันใช้เราเตอร์อินเทอร์เน็ต ("Fritz!Box") และ Raspberry Pi ที่มี Ubuntu 20.04 LTS อยู่ ฉันพัฒนา Spring Boot Web-App เล็กน้อยเพื่อวัตถุประสงค์ส่วนตัวที่ฉันต้องการใช้ใน LAN ของฉันเท่านั้น (หรืออาจเข้าถึงผ่าน VPN จากภายนอก) URL ดั้งเดิมของ Web-App คือ "http://ubuntu:8080" เนื่องจาก Raspberry ของฉันเรียกว่า "ubuntu" และแอปทำงานบนเซิร์ฟเวอร์ Tomcat ตอนนี้ฉันต้องการเปิดเผย URL เช่น "http://thats-my.app" ภายใน LAN และใช้เป็น URL พื้นฐานสำหรับแอป ในขณะนี้ curl บน Ubuntu สามารถเข้าถึงได้ แต่พีซีเครื่องอื่นของฉันไม่สามารถทำได้

FQDN ที่ดียิ่งขึ้นคือ "http://wow.thats-my.app" (พร้อมโดเมนย่อย) ดังนั้นฉันจึงสามารถใช้โดเมนเดียวกันและโดเมนระดับบนสุดสำหรับแอปทั้งหมด และเปลี่ยนเฉพาะโดเมนย่อย เช่น "http ://super.thats-my.app" เป็นต้น.. ข้อจำกัดความรับผิดชอบ: เนื่องจากฉันทำงานผ่าน SSH การกำหนดค่าทั้งหมดจึงเสร็จสิ้นเฉพาะเทอร์มินัลเท่านั้น โปรดพิจารณาว่าฉันไม่ได้ใช้ Desktop Surface ของ Ubuntu

ขอขอบคุณล่วงหน้าสำหรับเวลาของคุณและหวังว่าจะได้รับความช่วยเหลือจากคุณ!

นี่คือการตั้งค่าที่ฉันทำกับระบบ Ubuntu สิ่งที่ไม่แสดงที่นี่ถูกแสดงความคิดเห็น!:

ยูเอฟดับบลิว

สถานะ: ใช้งานอยู่

     ถึงการดำเนินการจาก
     -- ------ ----
[ 1] 9090/tcp อนุญาตในทุกที่ # UBUNTU-COCKPIT
[ 2] 3306/tcp อนุญาตในทุกที่ # MYSQL
[ 3] Apache เต็ม อนุญาตให้ทุกที่ # :80,:443
[ 4] Bind9 อนุญาตให้เข้าได้ทุกที่ # :53
[ 5] OpenSSH อนุญาตในทุกที่ # :22
[ 6] 8080:8090/tcp อนุญาตในทุกที่ # TOMCAT
[ 7] 9090/tcp (v6) อนุญาตในทุกที่ (v6) # UBUNTU-COCKPIT
[ 8] 3306/tcp (v6) อนุญาตในทุกที่ (v6) # MYSQL
[ 9] Apache เต็ม (v6) อนุญาตได้ทุกที่ (v6) # :80,:443
[10] Bind9 (v6) อนุญาตให้เข้าได้ทุกที่ (v6) # :53
[11] OpenSSH (v6) อนุญาตทุกที่ (v6) # :22
[12] 8080:8090/tcp (v6) อนุญาตให้เข้าได้ทุกที่ (v6) # TOMCAT

/ etc / โฮสต์

127.0.0.1 localhost.localdomain localhost
127.0.1.1 อูบุนตู
127.0.1.1 thats-my.app

(--> ไม่มีรายการสำหรับ IPv6)

/etc/apache2/sites-available/thats-my.conf

<VirtualHost *:80>
        ServerName thats-my.app
        ServerAlias thats-my
        ProxyRequests Off
        <Proxy *>
                Order deny,allow
                Allow from all
        </Proxy>
        ProxyPreserveHost On
        ProxyPass               / http://localhost:8080/
        ProxyPassReverse        / http://localhost:8080/
</VirtualHost>

--> ลิงก์สัญลักษณ์ไปยังไดเร็กทอรีที่เปิดใช้งานไซต์

/etc/bind/named.conf.local

โซน "thats-my.app" ใน {
        พิมพ์ต้นแบบ;
        ไฟล์ "/etc/bind/forward.thats-my.app.db";
        อนุญาตการอัปเดต { ไม่มี; };
};

โซน "178.168.192.in-addr.arpa" ใน {
        พิมพ์ต้นแบบ;
        ไฟล์ "/etc/bind/reverse.thats-my.app.db";
        อนุญาตการอัปเดต { ไม่มี; };
};

/etc/bind/named.conf.options

ตัวเลือก {
        ไดเร็กทอรี "/var/cache/bind";
        ผู้ส่งต่อ {
        1.1.1.1;
        1.0.0.1;
        8.8.8.8;
        8.8.4.4;
        };
        การตรวจสอบ DNSsec อัตโนมัติ;
        ฟังบน v6 { ใด ๆ ; };
        อนุญาตแบบสอบถาม { ใด ๆ ; };
};

/etc/bind/forward.thats-my.app.db

$TTL 604800
@ ใน SOA ns1.thats-my.app admin.ns1.thats-my.app (
                              5 ; อนุกรม
                         604800 ; รีเฟรช
                          86400 ; ลองอีกครั้ง
                        2419200 ; หมดอายุ
                         604800 ) ; TTL แคชเชิงลบ
;
@ ใน NS ns1.thats-my.app
ns1 ใน A 192.168.178.23

/etc/bind/reverse.thats-my.app.db

$TTL 604800
@ ใน SOA thats-my.app admin.thats-my.app (
                              4 ; อนุกรม
                         604800 ; รีเฟรช
                          86400 ; ลองอีกครั้ง
                        2419200 ; หมดอายุ
                         604800 ) ; TTL แคชเชิงลบ
;
@ ใน NS ns1.thats-my.app
ns1 ใน A 192.168.178.23
23 ใน PTR ns1.thats-my.app

--> อินพุตไปยังเทอร์มินัล:

sudo systemctl รีสตาร์ทชื่อ
sudo systemctl รีสตาร์ท apache2
sudo systemctl รีสตาร์ท bind9

--> การกำหนดค่า DNS ในเราเตอร์

ตั้งค่า DNS IPv4 IP เป็น 192.168.178.23 (หลักและรอง)

ตั้งค่า DNS IPv6 IP เป็นที่อยู่ IPv6 ของเครื่อง Ubuntu (หลักและรอง)

นี่คือสิ่งที่ฉันได้รับ:

บนเซิร์ฟเวอร์ Ubuntu ในเครื่อง

$ curl thats-my.app -> ตกลง
$ ขุด thats-my.app -> สถานะ: NOERROR *แต่* เซิร์ฟเวอร์ 1.1.1.1#53 ???
$ ขุด thats-my.app @ 127.0.1.1 -> "หมดเวลาการเชื่อมต่อ!"
$ ขุด thats-my.app @ 192.198.178.23 -> "การเชื่อมต่อหมดเวลา!"

บน LAN Windows-PC PowerShell

curl thats-my.app -> ไม่สามารถแก้ไขได้

บนเบราว์เซอร์ Chrome บน LAN Windows-PC

http://thats-my.app -> ไม่สามารถเข้าถึงเว็บไซต์ / DNS_PROBE_FINISHED_NXDOMAIN

หากคุณดูที่ "ขุด" - ผลลัพธ์สำหรับฉันแล้ว Bind9 ไม่ทำงานที่นี่ คุณคิดอย่างไร?

ขอบคุณ!

Score:0
ธง ck

ในที่สุดฉันก็พบวิธีแก้ปัญหา: เราเตอร์ ("AVM Fritz!Box" ที่พบมากในเยอรมนี) มีคุณลักษณะด้านความปลอดภัย "DNS-Rebind-Protection" ซึ่งป้องกันการร้องขอ DNS จากภายใน LAN ไปยังโฮสต์อื่นภายใน LAN เมื่อคุณตั้งค่าข้อยกเว้นโดยพิมพ์เช่นTLD "lan" หรือในกรณีด้านบน "แอป" ในกล่องข้อความ เซิร์ฟเวอร์ DNS ในเครื่องของคุณทำงานได้ดีอย่างสมบูรณ์ คุณสามารถลบตัวส่งต่อได้

PS: คุณไม่จำเป็นต้องมีรายการใน /etc/hosts !

ปชส: https://bind9.readthedocs.io/en/latest/index.html

ขอให้โชคดี!

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา