Howto Setup advanced TFTP server in Ubuntu

Sponsored Link
atftp is Multi-threaded TFTP server implementing all options (option extension and multicast) as specified in RFC1350, RFC2090, RFC2347, RFC2348 and RFC2349. Atftpd also supports multicast protocol known as mtftp, defined in the PXE specification. The server supports being started from inetd as well as in daemon mode using init scripts.

Install atftp Server in Ubuntu

sudo aptitude install atftpd

This will complete the installation

Using atftpd

By default atftpd server starts using inetd so we need to tell atftpd to run as a server directly, not through inetd.Edit /etc/default/atftpd file using the following command

sudo gedit /etc/default/atftpd

Change the following line




save and exit the file

Now you need to run the following command

sudo invoke-rc.d atftpd start

Configuring atftpd

First you need to create a directory where you can place the files

sudo mkdir /tftpboot

sudo chmod -R 777 /tftpboot

sudo chown -R nobody /tftpboot

sudo /etc/init.d/atftpd restart

Security configuration for atftp

Some level of security can be gained using atftp libwrap support. Adding proper entry to /etc/hosts.allow and /etc/hosts.deny will restrict access to trusted hosts. Daemon name to use in these files is in.tftpd.

/etc/hosts.allow /etc/hosts.deny

in.tftpd : FQD or IP

atftp client installation

Advance Trivial file transfer protocol client,atftp is the user interface to the Internet ATFTP (Advanced Trivial File Transfer Protocol), which allows users to transfer files to and from a remote machine. The remote host may be specified on the command line, in which case atftp uses host as the default host for future transfers.

sudo aptitude install atftp

That’s it you are ready to transfer your files using tftp clients

Testing tftp server

Tranfering file hda.txt from (Client using tftp) to (Server Get an example file to transfer (eg. hda.txt)

touch /tftpboot/hda.txt

chmod 777 /tftpboot/hda.txt

ls -l /tftpboot/

total 0
-rwxrwxrwx 1 ruchi ruchi 223 hda.txt


atftp> put hda.txt

Sent 722 bytes in 0.0 seconds

atftp> quit

ls -l /tftpboot/

total 4
-rwxrwxrwx 1 ruchi ruchi 707 2008-07-07 23:07 hda.txt

Sponsored Link

Related posts

39 thoughts on “Howto Setup advanced TFTP server in Ubuntu

  1. Great job!

    Just a little mistake, maybe this command “tftp” should be “atftp”.

  2. Very helpful – have achieved transfer from Ubuntu client to Ubuntu server (named UbuntuServer_2 with address on in-house LAN.

    Next step is to be able to transfer from Windows XP to Ubuntu server.

    Results so far, using ‘ftp http://ftp.hostname‘ as suggested in Windows X Help:

    ftp http://ftp.UbuntuServer_2 -> Unknown host

    ftp http://ftp. -> Uknown host

    ftp -> connected to, then after a few secs, connection closed by remote host.

    Question: any suggestions.

    Eventual aim is to be able to upload files from NuSphere phpEd (Standard) which only supports ‘passive’ FTP, installed on the Windows XP PC to the Ubuntu sever.

  3. @Ivan Ruter

    If you want to transfer files from xp,any linux clients you can use ftp server on your ubuntu that is easy to transfer files

  4. Hi Guys

    My Question is:

    Is possible to configure a Tftp Server for multiples domains or users.
    For example a client connet to the server send a response with a mail folder
    but if i connect on th tfpt server send a reponse qith other folder direction

    this possible this?

  5. Hi admin,

    Great job!

    However I am having difficulties once it has all been installed.

    When Trying to Download a file from the server (Using tftp client on another computer), I get the following error:
    tftp> get config.jpg
    tftp: error received from server
    tftp: aborting


    When Trying to Upload a file to the server (Using tftp client on another computer) I get this error:
    tftp> put config.jpg
    tftp: error received from server

    I’ve checked the permissions of the /tftpboot folder and it has all read/write access for ALL users.

    I’ve got plenty experience with apache via port 80 and 443 (http and https) and also ftp. But i’ve never worked with tftp before and its proving to be so hard to get going.

    Am I missing something?

    Please help… I am desperate to get this going
    Any help would be greatly appreciated so thanks in advance.

  6. This was most useful – thanks you! That said, I had one additional step to make on Ubuntu server 8.10:

    When editing the /etc/default/atftpd to change USE_INETD=true, I also had to amend the options line to point to the /tftpboot directory.

    My original options line read:
    OPTIONS=”–daemon –port 69 –tftpd-timeout 300 –retry-timeout 5 –mcast-port 1758 –mcast-addr –mcast-ttl 1 –maxthread 100 –verbose=5 /var/lib/tftpboot”

    My Amended options line reads:
    OPTIONS=”–daemon –port 69 –tftpd-timeout 300 –retry-timeout 5 –mcast-port 1758 –mcast-addr –mcast-ttl 1 –maxthread 100 –verbose=5 /tftpboot”

  7. Your article was very helpfull

    Still having some problems though. everthing works fine for tiny text files, but If i send anything larger (maybe 100k) it fails.

    I am trying to set this up so my PXE client can boot with thintux

    any help would be appreciated.

    almost forgot, If I run the atftp client on the server itself i dont have a problem.

  8. I think I have followed this very helpful article to the letter.

    My problem is I get the error:

    atftpd: can’t bind port :69/udp

    whenever I start atftpd

    Any suggestions?


  9. Well done!

    atftp may have moved /tftpboot directory to /var/lib/tftpboot

    look in /etc/default/atftpd

    It was this way on ubuntu 8.10.

  10. I’m using ubuntu server 9.04 and I get the following error when I type the command which is supposed to start the standalone service (sudo invoke-rc.d atftpd start):

    invoke-rc.d: initscript atftpd, action “start” failed.

    Any suggestions why it doesn’t start? I haven’t found any log files in /var/log… I tried setting it up using the –logfile option but it didn’t work.


  11. I am using ubuntu 9.04 desktop i386. Also getting

    invoke-rc.d: initscript atftpd, action “start” failed.

    I tried it on an x64 server and even a fresh build purely for testing this. All I changed was the “true” to “false” setting in /etc/default/atftpd file. I confirmed the permissions by chmod -R 777 /var/lib/tftpboot. No juice. This all worked fine in Intrepid 8.10.

  12. RESOLVED: failed.

    I added the “–daemon” option to /etc/default/atftpd

    This is clearly new behavior in Jaunty from Intrepid or Hardy.


  13. This was very helpful. Thanks!

    Before this worked for me…

    I changed


    Where is my local subnet

  14. This has worked great. Many thanks.

    I do have one issue.When trying to upload a new IOS to my C7206vxr routers, I get a timed out error. It is only when uploading, and only the ios. The kboot and FPD package go fine, and I can download the ios image fine. I am sure it because of the size, but not sure how to remedy the problem. Any help would be greatly appreciated.

    Thank you


  15. This solved my problem thanks much. HAPPY VERY HAPPY JOY JOY

    I am using ubuntu 9.04 desktop i386. Also getting

    invoke-rc.d: initscript atftpd, action “start” failed.

    I tried it on an x64 server and even a fresh build purely for testing this. All I changed was the “true” to “false” setting in /etc/default/atftpd file. I confirmed the permissions by chmod -R 777 /var/lib/tftpboot. No juice. This all worked fine in Intrepid 8.10.

  16. Thanks a lot for this information and for Robert too, because with his tips, I’d configure a TFTP server for my Polycom Soundpoint, because I couldn’t with vsftpd.

  17. Thanks to this article and your comments i was finally able to get it work on 9.04 (x64)

    my changes:

    in /etc/default/atftpd:
    * USE_INETD=false
    * added –daemon
    * changed –mcast-addr to fit my enviroment

    modified /var/lib/tftpboot (chmod 777, chown nobody)

    /etc/init.d/openbsd-inetd restart
    /etc/init.d/atftpd start

    thanks, ortwin

  18. RE: writing to a subfolder

    How do I write to a subfolder of /tftpboot ? I keep getting an access violation. I can write just fine to /tftpboot from another machine, so I know the basic setup is working. I made a subfolder and gave it the same mode and group as the parent.

    I’m using the following command to try to write:

    tftp IPaddress -c put filename /folder/

    I’ve tried lots of variations with the folder specification but no luck writing to it. The docs say one can specify a folder.

    Thank you.

    — NewtownGal

  19. Ok as some one above pointed out in options they had to put /var/lib/tftp line similarly I had to put one more line in /etc/inted.conf
    tftp dgram udp wait root /usr/sbin/in.tftpd /usr/sbin/in.tftpd -s /var/lib/tftpboot

  20. It seems many of you had an issue allowing writes to your /tftpboot directory. You need to add “-c” to your server args in /etc/xinetd.d/tftp

    service tftp
    socket_type = dgram
    protocol = udp
    wait = yes
    user = root
    server = /usr/sbin/in.tftpd
    server_args = -s -c /tftpboot
    flags = IPv6 IPv4

    Hope this helps…

  21. Just managed to get atftp to work on ubuntu 11.04 (64 bit) after some effort. Here is what I have done:

    – Followed the instructions
    at the top of this page

    – edit atftpd configuration: sudo nano /etc/default/atftpd

    OPTIONS=”–tftpd-timeout 300 –retry-timeout 5 –mcast-port 1758 –mcast-addr –mcast-ttl 1 –maxthread 100 –verbose=5 –daemon /tftpboot”

    (my files are in /tftpboot)

    /etc/init.d/atftpd start

    sudo atftp
    put myfile

Leave a comment

Your email address will not be published. Required fields are marked *