I am in the process (and actually have been for the past 5 years) of studying for my Cisco certification, specifically now, the CCENT. One of the labs I wanted to familiarize myself with was copying a config from a switch or router to a TFTP server. Eventually, I want to test the boot of an IOS on that TFTP server too. I had purchased an old Catalyst 2950 on Amazon a little over a year ago and recently had to start using it full time as one of my switches in my LAN because my DLink died a little over a week ago. No problem there except for the noise and heat that the 2950 puts out. But the advantage of it is that I can use it as a live lab. No worries there also since it doesn’t really have high traffic devices connected to it, just my Xbox 360, Media PC, and NAS; those are devices I don’t use all the time.
Well, since I use Linux Mint 12 on my desktop I needed to setup TFTP server on it so that I could backup my switch config to it for practice. Trying to find the best setup of TFTP server in Linux Mint wasn’t the easiest find. After numerous searches and a couple of failed How-To’s I finally came across this blog post for Ubuntu.
How to Setup TFTP on Ubuntu 11.10
There was a couple of changes in my configuration though that I had to make for my personal preference, nothing big, and I found that I didn’t need the following:
sudo chown -R nobody:nobody /var/lib/tftpboot
However, if you are using Ubuntu, or other like distribution, you still may need it so I would not skip it if I were you.
Here is the entire post just in case at the time of reading my post the external link no longer exist.
———————————————————————————————————-
First, let’s install all the necessary packages:
sudo apt-get install xinetd tftpd tftp -y
Next, we need to create a configuration file:
sudo nano /etc/xinetd.d/tftp
Put the following content into the file.
service tftp { protocol = udp port = 69 socket_type = dgram wait = yes user = nobody server = /usr/sbin/in.tftpd server_args = var/lib/tftpboot -s disable = no }
In the server_args, I have var/lib/tftpboot, which represents the location of the tftp root, i.e., /var/lib/tftpboot. Notice that I skip the root /.
Now let’s change the ownership of the directory:
sudo mkdir /var/lib/tftpboot sudo chown -R nobody:nobody /var/lib/tftpboot sudo chmod -R 777 /var/lib/tftpboot
and start the TFTP service:
sudo service xinetd stop sudo service xinetd start
Verify the TFTP is running correctly or not:
netstat -na | grep LIST | grep 22
You should see something like this:
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
Test: Upload a file to TFTP Server
Now let’s test the TFTP server by logging into the server first:
tftp localhost
and upload a file:
tftp> put myfile.jpg Sent 56733279 bytes in 5.7 seconds
Quit:
q
Make sure that file has been uploaded:
ls -l /var/lib/tftpboot
Test: Download a file from TFTP Server
Now, let’s go to a different directory and download the file we just upload.
cd some_other_directory
and log in to the tftp server again:
tftp localhost
and get the file:
tftp> get myfile.jpg Received 56733279 bytes in 5.7 seconds
You are done.
Troubleshooting (e.g., Error code 2: Access violation)
If you see a message like: Error code 2: Access violation
Make sure that you:
– Follow the exact procedure in this tutorial
– Make sure that the tftp is started with -s flag.
– Check the permission of the directory, i.e., 777
– After you’ve made any changes to the TFTP configuration, make sure that you stop and start the inet service again.
– Don’t forget to quit tftp before retrying the command.
————————————————————————————————-
Thanks to Derrick over at Icesquare for the very informative post.