This page is not fully translated, yet. Please help completing the translation.
(remove this paragraph once the translation is finished)
TFTP Kurtarma/Yükleme için TFTP sunucu kurma
Ethernet üzerinden TFTP Kurtarma nedir?
Coğu cihazda, sağlayıcı firmaca tedarik edilen önyükleyici asıl bellenimden ayrılmış bir bölüntüdür. Başarısız bir çakma süreci durumunda veya yanlış yapılandırma durumunda, cihaz'ın önyükleyicisi genellikle dokunulmamış ve tamamen çalışırdır. Eğer önyükleyicini bir yapısal “TFTP kurtarma modu” varsa, bozuk bir bellenim bölüntüsünün kontrolünü, kurtarma çakım sürecine (ve yapılandırmanızı da cihaz varsayılanına sıfırlamaya) izin vererek tekrar kazanmak için etkinleştirilir.
Birçok yönlendirici için kurtarma bilgisayarınızda bir TFTP sunucusu başlatmayla işler. Bu durumda bozuk bellenimli cihaz TFTP kurtarma modunda başlatılmış olmalıdır. Takiben bazı cihazlar, şebekece-sağlanan bellenim dosyasını TFTP şebeke protokolü üzerinden OpenWrt'ye çeker ve başarılı bir acil çakım süreciyle umutla toparlanır.
Bazı cihazlar kendiliğinden çekme işlevine sahip olmazlar ve bellenimi TFTP'den edinmek ve bellenim yüklemek için kurtarma modunda kullanıcının TFTP kopyalama komutlarına gereksinirler.
NOT: Diğer bazı yönlendiriciler, örneğin birçok Netgear yönlendirici, üzerlerinde TFTP sunucuya sahiplerdir ve kişisel kompüterin TFTP istemcisi olarak davranması gerekir. “TFTP kurtarma modu” bunu ifade ediyor da olabilir, öyleyse yönlendiricinizin hangi yöntemi destekleyebileceğini bulmak için, yönlendiriciniz hakkında bilgiye dikkatlice bakın.
Aşağıdaki yazı temelde, “yönlendiricide TFTP istemci” olan kurtarma öğütler.
Ethernet üzerinden TFTP kurtarma benim Cihazımca Desteklenik mi?
Ethernet üzerinden tftp kurtarma her yönlendirici modelince desteklenmez. TFTP kurtarma cihazınızda bulunan veya bulunmayan, cihaz- ve üretici-özgül önyükleyici temellidir. Sizin cihazınızın TFTP kurtarma destekleyen bir önyükleyiciye sahip olup olmadığını bulmak için, sizin belirli modeliniz için OpenWrt cihaz sayfasını kontrol edin. Eğer cihazınız destekliyorsa, OpenWrt bellenimi cihazınıza cakıldıktan sonra bu kurtarma işlevi cihaz önyükleyicisinde hala bulunuyor olacak.
Not:
- Cihaz önyükleyiciniz bunun yerine “seri kablo üzerinden TFTP kurtama” içerlenmiş olabilir, ki bu sayfada kapsanmamıştır.
TFTP Kurtarma/Yükleme Kurulumu
Takip eden prosedür sadece TFTP kurtarma/yükleme hazırlık süreci için nasıl Ethernet üzerinden TFTP sunucu kurulduğunu tanımlar, cihaz-özgül çakma kurtarma/yükleme sürecini tanımlamaz. Asıl çakma süreci için tedarikçinin sağladığı dokümantasyona, İnternete, OpenWrt Forumuna veya OpenWrt cihaz sayfalarına başvurmalısınız.
- Arzulanan OpenWrt (veya satıcı) bellenim imajını bilgisayarınızdaki belirlenmiş TFTP dizinine indirin (ve gerekliyse adlandırın).
- Bilgisayarınızın Ethernet arayüzünün IP adresini sizin modelin Cihaz Sayfasında tanımlandığı gibi ayarlayın.
- Bilgisayarınızda TFTP sunucuyu başlatın.
- Bilgisayarınızı ve cihazınızı Ethernet kablosuyla bağlayın.
- Yönlendiriciyi güçleyin ve TFTP üzerinden bellenim kurtarmayı başlatmak için bir cihaz-özgül düğmeye basın,
- veya önyükleyici kurtarma seçeneklerine erişip kurtarma bellenimini TFTP üzerinden yükleyin.
TFTP Sunucu Kurulumu
On macOS
macOS provides a native tftpd server that runs the command line. However, it is not verified to work on recent versions (10.15). dnsmasq
can be used instead. There are also GUI applications that are available for those that prefer them.
dnsmasq
Dnsmasq can be installed easily via Homebrew and has the advantage of being able to offer a DHCP server if necessary. Launch it with
$ sudo /usr/local/opt/dnsmasq/sbin/dnsmasq -i enX -p 0 -z --enable-tftp --tftp-root /tmp
Replace enX
with the interface identifier of your ethernet adapter (use ifconfig
to find it out) and /tmp
to the directory containing the image you want to serve. Don't forget to kill the process (e.g. using the Activity Monitor) before you want to start a new instance of dnsmasq
.
Command-Line Native tftpd
For recent versions of macOS, the system-supplied tftpd
is managed with launchctl
. Users should be comfortable with command-line usage and sudo
to take this approach. As confirmed on macOS Sierra 10.12.6 and macOS Mojave 10.14.2, the general steps involved are
- Configure your network interface for the proper server address for your device. Using System Preferences > Network is perhaps the easiest.
- Connect your device to the network interface
- Start
tftpd
$ sudo cp path/to/file/to/serve.bin /private/tftpboot/the_name_the_device_is_looking_for.bin $ sudo launchctl load -F /System/Library/LaunchDaemons/tftp.plist
- Confirm
tfptd
is running by looking for the UDP listener on port 69
$ netstat -an | fgrep \*.69 udp4 0 0 *.69 *.*
- Activate your device's recovery/TFTP mode
- When done with
tftpd
, shut it down with
$ sudo launchctl unload -F /System/Library/LaunchDaemons/tftp.plist
TFTPServer.app
As an example of a GUI-driven TFTP server, TFTPServer.app from http://ww2.unime.it/flr/tftpserver/ provides a pleasant GUI wrapper around the native command that makes the process less error prone. This procedure was tested with TftpServer.app v 3.4.1 on OSX 10.10.5 in December 2016.
- Download and install TftpServer.app from the URL above.
- Move the application to a convenient directory.
- In the same directory, create another folder named 'tftpfiles'. This is the 'designated TFTP directory'. TftpServer.app and tftpfiles will be in the same directory.
- Set the OSX IP address as specified in the Device Page's TFTP Recovery section.
- Click “Start TFTP” (upper left). You should see the “Server Status:” change to “Running”.
- Start your router and press the button. The file will transfer.
- Note: TftpServer.app may give warnings about file permissions. Use the “Fix” buttons at the bottom of the window to set the permissions properly.
- Click “Stop TFTP” or quit the application to stop the TFTP server.
On Windows
While there is a command line TFTP server/client feature in windows, it's easier to use a third party one that has a proper graphical interface.
Tftpd64
A simple and free TFTP application is Tftpd64, available here.
Download the portable version, and unzip it in a folder. You should see the manual, a license in a PDF file, a configuration file, and the application executable itself.
Place the file you want to send (the firmware file usually) in the same folder where you find the Tftpd64 program file. The folder exposed through TFTP can be changed by clicking on Browse button, but in most situations you don't need to do that.
Configure your ethernet port according to your device's own recovery method as detailed in Rescue from failed firmware upgrade, note that in most cases you can't use that port to connect to the internet until you reconfigure it back like it was before.
Double-click on the Tftpd64 program file and you should get a Windows Firewall popup asking you to grant access. Check both options, to allow Tftpd64 to communicate over both home/work and public networks. This is very important, if the Windows Firewall blocks your TFTP server you won't be able to access it from the device you want to recover.
Click on the drop-down menu called Server Interfaces and select your PC's Ethernet port.
Now the TFTP server is online and ready, and the file(s) in it can be accessed as normal.
Tiny PXE
Tiny PXE seems to do the same as Tftpd64 plus BOOTP support (particularly useful for MikroTik devices).
Linux Üzerinde
Dnsmasq
dnsmasq çoğu dağıtımda önyüklenmiştir. Dizininize bir imaj dosyası koyun - asıl ad değişiklik gösterir. Sonra TFTP sunucuyu koşturun:
# dnsmasq --port=0 --enable-tftp --tftp-root=/path/to/firmware/directory --tftp-no-blocksize --user=root --group=root
TFTP sunucunuz dinliyormu kontrol edin:
# netstat -lunp | grep 69
atftpd
atftpd de kullanabilirsiniz:
Debian/Ubuntu/Mint deposundan atftpd yükleme # apt install atftpd |
RedHat/Fedora/Centos deposundan atftpd yükleme # yum install atftpd |
İmaj dosyasını koyacağınız dizini yaratın.
# mkdir /srv/tftp
Dizininize bir imaj dosyası koyun - asıl ad değişiklik gösterir
# cp ~/tp_recovery.bin /srv/tftp
Klasör ve içindeki dosyanın sahipliğini değiştirin
# chown nobody:nogroup -R /srv/tftp
TFTP sunucuyu koşturun (daemon olarak koştur, çatallama, olayları stdout'a kaydet)
# atftpd --daemon --no-fork --logfile - /srv/tftp
TFTP sunucu dinliyor mu kontrol et
# netstat -lunp|grep 69
Olmadıysa, TFTP sunucuyu süperkullanıcı olarak koşturmayı denemelisin
TFTP sunucuyu sınama
TFTP sunucunuzdan dosyayı gerçekten de çekebildiğinizi sınayın. Tercihen diğer bir bilgisayardan TFTP sunucu IP'sini çağırın: (veya olası değilse, aynı sunucuda 0.0.0.0 IP'sini çağırabilirsiniz)
# tftp 192.168.0.66 tftp> get tp_recovery.bin Received 8152633 bytes in 0.8 seconds tftp> quit
Eğer dosyayi teslim aldıysanız, tebrikler, bu hazır.
Sorun giderme
TFTP dosya aktarımı yerel bilgisayardan çalışmaz
- TFTP sunucunun koşturduğunu ve dinlediğini kontrol et
- TFTP klasörünün doğru kurulduğunu kontrol et (konum, erişim hakları)
- Bellenim dosyasının dosdoğru kurulduğunu kontrol et (konum, erişim hakları)
TFTP doya aktarımı yerel bilgisayardan çalışıyor, ama diğer bir bilgisayardan çalışmıyor:
- Ağ kablosunun uygun bağlandığını kontrol et
- Sunucu IP'sinin doğru ayarlandığını kontrol et
- Sunucu güvenlikduvarının UDP geçit 69'da gelen TFTP isteğine izin verdiğinden emin ol.
TFTP dosya aktarımı başka bilgisayardan çalışıyor ama yönlendiriciden çalışmıyor:
- Sunucu IP'sinin doğru ayarlanmışlığını kontrol et (yönlendiricinin aradığının aynısı)
- Farklı kablo kullanmayı dene, çapraz kablo veya alternatif switch/hız
- Yönlendiricide / yönlendirici switch'inde farklı bir port'a bağlamayı dene
- Yönlendirici konsolundan her çıktıya ve her ayrıntıya veya led etkinliğine dikkat edin
- Cihazların birinde arp önbelleğini doğrula... sunucu tarafında daha kolaydır...
- Sabit eşleme için
arp -s
kullan veya geçkin girdileri silmek işinarp -d
kullan - Yönlendiriciyi ping'lemek için üçüncu bir cihaz kullan, mümkünse ikisi de sabit adresli olsun.
- Alternatif bir sunucu yazılımı, istemci yazılımı veya TFTP transfer modu kullan
- Bir etkinlik alırsan, zamanlama sıklıkla sonuç verir, yönlendirici yeniden başlatıp aktarmı daha erken veya geç başlatın...