Menjalankan DNS Server untuk menghindari masalah NAT-Loopback

2

Pertama saya ingin mengatakan bahwa saya mungkin membaca semua yang ada di internet tentang masalah ini.

Dan masalahnya adalah bahwa saya tidak dapat mengakses owncloud saya melalui doc.selfhost.eu jika saya berada di jaringan yang sama. Tetapi saya dapat mengaksesnya dari dalam jaringan melalui IP internal (192.168.2.200) dan dari luar jaringan melalui doc.selfhost.eu.

Pengaturan saya: Server rumah yang menjalankan Linux Mint 17.2 Cinnamon yang seharusnya untuk media dan untuk menjalankan owncloud.

Server terhubung ke Speedport 723v yang tidak mendukung NAT Loopback. Port 80 dan 443 diteruskan dan untuk DNS dinamis saya memiliki akun di selfhost.de yang saya masukkan dalam pengaturan router.

Pada mesin Windows 7 saya (yang saya coba akses dari server) saya memasukkan 192.168.2.200 (IP server internal) sebagai DNS.

Di Mint saya menonaktifkan manajer jaringan (sebenarnya saya menghapusnya) dan saya sekarang menggunakan antarmuka.

Bukan solusi untuk mengubah file host dari semua klien (pada android yang tidak di-root, ini bahkan tidak mungkin).

Pertanyaan:

  1. Apa yang harus saya ubah untuk mengakses cloud saya sendiri dari jaringan internal melalui IP eksternal?

/ etc / network / interfaces

# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
address 192.168.2.200
netmask 255.255.255.0
gateway 192.168.2.1
dns-nameservers doc.selfhost.eu 8.8.8.8

/etc/resolv.conf

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 127.0.0.1

Di /etc/dnsmasq.conf ini adalah satu-satunya hal yang saya tambahkan:

listen-address=127.0.0.1
listen-address=192.168.2.200
address=/doc.selfhost.eu/192.168.2.200

/etc/dnsmasq.d/doc.selfhost.eu (baca di suatu tempat untuk membuat ini)

address=/doc.selfhost.eu/192.168.2.200

/ etc / hosts

127.0.0.1       localhost
127.0.1.1       doc-desktop
192.168.2.200   doc.selfhost.eu

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

Pengaturan owncloud di /var/www/owncloud/config/config.php

'trusted_domains' =>
  array (
0 => '192.168.2.200',
1 => 'doc.selfhost.eu',
  );

Konfigurasi Apache Di /etc/apache2/apache2.conf semuanya cukup standar. Saya hanya menambahkan:

ServerName doc-desktop

/etc/apache2/sites-enabled/owncloud.conf . Tidak ada perubahan pada situs yang tersedia , tidak ada tautan.

<VirtualHost 192.168.2.200:80>

#### Redirect to port 443 ###
RewriteEngine on
ReWriteCond %{SERVER_PORT} !^443$
RewriteRule ^/(.*) https://%{HTTP_HOST}/$1 [NC,R,L]
#### End of Redirection configuration ###

DocumentRoot /var/www/owncloud/
<Directory /var/www/owncloud>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    Require all granted
</Directory>

</VirtualHost>

<VirtualHost 192.168.2.200:443>
####Configuration for SSL #####
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/apache.crt
SSLCertificateKeyFile /etc/apache2/ssl/apache.key
#### End of SSL Configuration ####
Header always set Strict-Transport-Security "max-age=15768000; includeSubDomains; preload"
DocumentRoot /var/www/owncloud/
<Directory /var/www/owncloud>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    Require all granted
</Directory>
</VirtualHost>

Kalau-kalau muncul. dari server:

dig doc.selfhost.eu

; <<>> DiG 9.9.5-3ubuntu0.5-Ubuntu <<>> doc.selfhost.eu
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 49046
;; flags: qr aa rd ra ad; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;doc.selfhost.eu.          IN      A

;; ANSWER SECTION:
doc.selfhost.eu.   0       IN      A       192.168.2.200

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Mon Oct 26 02:35:15 CET 2015
;; MSG SIZE  rcvd: 54

Dari klien di dalam jaringan (dengan cygwin):

dig doc.selfhost.eu

; <<>> DiG 9.10.3 <<>> doc.selfhost.eu
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 29482
;; flags: qr aa rd ra ad; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;doc.selfhost.eu.          IN      A

;; ANSWER SECTION:
doc.selfhost.eu.   0       IN      A       192.168.2.200

;; Query time: 31 msec
;; SERVER: 192.168.2.200#53(192.168.2.200)
;; WHEN: Mon Oct 26 02:37:32     2015
;; MSG SIZE  rcvd: 54

Saya harap ini adalah segalanya. Terima kasih.

Pertanyaan ini datang dari sini karena di luar topik:

https://stackoverflow.com/questions/33337258/running-dns-server-to-circumvent-nat-loopback-issue

dokter
sumber

Jawaban:

2

Solusi Eksternal

Apa yang harus saya ubah untuk mengakses cloud saya sendiri dari jaringan internal melalui IP eksternal?

Sayangnya, karena tidak pernah secara pribadi menemukan router rumah yang tidak mendukung NAT Loopback (juga dikenal sebagai penjepit rambut ), saya tidak dapat memberikan jawaban nyata tentang cara mengaksesnya dengan apa pun yang eksternal .

Solusi Lain


Solusi berbasis DNS

Dengan asumsi tujuan Anda tidak lebih rumit daripada mengakses server media Anda dari jaringan internal dengan domain yang dapat dibaca manusia dan Anda bersedia mengonfigurasi BIND DNS, Anda juga dapat mencoba membuat pseudo-domain yang tersedia untuk jaringan Anda juga.

Domain semu ini berpotensi memungkinkan Anda untuk mengakses server lokal Anda pada sesuatu seperti server.owndi jaringan internal. Domain Tingkat Atas palsu (TLD) palsu ini ex . .ownpada dasarnya bisa menjadi apa pun yang Anda inginkan.

Saya menduga ini harus bekerja bahkan dengan masalah Loopback NAT.

Menggunakan Pseudo-domain

Pengaturan paling sederhana adalah memiliki satu komputer di jaringan menyediakan DNS. Kerugian potensial terbesar untuk pengaturan ini adalah:

  • Anda mungkin perlu memastikan bahwa router Anda menunjuk ke server yang menjalankan BIND.

  • Komputer yang berfungsi sebagai server DNS Anda harus dihidupkan agar ini (dan koneksi internet Anda) berfungsi.

Entri DNS Router Menunjuk ke Server DNS Lokal

Selain itu, walaupun sepertinya kurang penting dalam hal ini, menjalankan layanan BIND yang menyediakan akses ke jaringan internal dan eksternal bisa agak berisiko. Secara umum, Anda tidak boleh meniru TLD publik seperti .eukecuali Anda tahu apa yang Anda lakukan. Jika Anda ingin mempertahankan doc.selfhostawalan daripada yang lain, itu bagus, tetapi Anda harus memilih ekstensi yang tidak digunakan yang berbeda (misalnya doc.selfhost.own).

Apache dan Owncloud

Setelah diaktifkan, Anda perlu mengatur Apache (domain semu Anda kemungkinan akan menjadi VirtualHost) dan Owncloud untuk menanggapi dengan benar pertanyaan dan menyajikan konten yang sesuai (misalnya Owncloud).

Contoh kerja

Di bawah ini adalah beberapa contoh cara mengkonfigurasi file utama di BIND untuk menyediakan layanan pseudo-domain.

Perhatikan bahwa saya tidak membahas semua yang mungkin perlu Anda lakukan agar BIND itu berfungsi, sehingga mungkin ada beberapa langkah tambahan yang tidak disebutkan secara eksplisit di sini. Perhatikan juga, contoh-contoh ini secara teknis untuk versi BIND 9 terbaru di Windows (BIND 9.10+).

Isi aktual db.rev.10.txt dan db.example.own.txt tidak perlu modifikasi antara Windows dan * nix. Hambatan besar adalah memastikan bahwa named.conf entri muncul dalam file yang tepat pada platform non-Windows dan yang db.rev.10.txt dan db.example.own.txt muncul di benar * nix direktori.


Referensi untuk Ubuntu: Tujuh Langkah Mudah Untuk Mengatur Server DNS Interal Di Ubuntu

Perhatikan bahwa ketika menggunakan distro berbasis Redhat, ada perbedaan halus antara mereka dan Debian / Ubuntu / Mint.


Dengan asumsi Anda baik-baik saja dengan semua ini, berikut adalah contoh kerja dasar. Ini pada dasarnya adalah konfigurasi DNS caching, jika itu penting.

  1. Dapatkan BIND diatur dan berfungsi. Aku akan menunggu. =)

  2. named.conf - Edit named.conf. (kira-kira) seperti yang diberikan di bawah ini. Di Windows, semua entri ada di "named.conf" (terletak di direktori BIND "dll"). Pada * nix modern, entri ini sering dipecah menjadi beberapa file. Juga pastikan untuk memasukkan entri "rndc-key" dan "control" yang tepat sesuai kebutuhan.

    ex. named.conf

    # Our basic options -- where do we find our zone files, etc.?
    # On *nix, options likely need to go in "named.conf.options"
    
    options {
        directory "Path\to\zones";      # On *nix it's / not \ of course
        allow-transfer { none; };       # disable zone transfers by default
    
        # We restrict access to recursion to avoid security issues, etc.
        # You can change IPs as required.
        #allow-recursion {192.168.1.0/24;}; 
    
        # "localnets" is a special ACL in BIND
        allow-recursion {"localnets";};
    
        # We are using named.root, so forwarders are disabled.
        # forwarders { 8.8.8.8; 8.8.4.4; };
    };
    
    # Current versions of named.root/db.cache -- ftp://ftp.internic.net/domain/
    # *nix likely uses named.root (Redhat/Fedora) or db.cache (Deb/Ubu/Mint) 
    # This file does need periodic updating (perhaps twice a year)
    
    zone "." {
        type hint;
        file "named.root";      # On Windows, place in your BIND "zone" directory
    };
    
    # Local domain where "example.own" is whatever domain you want
    # On *nix, these zone definitions likely need to go in "named.conf.local"
    
    zone "example.own" IN {
        type master;
        file "db.example.own.txt";   # On Windows, place in your BIND "zone" directory
        allow-transfer { none; };
    }; 
    
    # Local loopback interface so our local domains work
    # The digits are the local lan prefix in reverse
    # Note that /16 subnets use only two digits e.g. 128.10 for 10.128.xxx.xxx
    
    zone "0.0.10.in-addr.arpa" IN {
          type master;
          file "db.rev.10.txt";     # On Windows, place in your BIND "zone" directory
          allow-transfer { none; };
    };
    
    # ### Any "rndc-key" and "control" statements go here ### 
    
    # End of named.conf
    
  3. db.rev.10.txt - File zona Reverse kami. Tambahkan catatan PTR untuk setiap server fisik yang dirujuk dalam file Zona maju Anda (mis. Db.example.own.txt ). Dalam contoh ini, kita mengasumsikan sebagai server media tunggal yang 10.0.0.3ingin kita panggil example.own.

    ex. db.rev.10.txt

    ; BIND reverse data file for a local loopback interface
    ; The domain used should be a listed 'zone' in named.conf 
    
    $TTL 86400                ; Default TTL
    @   IN SOA  example.own.    admin.example.own. (
                 2015071301      ; serial
                 10800           ; Refresh period
                 3600            ; Retry interval
                 604800          ; Expire time
                 86400 )         ; Negative caching TTL
    
    ; The number before PTR is the last octet of the IP address
    ; for the device to map (e.g. 10.0.0.3). For /16 subnets,
    ; this is the last two digits e.g. "8.9" for "128.10.in-addr.arpa" (10.128.9.8)
    
        IN  NS  ns1.example.own.
        IN  NS  ns2.example.own.
    3   IN  PTR example.own.
    
  4. db.example.own.txt - File zona Teruskan kami. Dalam contoh ini, kita mengasumsikan sebagai server media tunggal yang 10.0.0.3ingin kita panggil example.own. Anda dapat menambahkan MX dan CNAME juga, tentu saja. Jika Anda menambahkan server tambahan (mis. media IN A 10.0.0.4), Tambahkan juga catatan PTR yang sesuai ke zona Reverse Anda (mis. Db.rev.10.txt4 IN PTR media.example.own)

    ex. db.example.own.txt

    ; We are using our reverse DNS to provide name server services
    ; Enables use of http://(www).example.own on our local network
    
    $TTL 86400              ; Default TTL
    @   IN SOA  ns1.example.own.    admin.example.own. (
                2015071322  ; serial
                10800       ; Refresh period
                3600        ; Retry interval
                604800      ; Expire time
                86400 )     ; Negative caching TTL
    
    @       NS  ns1.example.own.
    
    ns1             IN A        10.0.0.3        ; This entry is ABSOLUTELY NECESSARY - Use an IP
    ns2             IN A        10.0.0.3        ; Secondary Name Server Prefix/IP (Required 2nd Name Server - backup - IP or domain)
    
    example.own.    IN A        10.0.0.3        ; A Record for the basic domain name
    www             IN A        10.0.0.3        ; A Record for the www prefix
    

Barang sisa

  • Pastikan untuk memperbarui Serial pada zona Maju dan Terbalik Anda setiap kali Anda mengubahnya.

  • Demikian juga, pastikan untuk "memuat kembali" ikat setelah melakukan perubahan APAPUN kepada Anda file konfigurasi BIND. Sebagai pemikiran umum, Anda mungkin ingin memback-up dokumen asli juga sebelum bermain-main.

  • Dengan asumsi semuanya sudah diatur dengan benar, setiap perangkat yang mampu (termasuk Android) pada jaringan harus dapat mengakses example.owntanpa konfigurasi lebih lanjut (yaitu seperti jaringan biasa).

  • Perhatikan bahwa jika Anda menggunakan Chrome, Anda harus menambahkan garis miring di bilah alamat (mis. example.own/), Jika tidak, Anda mungkin diarahkan ke pencarian Google. Persyaratan ini kemungkinan tidak akan diubah di versi mendatang .

  • Sementara untuk pengaturan yang lebih tradisional, dua artikel ini untuk Ubuntu dan Centos 7 (Redhat) menggambarkan beberapa perbedaan dalam mengkonfigurasi BIND di antara keduanya.

Anaksunaman
sumber
Terima kasih atas jawaban terinci. Hanya beberapa klarifikasi: selfhost adalah layanan yang memberi Anda nama domain yang dalam kasus saya adalah doc.selfost.eudan menyelesaikannya ke IP. Yang lainnya dapat othername.selfhost.eu. Saya tidak memiliki pengaruh pada penamaan, kecuali doc. Yang penting adalah saya tidak dapat mengakses server saya menggunakan sesuatu yang dapat dibaca manusia tetapi saya perlu mengakses server dari mana saja dengan satu domain. Saya tidak peduli apakah itu IP atau string. Saya tidak ingin mengubah alamat di klien cloud sendiri setiap kali saya masuk. Saya akan melihat seberapa jauh saya mendapatkan tips Anda. Terima kasih.
doc
0

Saya telah berjuang dengan masalah ini selama sebulan terakhir sejak membeli router Linksys WRT1200AC $ 180 baru. Saya juga memiliki akun IP dinamis yang memungkinkan saya mengakses jaringan rumah saya dari jalan. Saya telah melakukan banyak penelitian, seperti yang Anda lakukan. Tetapi sesuatu yang sederhana seperti memastikan situs saya online sekarang tidak mungkin. Saya bahkan membuat server proxy Python di Google cloud sehingga saya bisa melihat situs-situs ini; namun akhirnya berhenti bekerja karena alasan yang tidak diketahui.

Lingkungan saya adalah Windows tetapi masalahnya identik. Saran tulus saya adalah dengan hanya membeli router baru dan menyelamatkan diri Anda dari banyak frustrasi dan kesengsaraan. Saya sekarang membeli sendiri, tetapi terbukti sangat sulit untuk menemukan router baru yang mendukung NAT loopback. Saya belum menemukan cara untuk mengatasi masalah ini sebaliknya. Semoga berhasil.

Stephen Falken
sumber
-1

Saya tidak terlalu yakin, untuk memahami semua aspek ini dan saya tergelincir di sini lebih tidak sengaja. Untuk infrastruktur saya sendiri, saya menyelesaikan ini dengan menggunakan aturan iptables untuk mengarahkan permintaan intrenal ke server internal - tetapi saya menggunakan mesin linux sebagai firewall saya. Pokoknya terlihat bermanfaat untuk membaca tautan ini: Mengakses DNAT sever dari LAN lokal menggunakan alamat IP publik

mabra
sumber