Rilis terbaru selalu tersedia dari GitHub di
https://github.com/troglobit/inadyn/releases
Kiat: Manual HTML UNIX ada di https://man.troglobit.com, misalnya, inadyn.conf (5)
Inadyn, atau in-a-dyn, adalah DNS dinamis kecil dan sederhana, DDNS, klien dengan dukungan HTTPS. Umumnya tersedia dalam banyak distribusi GNU/Linux, yang digunakan dalam router rak dan gateway internet untuk mengotomatiskan tugas menjaga nama internet Anda tetap sinkron dengan alamat IP publik sehingga. Ini juga dapat digunakan dalam instalasi dengan koneksi redundan (cadangan) ke Internet.
Kebanyakan orang tidak menyadari bahwa mereka berbagi kumpulan alamat internet dengan pengguna lain dari Penyedia Layanan Internet yang sama (ISP). Protokol seperti DHCP, PPPOE, atau PPPOA digunakan untuk memberi Anda alamat dan cara untuk terhubung ke internet, tetapi biasanya bukan cara bagi orang lain untuk terhubung dengan Anda. Jika Anda ingin menjalankan server internet pada koneksi seperti itu, Anda berisiko kehilangan alamat IP Anda setiap kali Anda terhubung kembali, atau seperti dalam kasus DHCP bahkan ketika sewa dinegosiasikan ulang.
Dengan menggunakan klien DDNS seperti inadyn Anda dapat mendaftarkan nama internet dengan penyedia DDNS, seperti Freedns. Klien DDNS memperbarui catatan DNS Anda secara berkala dan/atau sesuai permintaan saat alamat IP Anda berubah. Inadyn dapat menyimpan beberapa catatan host dengan alamat IP yang sama, menggunakan kombinasi skrip, alamat dari antarmuka yang menghadap internet, atau default untuk menggunakan detektor perubahan alamat IP dari penyedia DDNS.
__
¹ Alamat IP publik adalah default, alamat pribadi juga dapat digunakan.
Beberapa layanan ini gratis untuk penggunaan non-komersial, beberapa mengambil biaya kecil, tetapi juga menyediakan lebih banyak domain untuk dipilih.
Penyedia tingkat satu berikut telah mendedikasikan "plugin", meskipun banyak yang berbagi plugin Dyndns asli. Di bawah ini adalah daftar penyedia DDNS yang diketahui, dipesan oleh plugin yang mendukungnya:
Untuk daftar lengkap, lihat inadyn -L , untuk output JSON ramah mesin, gunakan inadyn -L -j .
Penyedia DDNS yang tidak didukung secara asli dapat diaktifkan menggunakan plugin DDNS custom, atau generik,. Lihat di bawah untuk contoh konfigurasi.
Default in-a-dyn ke https, tetapi tidak semua penyedia dapat mendukung ini, jadi cobalah menonaktifkan SSL untuk pembaruan ( ssl = false ) atau fase checkip ( checkip-ssl = false ) di bagian provider , jika Anda mengalami masalah.
HTTPS diaktifkan secara default karena melindungi kredensial Anda dari pengintaian dan mengurangi risiko seseorang yang membajak akun Anda.
In-a-Dyn mendukung memperbarui beberapa server DDNS, beberapa akun bahkan pada penyedia DDNS yang berbeda. Contoh /etc/inadyn.conf berikut menunjukkan bagaimana ini dapat dilakukan. Untuk memverifikasi konfigurasi Anda, tanpa memulai daemon, gunakan:
inadyn --check-config
Ini mencari file .conf default, untuk memeriksa file apa pun, gunakan:
inadyn --check-config -f /path/to/file.conf
# In-A-Dyn v2.0 configuration file format
period = 300
user-agent = Mozilla/5.0
# The FreeDNS username must be in lower case
# The password (max 16 chars) is case sensitive
provider freedns {
username = lower-case-username
password = case-sensitive-pwd
hostname = some.example.com
}
# We override checkip server with the In-a-dyn built-in 'default',
# http://ifconfig.me/ip, for details on this, see below.
provider freemyip {
password = YOUR_TOKEN
hostname = YOUR_DOMAIN.freemyip.com
checkip-server = default
}
provider dyn {
ssl = false
username = charlie
password = snoopy
hostname = { peanuts, woodstock }
user-agent = Mozilla/4.0
}
provider duckdns.org {
username = YOUR_TOKEN
password = noPasswordForDuckdns
hostname = YOUR_DOMAIN.duckdns.org
}
# With multiple usernames at the same provider, index with :#
provider no-ip.com:1 {
username = ian
password = secret
hostname = flemming.no-ip.com
user-agent = inadyn/2.2
}
# With multiple usernames at the same provider, index with :#
provider no-ip.com:2 {
username = james
password = bond
hostname = spectre.no-ip.com
checkip-ssl = false
checkip-server = ifconfig.me
checkip-path = /ip
}
# With multiple usernames at the same provider, index with :#
provider no-ip.com:3 {
username = spaceman
password = bowie
hostname = spaceman.no-ip.com
checkip-command = "/sbin/ifconfig eth0 | grep 'inet6 addr'"
}
# Google Domains - notice use of '@' to update root entry
provider domains.google.com:1 {
hostname = @.mydomain.com
username = your_username
password = your_password
}
# Wildcard subdomains - notice the quotes (required!)
provider domains.google.com:2 {
hostname = "*.mydomain.com"
username = your_username
password = your_password
}
# Note: hostname == update-key from Advanced tab in the Web UI
provider tunnelbroker.net {
username = futurekid
password = dreoadsad/+dsad21321 # update-key-in-advanced-tab
hostname = 1234534245321 # tunnel-id
}
# dynv6.com update using a custom checkip-command, which works
# if you have access to an Internet-connected interface. Make
# sure to verify the command works on your system first
allow-ipv6 = true # required option for IPv6 atm.
provider dynv6.com {
username = your_token
password = not_used
hostname = { host1.dynv6.net, host2.dynv6.net }
checkip-command = "/sbin/ip -6 addr | grep inet6 | awk -F '[ t]+|/' '{print $3}' | grep -v ^::1 | grep -v ^fe80"
}
provider cloudxns.net {
username = your_api_key
password = your_secret_key
hostname = yourhost.example.com
}
provider dnspod.cn {
username = your_api_id
password = your_api_token
hostname = yourhost.example.com
}
# Create a unique custom API token with the following permissions:
# -> Zone.Zone - Read, Zone.DNS - Edit.
provider cloudflare.com {
username = zone.name
password = api_token_important_read_comment
hostname = hostname.zone.name
ttl = 1 # optional, value of 1 is 'automatic'.
proxied = false # optional.
}
provider goip.de {
username = user.name
password = user.password
hostname = hostname.zone.name
}
Perhatikan bagaimana konfigurasi memiliki tiga pengguna yang berbeda dari penyedia no-IP-ini dicapai dengan menambahkan A :ID ke nama penyedia.
Kami juga mendefinisikan direktori cache khusus, default adalah menggunakan /var/cache . Dalam kasus kami /mnt adalah toko persisten spesifik sistem untuk caching alamat IP Anda seperti yang dilaporkan kepada setiap penyedia. Inadyn Gunakan ini untuk memastikan Anda tidak dikunci dari akun Anda untuk pembaruan yang berlebihan, yang mungkin terjadi jika perangkat Anda internet gateway berjalan Inadyn macet dalam loop reboot, atau serupa.
Namun, agar mekanisme caching 100% sangat mudah, jam sistem harus diatur dengan benar-jika Anda memiliki masalah dengan jam sistem yang tidak diatur dengan benar saat boot, misalnya menunggu penerimaan pesan NTP, gunakan opsi baris perintah --startup-delay=SEC . Untuk memberi tahu inadyn tidak apa -apa untuk melanjutkan sebelum timeout SEC , gunakan SIGUSR2 .
Sistem terakhir yang ditentukan adalah layanan IPv6 https://tunnelbroker.net yang disediakan oleh Hurricane Electric. Di sini hostname diatur ke ID terowongan dan kata sandi harus menjadi kunci pembaruan yang ditemukan di tab Konfigurasi Lanjutan .
CATATAN:
checkip-commanduntuk Dynv6, di atas, hanyalah salah satu cara untuk melakukannya. Berikut varian lain, dari skrip mereka sendiri:ip -6 addr list scope global $device | grep -v " fd" | sed -n 's/.*inet6 ([0-9a-f:]+).*/1/p' | head -n 1
Kadang-kadang checkip-server default untuk penyedia DDNS bisa lambat merespons, bahkan waktu habis. Dukungan in-a-dyn menimpa default penyedia dengan yang khusus, atau perintah khusus. Cara termudah untuk mengubahnya adalah dengan mengatur checkip-server = default di konfigurasi penyedia Anda, memicu in-a-dyn untuk menggunakan http://ifconfig.me/ip default, yang juga merupakan default untuk konfigurasi DDNS khusus. Lihat halaman pria, atau bagian di bawah ini, untuk informasi lebih lanjut.
Beberapa penyedia memerlukan menggunakan browser tertentu untuk mengirim pembaruan, ini dapat dikerjakan di sekitar menggunakan pengaturan user-agent = STRING , seperti yang ditunjukkan di atas. Ini tersedia baik di tingkat global maupun di tingkat per penyedia.
Catatan: Dalam pengaturan server multi-pengguna, pastikan untuk chmod Anda .conf ke 600 (baca-tulis hanya oleh Anda/root) untuk melindungi terhadap pengguna lain yang membaca kredensial server DDNS Anda.
Selain penyedia DDNS default yang didukung oleh Inadyn, penyedia DDNS khusus dapat didefinisikan dalam file konfigurasi. Gunakan custom {} di alih -alih bagian provider {} yang digunakan dalam contoh di atas.
In-a-dyn menggunakan otentikasi dasar http (base64 dikodekan) untuk mengkomunikasikan nama pengguna dan kata sandi ke server. Jika Anda tidak memiliki nama pengguna dan/atau kata sandi, Anda dapat meninggalkan bidang ini. Otentikasi dasar, masih akan digunakan dalam komunikasi dengan server, tetapi dengan nama pengguna dan kata sandi kosong.
Penyedia DDNS khusus dapat diatur seperti ini:
custom example {
username = myuser
password = mypass
checkip-server = checkip.example.com
checkip-path = /
ddns-server = update.example.com
ddns-path = "/update?hostname="
hostname = myhostname.example.net
}
Variabel berikut dapat diganti dengan konfigurasi:
%u - username
%p - password, if HTTP basic auth is not used
%h - hostname
%i - IP address
Untuk https://www.namecheap.com dapat terlihat sebagai berikut. Perhatikan bagaimana sintaks nama host berbeda dari atas:
custom namecheap {
username = YOURDOMAIN.TLD
password = mypass
ddns-server = dynamicdns.park-your-domain.com
ddns-path = "/update?domain=%u&password=%p&host=%h&ip=%i"
hostname = { "@", "www", "test" }
ddns-response = "<ErrCount>0</ErrCount>"
}
Di sini tiga nama host diperbarui, satu http mendapatkan permintaan pembaruan untuk setiap nama host yang terdaftar. Beberapa penyedia, seperti Freedns, mendukung pengaturan catatan CNAME (alias) untuk mengurangi jumlah catatan yang perlu Anda perbarui. Freedns bahkan default untuk menautkan beberapa catatan ke pembaruan yang sama, yang mungkin sangat membingungkan jika Anda ingin setiap catatan DNS diperbarui dari alamat IP yang unik - pastikan untuk memeriksa pengaturan Anda di penyedia DDNS !
Plugin generik juga dapat digunakan dengan penyedia yang memerlukan alamat IP baru klien dalam permintaan pembaruan. Berikut adalah contoh bagaimana ini dapat dilakukan jika kita berpura -pura bahwa http://dyn.com tidak didukung oleh Inadyn. ddns-path berbeda antara penyedia dan merupakan sesuatu yang harus Anda ketahui. Halaman dukungan terkadang mencantumkan ini di bawah bagian API, atau serupa.
# This emulates dyndns.org
custom dyn {
username = DYNUSERNAME
password = DYNPASSWORD
ddns-server = members.dyndns.org
ddns-path = "/nic/update?hostname=%h.dyndns.org&myip=%i"
hostname = { YOURHOST, alias }
}
Di sini, ddns-path yang sepenuhnya kustom dengan penentu format digunakan, lihat halaman inadyn.conf(5) Man untuk detail tentang ini.
Contoh lain:
# Custom configuration for dnsmadeeasy
custom dyn {
username = DNSMADEEASYUSERNAME
password = DNSMADEEASYPASSWORDFORTHISHOST
ddns-server = cp.dnsmadeeasy.com
ddns-path = "/servlet/updateip?username=%u&password=%p&id=DNSMADEEASYHOSTID&ip=%i"
hostname = HOST
}
Saat menggunakan plugin generik, pertama -tama Anda harus memeriksa respons dari penyedia DDNS. Secara default, Inadyn mencari 200 HTTP Response OK Code dan string "good" , "OK" , "true" , "success" , atau "updated" di badan respons HTTP. Jika penyedia DDNS mengembalikan sesuatu yang lain, Anda dapat menambahkan daftar kemungkinan ddns-response = { Arrr, kilroy } , atau hanya satu ddns-response = Cool -jika penyedia Anda memberikan respons apa pun maka gunakan ddns-response = "" .
Jika penyedia DDNS Anda tidak memberi Anda checkip-server , Anda dapat menggunakan layanan lain, seperti http://ifconfig.me/ip, yang merupakan default jika Anda tidak menentukan satu untuk konfigurasi penyedia khusus Anda:
checkip-server = ifconfig.me
checkip-path = /ip
checkip-ssl = false
atau bahkan menggunakan skrip atau perintah:
checkip-command = /sbin/ifconfig eth0 | grep 'inet addr'
Kedua pengaturan ini juga dapat digunakan di bagian provider{} .
CATATAN: Diperlukan hostname , bahkan jika semuanya dikodekan dalam ddns-path ! Nama host yang diberikan ditambahkan ke ddns-path yang digunakan untuk pembaruan, kecuali Anda menggunakan pengaturan append-myip , dalam hal ini alamat IP Anda akan ditambahkan sebagai gantinya. Saat menggunakan append-myip Anda mungkin perlu menyandikan nama host DNS Anda di ddns-path sebagai gantinya, seperti yang dilakukan dalam contoh terakhir di atas.
Masalah umum adalah dimulai, yang dapat dimengerti karena in-a-dyn memiliki banyak pilihan yang membingungkan.
Setelah menyimpan /etc/inadyn.conf Anda, pertama -tama cobalah memulainya di latar depan dengan log debug penuh:
inadyn -l debug --foreground --force
Respons salah konfigurasi atau server yang buruk harus jauh lebih mudah dikenali. Ingatlah untuk menyensor log Anda dari kata sandi dan info domain apa pun jika Anda mengajukan laporan bug atau mengajukan pertanyaan di Forum/IRC!
Coba bersihkan cache:
sudo systemctl stop inadyn.servicesudo rm -rf /var/cache/inadyn/*sudo systemctl restart inadyn.service Untuk waktu yang lama, proyek ini mempertahankan kemasannya .deb dan infrastruktur apt dasar. Namun, meningkatnya tingkat fitur dalam in-a-dyn, dan dengan demikian jumlah dependensi, serta tuntutan untuk mendukung lebih banyak arsitektur dan distribusi yang berbeda, dukungan .deb yang sudah dibangun telah dihentikan pada v2.9.1.
Proyek Debian sekarang memiliki pengelola aktif untuk Inadyn, yang merupakan hulu untuk Ubuntu dan lainnya. Harap laporkan masalah dan permintaan ke distribusi masing -masing:
Catatan: File pengemasan proyek telah dipindahkan ke cabang Debian terpisah di repositori Git. Ini tidak diperbarui secara aktif atau didukung untuk rilis. Untuk menggunakannya, lihat cabang dan edit
debian/changelog) untuk membangun file.debbaru untuk sistem Anda.
Gambar yang dibangun secara otomatis tersedia di sini:
Dockerfile disediakan untuk menyederhanakan bangunan dan menjalankan inadyn .
docker build -t inadyn:latest .
docker run --rm -v "$PWD/inadyn.conf:/etc/inadyn.conf" inadyn:latest
Jika Anda tidak ingin menjalankan in-a-dyn sebagai daemon latar belakang, Anda dapat mengatur cronjob:
inadyn.conf Andacrontab -e * * * * * docker run --rm -v " path/to/inadyn.conf:/etc/inadyn.conf " -v " path/to/cache:/var/cache/inadyn " troglobit/inadyn:latest -1 --cache-dir=/var/cache/inadyn > /dev/null 2>&1Untuk menjalankan versi stabil terbaru di macOS, ketik:
brew install inadyn
Untuk menjalankan versi terbaru dari cabang master, instal git tap sebagai gantinya:
brew install --HEAD troglobit/inadyn/inadyn
Salah satu dari ini akan menginstal semua dependensi.
Anda juga dapat menginstal in-a-dyn di macOS menggunakan macports:
sudo port install inadyn
Anda dapat menemukan informasi lebih lanjut di halaman port In-a-Dyn.
Pertama unduh rilis resmi in-a-dyn terbaru dari GitHub:
In-a-Dyn membutuhkan beberapa perpustakaan untuk dibangun. Sistem Build mencari mereka, dalam versi yang diperlukan, menggunakan alat pkg-config :
Mereka tersedia dari sebagian besar distribusi UNIX sebagai paket pra-dibangun. Pastikan untuk menginstal paket -dev atau -devel dari paket distribusi saat membangun Inadyn. Di debian/ubuntu (derivatif):
$ sudo apt install gnutls-dev libconfuse-dev
Untuk membangun Anda juga membutuhkan kompiler C, alat pkg-config , dan membuat:
$ sudo apt install build-essential pkg-config
Saat membangun dengan dukungan HTTPS (SSL/TLS), pastikan untuk juga menginstal paket ca-certificates pada sistem Anda, jika tidak, Inadyn tidak akan dapat memvalidasi sertifikat HTTPS penyedia DDNS.
GNU Mengkonfigurasi & Membangun Sistem Penggunaan /usr/local sebagai awalan instalasi default. Dalam banyak kasus ini berguna, tetapi ini berarti file konfigurasi dan file cache juga akan menggunakan awalan yang sama. Sebagian besar pengguna datang untuk mengharapkan file -file tersebut di /etc/ dan /var/run/ dan configure memiliki beberapa opsi berguna yang disarankan untuk digunakan:
$ ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var
$ make -j5
$ sudo make install-strip
Anda mungkin ingin menghapus opsi --prefix=/usr .
Secara default, Inadyn mencoba membangun dengan gnutls untuk dukungan HTTPS. Gnutls adalah pustaka SSL yang disarankan untuk digunakan pada distribusi UNIX yang tidak menyediakan OpenSSL/Libressl sebagai perpustakaan sistem. Namun, ketika OpenSSL atau Libressl tersedia sebagai perpustakaan sistem, misalnya dalam banyak sistem tertanam:
./configure --enable-openssl
Untuk benar -benar menonaktifkan dukungan Inadyn HTTPS (tidak disarankan!):
./configure --disable-ssl
Untuk detail lebih lanjut tentang masalah lisensi OpenSSL dan GNU GPL, lihat:
Beberapa orang ingin membangun secara statis, untuk melakukan ini dengan autoconf menambahkan LDFLAGS= Setelah skrip konfigurasi. Anda mungkin juga perlu menambahkan LIBS=... , yang akan tergantung pada sistem khusus Anda:
./configure LDFLAGS="-static" ...
Pada beberapa sistem, jalur pemasangan konfigurasi default, /usr/local , dinonaktifkan dan tidak dicari oleh alat-alat seperti ldconfig dan pkg-config . Jadi jika konfigurasi gagal menemukan perpustakaan libconfuse, atau file .pc , buat file /etc/ld.so.conf.d/local.conf dengan konten ini:
/usr/local/lib
Perbarui cache linker:
sudo ldconfig -v |egrep libconfuse
dan jalankan skrip konfigurasi inadyn seperti ini:
PKG_CONFIG_PATH=/usr/local/lib/pkgconfig ./configure
Untuk integrasi SystemD, Anda perlu menginstal pkg-config , yang membantu sistem pembuatan Inadyn mencari tahu jalur SystemD. Saat diinstal Cubungi systemctl untuk mengaktifkan dan memulai inadyn :
$ sudo systemctl enable inadyn.service
$ sudo systemctl start inadyn.service
Periksa apakah itu dimulai dengan benar dengan memeriksa log sistem, atau:
$ sudo systemctl status inadyn.service
Untuk menghentikan layanan:
$ sudo systemctl stop inadyn.service
Saat dibangun menjadi router, beberapa fitur biasanya tidak digunakan dan dapat dinonaktifkan untuk menghemat ruang. Opsi konfigurasi --enable-reduced akan membangun biner fungsionalitas yang dikurangi. Saat ini, ini menonaktifkan pesan log verbose dan string kesalahan dan menghilangkan pemeriksaan file config & beberapa kompatibilitas mundur.
Jika Anda ingin berkontribusi, atau hanya mencoba fitur terbaru tetapi tidak dirilis, maka Anda perlu mengetahui beberapa hal tentang sistem pembuatan GNU:
configure.ac dan Makefile.am per-direktori.am adalah file utamaconfigure dan Makefile.in dihasilkan dari autogen.sh , mereka tidak disimpan dalam git tetapi secara otomatis dihasilkan untuk rilis tarballsMakefile dihasilkan oleh configure Script Untuk membangun dari git; Kloning repositori dan jalankan skrip autogen.sh . Ini membutuhkan alat automake , autoconf dan libtool untuk diinstal pada sistem Anda. Tarball yang dirilis tidak memerlukan alat -alat ini.
$ sudo apt install git automake autoconf
Kemudian Anda dapat mengkloning repositori dan membuat skrip configure , yang bukan bagian dari repo git:
git clone https://github.com/troglobit/inadyn.git
cd inadyn/
./autogen.sh
./configure && make
Bangunan dari Git membutuhkan, setidaknya, dependensi perpustakaan yang disebutkan sebelumnya. Sumber Git adalah target yang bergerak dan tidak disarankan untuk sistem produksi, kecuali Anda tahu apa yang Anda lakukan!
Ini adalah kelanjutan dari Inadyn asli Narcis Ilisei. Sekarang dikelola oleh Joachim Wiberg. Harap ajukan laporan bug, atau kirim permintaan tarik untuk perbaikan bug dan ekstensi yang diusulkan di GitHub.
Terima kasih pribadi! Pergi ke Robert Högberg, yang mensponsori router D-Link Dir-645 kecil sehingga saya bisa kembali ke jalinan :-)