Showing posts with label Linux configure networking. Show all posts
Showing posts with label Linux configure networking. Show all posts

Ubuntu dhcp server setup

In computer networking, there are two types of ip address configurations, dynamic ip address and static ip address. A dynamic ip address means, a host in a network doesn't have a specific ip address. A dhcp client host will ask it's ip address from a dhcp server, which provides ip address for all hosts in it's network.




DHCP is dynamic host configuration protocol. In Ubuntu, dhcp server package is called dhcp3-server. To setup dhcp server, you need to install the dhcp3-server software package and configure dhcpd.conf file, which is the dhcp server configuration file. In this post, I'll show you how I setup my Ubuntu dhcp server.




Install Ubuntu dhcp3-server with apt-get




There are many ways to install software packages in Ubuntu. Most people use apt-get, a command line package management. So, I'll show you how to install dhcp3-server using apt-get too.




Here is an example of installing Ubuntu dhcp3-server using apt-get:




luzar@ubuntu:~$ sudo apt-get install dhcp3-server
[sudo] password for luzar:Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages were automatically installed and are no longer
required: libdns32 libisc32
Use 'apt-get autoremove' to remove them.
The following NEW packages will be installed: dhcp3-server
0 upgraded, 1 newly installed, 0 to remove and 2 not upgraded.
Need to get 318kB of archives.
After this operation, 774kB of additional disk space will be used.
Get:1 http://us.archive.ubuntu.com hardy/main dhcp3-server
3.0.6.dfsg-1ubuntu9 [318kB]
Fetched 318kB in 3s (106kB/s)
Preconfiguring packages ...
Selecting previously deselected package dhcp3-server.
(Reading database ... 28920 files and directories currently installed.)
Unpacking dhcp3-server
(from .../dhcp3-server_3.0.6.dfsg-1ubuntu9_i386.deb) ...
Setting up dhcp3-server (3.0.6.dfsg-1ubuntu9) ...
Generating /etc/default/dhcp3-server...
* Starting DHCP server dhcpd3 [fail]
invoke-rc.d: initscript dhcp3-server, action "start" failed.
luzar@ubuntu:~$



The dhcp3-server installation is complete but fail to start the daemon. Don't worry, the dhcp3-server failed to start because we do not configure it yet. To configure the dhcp3-server, open /etc/dhcp3/dhcpd.conf file and read through a few times and you'll have a basic idea of how the configurations work.




We are going to edit the file, so make a copy of it first, as backup. Use cp command to copy the file:




luzar@ubuntu:~$ sudo cp /etc/dhcp3/dhcpd.conf
/etc/dhcp3/dhcpd.conf.bak

luzar@ubuntu:~$



Now you can edit /etc/dhcp3/dhcpd.conf to suit your network. Use any text editor you are comfortable with. Here is a tip before we begin editing. Do not remove unrelated configuration, just comment it. Maybe you'll need it later such as fixed ip host configuration. We'll use an existing configuration, change ip address regarding our network.




Here's an example of a simple dhcp configuration for a local network (in blue color):




luzar@ubuntu:~$ sudo less /etc/dhcp3/dhcpd.conf
#
# Sample configuration file for ISC dhcpd for Debian
#
# Attention: If /etc/ltsp/dhcpd.conf exists, that will be used as
# configuration file instead of this file.
#
# $Id: dhcpd.conf,v 1.1.1.1 2002/05/21 00:07:44 peloy Exp $
#


# The ddns-updates-style parameter controls whether or not the server will
# attempt to do a DNS update when a lease is confirmed. We default to the
# behavior of the version 2 packages ('none', since DHCP v2 didn't
# have support for DDNS.)
ddns-update-style none;


# option definitions common to all supported networks...
# Change example.org to your domain name
# Change ns1 and ns2 to your host name
option domain-name "example.org";
option domain-name-servers ubuntu.example.org;


# Set default and max lease time. Time is in second.
default-lease-time 600;
max-lease-time 7200;


# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
authoritative;


# Use this to send dhcp log messages to a different log file (you also
# have to hack syslog.conf to complete the redirection).
#log-facility local7;


# No service will be given on this subnet, but declaring it helps the
# DHCP server to understand the network topology.


#subnet 10.152.187.0 netmask 255.255.255.0 {
#}


# This is a very basic subnet declaration.
#subnet 10.254.239.0 netmask 255.255.255.224 {


# range 10.254.239.10 10.254.239.20;
# option routers rtr-239-0-1.example.org, rtr-239-0-2.example.org;
#}


# This declaration allows BOOTP clients to get dynamic addresses,
# which we don't really recommend.#subnet 10.254.239.32 netmask 255.255.255.224 {
# range dynamic-bootp 10.254.239.40 10.254.239.60;


# option broadcast-address 10.254.239.31;# option routers rtr-239-32-1.example.org;
#}


# A slightly different configuration for an internal subnet.
#subnet 10.5.5.0 netmask 255.255.255.224 {
# range 10.5.5.26 10.5.5.30;
# option domain-name-servers ns1.internal.example.org;
# option domain-name "internal.example.org";
# option routers 10.5.5.1;
# option broadcast-address 10.5.5.31;
# default-lease-time 600;
# max-lease-time 7200;
#}


# Here is my dhcp configuration for local network example
# I am not editing the example above instead I copy it here


subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.20 192.168.1.30;
option domain-name-servers 192.168.44.128;
option domain-name "ubuntu.example.org";
option routers 192.168.44.128;
option broadcast-address 192.168.44.254;
default-lease-time 600;
max-lease-time 7200;
}



# Hosts which require special configuration options can be listed in
# host statements. If no address is specified, the address will be
# allocated dynamically (if possible), but the host-specific information


# will still come from the host declaration.
# Hosts which require special configuration options can be listed in
# host statements. If no address is specified, the address will be
# allocated dynamically (if possible), but the host-specific information
# will still come from the host declaration.


#host passacaglia {
# hardware ethernet 0:0:c0:5d:bd:95;
# filename "vmunix.passacaglia";
# server-name "toccata.fugue.com";
#}


# Fixed IP addresses can also be specified for hosts. These addresses
# should not also be listed as being available for dynamic assignment.
# Hosts for which fixed IP addresses have been specified can boot using
# BOOTP or DHCP. Hosts for which no fixed address is specified can only
# be booted with DHCP, unless there is an address range on the subnet
# to which a BOOTP client is connected which has the dynamic-bootp flag
# set.


#host fantasia {
# hardware ethernet 08:00:07:26:c0:a5;
# fixed-address fantasia.fugue.com;
#}


# You can declare a class of clients and then do address allocation
# based on that. The example below shows a case where all clients
# in a certain class get addresses on the 10.17.224/24 subnet, and all
# other clients get addresses on the 10.0.29/24 subnet.
#class "foo" {
# match if substring (option vendor-class-identifier, 0, 4) = "SUNW";
#}


#shared-network 224-29 {
# subnet 10.17.224.0 netmask 255.255.255.0 {
# option routers rtr-224.example.org;
# }
# subnet 10.0.29.0 netmask 255.255.255.0 {
# option routers rtr-29.example.org;
# }
# pool {
# allow members of "foo";
# range 10.17.224.10 10.17.224.250;
# }
# pool {
# deny members of "foo";
# range 10.0.29.10 10.0.29.230;
# }
#}



Now we can restart the dhcp3-server again. You'll fail to start dhcp3-server if there's error in dhcp.conf file. You'll be prompt of what the error is. For example, here is an error I got when restarting my dhcp3-server:




luzar@ubuntu:~$ sudo /etc/init.d/dhcp3-server restart
dhcpd self-test failed. Please fix the config file.
The error was:
/etc/dhcp3/dhcpd.conf line 57: 2431504310 exceeds max (255) for precision.
range 199999999926


/etc/dhcp3/dhcpd.conf line 57: too few numbers.
range 199999999926 192.
Configuration file errors encountered -- exiting



So, I re-open dhcp.conf file and go to line 57 and fixed the error. You can also view /var/log/messages and /var/log/daemon.log to view error message. That's all that I need to do to configure dhcp in my local network.

Ubuntu nsswitch.conf guide

Ubuntu nsswitch.conf is an important files regarding dns configuration. The nsswitch.conf is Name Service switch configuration file. Why does it important in dns configuration?




There are two important files in Ubuntu that directly deal with name server in mapping the host names and ip address. One is hosts file and the other is dns itself. This applied if you are not configuring NIS, of course. You can find these two files in nsswitch.conf configuration file. Open /etc/nsswitch.conf file using text editor or less command:




luzar@ubuntu:~$ sudo vi /etc/nsswitch.conf



Let's take a look at it more closely:





# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc-reference' and `info' packages installed, try:
# `info libc "Name Service Switch"' for information about this file.


passwd: compat
group: compat
shadow: compat


hosts: files dns
networks: files


protocols: db files
services: db files
ethers: db files
rpc: db files
netgroup: nis~



Let's take a look at the line hosts which I already highlighted in blue. The hosts is pointing for files contain name server in the system when there is a request for it. As you can see, there are two files, files and dns. The files mention in hosts is a local file, which is the /etc/hosts file. The other file is dns, domain name server. The files will be check first and dns second. That means, /etc/hosts can override information in the dns configuration file.

Ubuntu dns server configuration

Ubuntu dns server configuration involves many files. I would like to remind you again, please make a backup for every files before you begin editing. Example below:




luzar@ubuntu:/etc/bind$ sudo cp named.conf.local named.conf.local.bak
luzar@ubuntu:/etc/bind$ sudo cp named.conf.options named.conf.options.bak



The first file we are going to edit is the named.conf.local file. Use your favorite editor to open named.conf.local file.




luzar@ubuntu:/etc/bind$ sudo vim /etc/bind/named.conf.local



Type the code below. Replace example.com. with your domain name.





zone "example.com" in {
allow-transfer { any; };
file "/etc/bind/db.example.com.";
type master;
};


// Set up reversed name resolution
zone "1.168.192.in-addr.arpa" {
type master;
file "/etc/bind/db.192";
};



Example of /etc/bind/db.example.com configuration.





;
; BIND data file for local loopback interface
;
$TTL 604800
@ IN SOA ubuntu.example.com. root.example.com. (
2008112202 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
86400 ) ; Negative Cache TTL
;

example.com IN MX mail.example.com.
@ IN NS ubuntu.example.com.
@ IN A 192.168.1.3
ubuntu IN A 192.168.1.3
web IN CNAME ubuntu.example.com.



Example of /etc/bind/db.192 configuration.





;
; Reverse lookup DNS Zone file
;
$TTL 604800
@ IN SOA ubuntu.example.com. root.example.com. (
2008112302 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
86400 ) ; Negative Cache TTL
@ IN NS ubuntu.
3 IN CNAME ubuntu.example.com.



You have to set the ISP dns server ip address. Put it in /etc/bind/named.conf.options forwarders:





// If your ISP provided one or more IP addresses for stable
// nameservers, you probably want to use them as forwarders.
// Uncomment the following block, and insert the addresses replacing
// the all-0's placeholder.


forwarders {
123.123.0.123;
123.123.1.1;
};



Example of /etc/resolv.conf configuration:

search example.comnameserver 192.168.1.3

Example of /etc/hosts configuration:





127.0.0.1 localhost
192.168.1.3 ubuntu.example.com ubuntu

# The following lines are desirable for IPv6 capable hosts

::1 ip6-localhost ip6-loopbackfe00
::0 ip6-localnetff00
::0 ip6-mcastprefixff02
::1 ip6-allnodesff02
::2 ip6-allroutersff02
::3 ip6-allhosts



Restart bind9 service with the command below:




luzar@ubuntu:~$ sudo /etc/init.d/bind9 restart
* Stopping domain name service... bind [ OK ]
* Starting domain name service... bind [ OK ]

luzar@ubuntu:~$ tail /var/log/messages



Testing dns with dig domain name command:




luzar@ubuntu:/etc/bind$ dig example.com

; <<>> DiG 9.4.2-P2 <<>> example.com
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 34700
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1,
ADDITIONAL: 1

;; QUESTION SECTION:;example.com. IN A


;; ANSWER SECTION:
example.com. 604800 IN A 192.168.1.3


;; AUTHORITY SECTION:
example.com. 604800 IN NS ubuntu.example.com.


;; ADDITIONAL SECTION:
ubuntu.example.com. 604800 IN A 192.168.1.3


;; Query time: 0 msec
;; SERVER: 192.168.1.3#53(192.168.1.3)
;; WHEN: Sun Nov 23 04:23:18 2008
;; MSG SIZE rcvd: 82


luzar@ubuntu:/etc/bind$



Testing with dig ip address:




luzar@ubuntu:/etc/bind$ dig -x 192.168.1.3


; <<>> DiG 9.4.2-P2 <<>> -x 192.168.1.3
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 35746
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1,
ADDITIONAL: 0


;; QUESTION SECTION:
;3.1.168.192.in-addr.arpa. IN PTR


;; ANSWER SECTION:
3.1.168.192.in-addr.arpa. 604800 IN CNAME ubuntu.example.com.


;; AUTHORITY SECTION:
example.com. 86400 IN SOA ubuntu.example.com.
root.example.com. 2008112202 604800 86400 2419200 86400


;; Query time: 0 msec
;; SERVER: 192.168.1.3#53(192.168.1.3)
;; WHEN: Sun Nov 23 04:32:09 2008
;; MSG SIZE rcvd: 115
luzar@ubuntu:/etc/bind$



If you have an error during configuration, please check error logs in:





  • /var/log/daemon.log.

  • /var/log/messages.




Here is an example of /var/log/daemon.log:




luzar@ubuntu:/etc/bind$ tail /var/log/daemon.log

Nov 24 10:23:05 ubuntu named[4554]: zone 28.172.in-addr.arpa/IN:
loaded serial 1
Nov 24 10:23:05 ubuntu named[4554]: zone 29.172.in-addr.arpa/IN:
loaded serial 1
Nov 24 10:23:05 ubuntu named[4554]: zone 30.172.in-addr.arpa/IN:
loaded serial 1
Nov 24 10:23:05 ubuntu named[4554]: zone 31.172.in-addr.arpa/IN:
loaded serial 1
Nov 24 10:23:05 ubuntu named[4554]: zone 168.192.in-addr.arpa/IN:
loaded serial 1
Nov 24 10:23:05 ubuntu named[4554]: zone 1.168.192.in-addr.arpa/IN:
loaded serial 2008112302
Nov 24 10:23:05 ubuntu named[4554]: zone 255.in-addr.arpa/IN:
loaded serial 1
Nov 24 10:23:05 ubuntu named[4554]: zone example.com/IN:
loaded serial 2008112202
Nov 24 10:23:05 ubuntu named[4554]: zone localhost/IN:
loaded serial 2
Nov 24 10:23:05 ubuntu named[4554]: running

Ubuntu named.conf

Ubuntu named.conf file is the master configuration file for DNS server. Its pronounced name-dee for name daemon, which is the dns service. It's location is in /etc/bind/named.conf. You can find named.conf file only after you install the bind9 software package.




Here is an example of a default Ubuntu /etc/bind/named.conf configuration file:





// This is the primary configuration file for the BIND DNS server named.
//
// Please read /usr/share/doc/bind9/README.Debian.gz for information on the
// structure of BIND configuration files in Debian, *BEFORE* you customize
// this configuration file.
//
// If you are just adding zones, please do that in
// include "/etc/bind/named.conf.local

include "/etc/bind/named.conf.options";
// prime the server with knowledge of the root servers

zone "." {
type hint;
file "/etc/bind/db.root";
};

// be authoritative for the localhost forward and reverse zones, and for
// broadcast zones as per RFC 1912

zone "localhost" {
type master;
file "/etc/bind/db.local";
};

zone "127.in-addr.arpa" {
type master;
file "/etc/bind/db.127";
};

zone "0.in-addr.arpa" {
type master;
file "/etc/bind/db.0";
};

zone "255.in-addr.arpa" {
type master;
file "/etc/bind/db.255";
};

include "/etc/bind/named.conf.local";



The named.conf is a very important file. Normally, you don't have to edit this file during dns configuration in Ubuntu. However, maybe you are going to open and view this file a few times to study it's configuration. It's a good idea to copy and make a backup of this file.




luzar@ubuntu:/etc/bind$ sudo cp named.conf named.conf.bak
[sudo] password for luzar:
luzar@ubuntu:/etc/bind$



As you can see, there are specific files in each zone in the named.conf configuration file above. Those are the database files for localhost and default dns configuration. We don't need to edit those files. You only need to edit two files mention at the top of named.conf which is /etc/bind/named.conf.local and /etc/bind/named.conf.options.

Ubuntu dns files

DNS is domain name system. In Ubuntu, DNS package is included in bind9 software package. The dns server is called named. Basically what dns do, it translates name to ip address. It also translates ip address to name, which is called reverse dns.




Setting up dns involves several other files in Ubuntu system, the directly involved bind9 configuration files package and related files not in bind package. Here are all files needed to set up dns server, in bind package and not in bind package.

DNS configuration files in bind package:




luzar@ubuntu:~$ cd /etc/bind/
luzar@ubuntu:/etc/bind$ ls -l
total 44-rw-r--r-- 1 root root 237 2011-05-09 15:42 db.0
-rw-r--r-- 1 root root 271 2011-05-09 15:42 db.127
-rw-r--r-- 1 root root 237 2011-05-09 15:42 db.255
-rw-r--r-- 1 root root 353 2011-05-09 15:42 db.empty
-rw-r--r-- 1 root root 270 2011-05-09 15:42 db.local
-rw-r--r-- 1 root root 2878 2011-05-09 15:42 db.root
-rw-r--r-- 1 root bind 907 2011-05-09 15:42 named.conf
-rw-r--r-- 1 root bind 165 2011-05-09 15:42 named.conf.local
-rw-r--r-- 1 root bind 695 2011-05-09 15:42 named.conf.options
-rw-r----- 1 bind bind 77 2011-05-20 10:56 rndc.key
-rw-r--r-- 1 root root 1317 2011-05-09 15:42 zones.rfc1918
luzar@ubuntu:/etc/bind$



Related files not in bind package:



  • /etc/resolv.conf
  • /etc/hosts

  • /etc/nsswitch.conf




Here are screenshots of the files:




/etc/named.conf




/etc/named.conf is the main dns server configuration file. Here is a default content screenshot:







/etc/resolv.conf




/etc/resolv.conf is dns resolver file. Here is a default content screenshot:







/etc/bind/named.conf.local




/etc/bind/named.conf.local is a zone configuration file for dns setup. Here is a default content screenshot:







/etc/bind/named.conf.options




/etc/bind/named.conf.options file contains generic options for bind bind name server. Here is a default content screenshot:







Bind databases files




/etc/bind/db.root







/etc/bind/db.local







/etc/bind/db.0







/etc/bind/db.255







/etc/bind/db.127







/etc/bind/db.empty




Ubuntu hosts file

The Ubuntu hosts file is a static table lookup for host names. As the name suggests, it contains host names and ip addresses. By default, Ubuntu creates hosts file in /etc directory with localhost name and loop back ip address in its content.


Below is an example of a hosts file with modified content. A default hosts file only contains the first line ip address 127.0.0.1 which resolves the localhost.






127.0.0.1 localhost
192.168.1.3 ubuntu.musang.com ubuntu
# 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
ff02::3 ip6-allhosts


If you setup your Ubuntu system as a local network server, then you need to store other server or hosts in /ets/hosts file. Here is a format of hosts file from host manual page:




This manual page describes the format of the /etc/hosts file. This file is a
simple text file that associates IP addresses with hostnames, one line per IP
address. For each host a single line should be present with the following information:
IP_address canonical_hostname [aliases...]

Fields of the entry are separated by any number of blanks and/or tab characters.
Text from a "#" character until the end of the line is a comment, and is ignored.
Host names may contain only alphanumeric characters, minus signs ("-"), and
periods ("."). They must begin with an alphabetic character and end with an
alphanumeric character. Optional aliases provide for name changes, alternate
spellings, shorter hostnames, or generic hostnames (for example, localhost).

Ubuntu ifconfig eth0

This is guide on how to use ifconfig to manage the first Ethernet card called eth0 in Ubuntu server. Ifconfig is used to configure the kernel-resident network interfaces. You can see my previous post on how to setup Ubuntu ifconfig static ip for more information.

The ethernet card is called eth in Ubuntu. Eth0 is Ethernet card 1, Eth1 is Ethernet card 2, Eth2 is Ethernet card 3, and so on.

In this article, I am going to show how I normally use ifconfig command to manage eth0 with ifconfig command.

Example 1 - Use ifconfig to bring up ethernet card:

luzar@ubuntu:~$ sudo ifconfig eth0 192.168.1.5 up 

The example above shows how to bring up the first ethernet card, eth0.

Example 2 - Use ifconfig to bring down ethernet card:

luzar@ubuntu:~$ sudo ifconfig eth0 192.168.1.5 down 

The example above shows how to bring down the first ethernet card, eth0.

Ubuntu ifconfig static ip

Setup Ubuntu static ip address with ifconfig command. Here is a part of ifconfig information from the manual page:


NAME
ifconfig - configure a network interface
SYNOPSIS
ifconfig [-v] [-a] [-s] [interface]
ifconfig [-v] interface [aftype] options | address ...
DESCRIPTION
Ifconfig is used to configure the kernel-resident network interfaces.
It is used at boot time to set up interfaces as necessary. After that,it
is usually only needed when debugging or when system tuning is
needed.

The ifconfig command is used to manipulate ip address in Ubuntu. We can setup a new ip address for a network card or change ip address and netmask of existing card. From the synopsis above, we can simply use ifconfig command format as:


ifconfig (interface) (ip address)

Here are some ifconfig command examples for you:


Example 01 - Using ifconfig command with no option.






luzar@ubuntu:~$ ifconfig
eth0 Link encap:Ethernet HWaddr 00:0c:29:d2:1d:9b
inet addr:192.168.1.3 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fed2:1d9b/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:58 errors:0 dropped:0 overruns:0 frame:0
TX packets:65 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:6339 (6.1 KB)
TX bytes:8656 (8.4 KB)
Interrupt:16 Base address:0x2000

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B)
TX bytes:0 (0.0 B)
luzar@ubuntu:~$


Example 02 - Using ifconfig command to setup ip address for a second Ethernet card in Ubuntu system.



luzar@ubuntu:~$ ifconfig eth1 192.168.44.128 netmask 255.255.255.0
broadcast 192.168.44.255 up


The ifconfig command above should be in one line.


Example 03 - Using ifconfig command to change ip address for existing Ethernet card in Ubuntu system.



luzar@ubuntu:~$ ifconfig eth0 192.168.1.3




luzar@ubuntu:~$ ifconfig eth0 netmask 255.255.255.0 




Restart network service:



Ubuntu ssh keys

Ubuntu ssh key is referred to the RSA key fingerprint released by ssh server for a client. It's also known as a host key used to identify a client identity.

When a client first time request for ssh, the server will send its public key. If the client trust the server and accepted the public key, it will stored in the server as an identity of that client.

Here is an example of first time ssh login attempt by a client:

aura@ubuntu:~$ ssh -l luzar 192.168.1.3
The authenticity of host '192.168.1.3 (192.168.1.3)' can't be established.
RSA key fingerprint is 8f:8f:a9:8a:47:58:3c:a8:2c:ce:6f:1d:45:dc:86:c9.
Are you sure you want to continue connecting (yes/no)?


If a client reject the public key, ssh will be terminated:



Are you sure you want to continue connecting (yes/no)? no
Host key verification failed.
aura@ubuntu:~$


So user need to accept the ssh server public key to connect into the server. When the user accepted the public key, it'll be stored in the user's home directory, in a hidden file named .ssh/known_hosts. The next time the same user ask to connect using ssh, the server will look for the user .ssh/known_hosts file and compare the fingerprint. Here is an example of user ssh private key stored in the .ssh/known_hosts file:



Ubuntu route del command guide

Ubuntu route del command is used to delete a route from Ubuntu routing table. Here is a route del step by step guide:


First, print current routing table with route command to check which route to be removed.


luzar@ubuntu:~$ route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.44.0 * 255.255.255.0 U 0 0 0 eth0
10.21.35.0 * 255.255.255.0 U 0 0 0 eth0
default 192.168.44.2 0.0.0.0 UG 100 0 0 eth0
luzar@ubuntu:~$

Next, let's delete the network route in blue. Below is an example of Ubuntu route del command used to remove a route from network:



luzar@ubuntu:~$ sudo route del -net 10.21.35.0 netmask 255.255.255.0
dev eth0

luzar@ubuntu:~$ route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
localnet * 255.255.255.0 U 0 0 0 eth0
default mygateway1.ar7 0.0.0.0 UG 100 0 0 eth0luzar@ubuntu:~$

Ubuntu route add default gw

Ubuntu route add command guide on how to create a default gateway:

root@ubuntu:~# route add default gw 10.21.35.161
root@ubuntu:~# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.44.0 * 255.255.255.0 U 0 0 0 eth0
10.21.35.0 * 255.255.255.0 U 0 0 0 eth0
default domain.stats.go 0.0.0.0 UG 0 0 0 eth0
default 192.168.44.2 0.0.0.0 UG 100 0 0 eth0
root@ubuntu:~#


You must add the new route before creating the default gateway.

Ubuntu ssh connection refused

Ubuntu ssh connection refused can be caused by several factors. This is a guide for Ubuntu ssh connection refused troubleshooting.

1) Check whether ssh is installed in your system using dpkg tool.


luzar@ubuntu:~$ dpkg -l | grep ssh
ii openssh-blacklist 0.1-1ubuntu0.8.04.1 list of blacklisted OpenSSH RSA and DSA keys
ii openssh-client 1:4.7p1-8ubuntu1.2 secure shell client, an rlogin/rsh/rcp repla
ii openssh-server 1:4.7p1-8ubuntu1.2 secure shell server, an rshd replacement
luzar@ubuntu:~$


2) Check ssh daemon is running in your server with ps command.


luzar@ubuntu:~$ ps aux | grep sshd
root 4191 0.0 0.1 5316 1016 ? Ss Nov05 0:00 /usr/sbin/sshd
root 4608 0.0 0.7 11356 3728 ? Ss Nov05 0:00 sshd: luzar [priv]
luzar 4610 0.0 0.3 11512 2036 ? S Nov05 0:02 sshd: luzar@pts/0
luzar 14146 0.0 0.1 3008 776 pts/0 S+ 04:14 0:00 grep sshd
luzar@ubuntu:~$


3) Make sure firewall is not blocking ssh. This is a default Ubuntu iptables with no rules configured.


luzar@ubuntu:~$ sudo iptables -L
Chain INPUT (policy ACCEPT)target prot opt source destination
Chain FORWARD (policy ACCEPT)target prot opt source destination
Chain OUTPUT (policy ACCEPT)target prot opt source destination
luzar@ubuntu:~$


4) Use netstat command to check that ssh is listening on port 22.


luzar@ubuntu:~$ sudo netstat -nap | grep :22
[sudo] password for luzar:
tcp6 0 0 :::22 :::* LISTEN 4191/sshd
tcp6 0 52 192.168.44.128:22 192.168.44.1:1219 ESTABLISHED 4608/sshd:luzar [p
luzar@ubuntu:~$

Ubuntu route add command guide

Ubuntu route add command guide for a new user. The route add command actually is one of route command options used to modify a routing table. The route add option can create a new route, add new network, modify current routing table, and add new gateway.


This is the online help available with route command. You can view this help with route --help command.



Usage:
route [-nNvee] [-FC] [] List kernel routing tables
route [-v] [-FC] {add|del|flush}... Modify routing table for AF.
route {-h|--help} [] Detailed usage syntax for specified AF.
route {-V|--version} Display version/author and exit.
-v, --verbose be verbose
-n, --numeric don't resolve names
-e, --extend display other/more information
-F, --fib display Forwarding Information Base (default)
-C, --cache display routing cache instead of FIB=Use '
-A ' or '--';
default: inet
List of possible address families (which support routing):
inet (DARPA Internet) inet6 (IPv6) ax25 (AMPR AX.25)netrom (AMPR NET/ROM)
ipx (Novell IPX) ddp (Appletalk DDP)x25 (CCITT X.25)

This is the description:



DESCRIPTION
Route manipulates the kernel's IP routing tables. Its primary use is
to set up static routes to specific hosts or networks via an interface
after it has been configured with the ifconfig(8) program.
When the add or del options are used, route modifies the routing
tables. Without these options, route displays the current contents of
the routing tables.

The route command with no option will print the routing table. See an example below:



luzar@ubuntu:~$ route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
localnet * 255.255.255.0 U 0 0 0 eth0
default mygateway1.ar7 0.0.0.0 UG 100 0 0 eth0
luzar@ubuntu:~$

Here is an example of Ubuntu route add command to create a new network route:


root@ubuntu:~# luzar@ubuntu:~$ sudo route add -net 10.21.35.0 netmask
255.255.255.0 dev eth0

[sudo] password for luzar:
luzar@ubuntu:~$ route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
localnet * 255.255.255.0 U 0 0 0 eth0
10.21.35.0 * 255.255.255.0 U 0 0 0 eth0
default mygateway1.ar7 0.0.0.0 UG 100 0 0 eth0
luzar@ubuntu:~$

You can see the new route is added in the routing table above.

Ubuntu ssh port

How do we check Ubuntu ssh port? All services have their own unique ports. You can always check service's port in /etc/services file. Open the file using less or vim text editor. Here is an example of /etc/services file:


luzar@ubuntu:/etc$ less /etc/services


# Network services, Internet style
#
# Note that it is presently the policy of IANA to assign
# a single well-known
# port number for both TCP and UDP; hence, officially ports
# have two entries
# even if the protocol doesn't support UDP operations.
#
# Updated from http://www.iana.org/assignments/port-numbers
# and other sources like
# http://www.freebsd.org/cgi/cvsweb.cgi/src/etc/services .
# New ports will be added on request if they have been officially
# assigned by IANA and used in the real-world or are needed by
# a debian package.
# If you need a huge list of used numbers please install the
# nmap package.

tcpmux 1/tcp # TCP port service multiplexer
echo 7/tcp
...
...
...
ftp 21/tcp
fsp 21/udp fspd
ssh 22/tcp # SSH Remote Login Protocol
ssh 22/udp
telnet 23/tcp
...
...
...
tfido 60177/tcp # fidonet EMSI over telnet
fido 60179/tcp # fidonet EMSI over TCP

# Local services

There you go, quite a long list. The /etc/services contains almost all standard services. As you can see, Ubuntu ssh port is 22.

Ubuntu server static ip

There are several ways to manage Ubuntu server ip address. One way is by using traditional Linux tool, the ifconfig command. The other way is by manually edit the /etc/network/interfaces file.

Here is an example of a default Ubuntu /etc/network/interfaces file:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet dhcp

/etc/network/interfaces (END)


You can use text editor such as vim to set Ubuntu server static ip. Here is a vim text editor's guide if you need one. Change Ubuntu /etc/network/interfaces dhcp to static like an example below:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
address 192.168.1.3
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1
# dns-* options are implemented by the resolvconf package,
if installed
dns-nameservers 192.168.1.1
dns-search musang.com
/etc/network/interfaces (END)


This is an example of Ubuntu server static ip configuration from VMWare Ubuntu server guest in Windows XP. You can copy the configuration above and just change the ip address to yours. Save the /etc/network/interfaces file and exit.

You need to restart the network before the changes take effect. To restart network in Ubuntu, use the command below:

luzar@ubuntu:~$ sudo /etc/init.d/networking restart
[sudo] password for luzar:
* Reconfiguring network interfaces... [ OK ]
luzar@ubuntu:~$

You can check the ip address to confirm the changes with ifconfig command. Here is an example:

luzar@ubuntu:~$ ifconfig
eth0 Link encap:Ethernet HWaddr 00:0c:29:d2:1d:9b
inet addr:192.168.1.3 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fa80::20b:29fc:fbd2:1b9b/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:408 errors:0 dropped:0 overruns:0 frame:0
TX packets:321 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:37334 (36.4 KB) TX bytes:37704 (36.8 KB)
Interrupt:16 Base address:0x2000

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)

luzar@ubuntu:~$


That's all. Your network should work now. You can check your networking status with ping command. You can try pinging your gateway or other computer in your network.

Use ping command to check your network:


luzar@ubuntu:~$ ping -c3 192.168.1.1
PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
64 bytes from 192.168.1.1: icmp_seq=1 ttl=128 time=0.130 ms
64 bytes from 192.168.1.1: icmp_seq=2 ttl=128 time=0.126 ms
64 bytes from 192.168.1.1: icmp_seq=3 ttl=128 time=0.132 ms

--- 10.21.35.160 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1998ms
rtt min/avg/max/mdev = 0.126/0.129/0.132/0.009 ms
luzar@ubuntu:~$


If your Ubuntu server is like mine, I mean Ubuntu server as a VMWare guest operating system in Windows xp, using nat to share Ethernet device, then maybe you have to wait a few seconds before the networking takes effect. Sometimes the network is not working when you start the virtual server. Just restart eth0 and testing your connection again.