Transcript unix

System Configuration for
TCP/IP networking
Spring 2012, Fordham University
Xiaolan Zhang
Outline

Unix overview
 Unix and TCP/IP: where are network func.
implemented?
 Different variants of Unix
 Pointers to resources

Introduction to Unix system administration
 Key commands for knowing system being used
 Packaging utility
Unix and TCP/IP

Berkeley's Unix was first Unix to include
libraries supporting Internet
Protocol stacks: Berkeley sockets.
 Integrate sockets with Unix operating
system's file descriptors, it became almost as
easy to read and write data across a network as
it was to access a disk.

Reference: TCP/IP Illustrated, Volume 2:
The Implementation, by Gary R.
Wright, W. Richard Stevens
Recall: Socket

a host-local,
application-created
OS-controlled
interface (a “door”
or “mailbox”) into
which
 application process
can both send and
 receive messages
to/from another
application process
(remote or local)
host or
server
host or
server
process
controlled by
app
developer
process
socket
socket
TCP with
buffers,
variables
TCP with
buffers,
variables
Interne
t
controlled
by OS
Application 2-4
Socket API: interface for C
programming




socket(): creates a new socket of a certain socket
type, identified by an integer number, and
allocates system resources to it.
bind(): server side, and associates a socket with a
socket address structure, i.e. a specified local
port number and IP address.
listen(): server side, causes a bound TCP socket to
enter listening state.
accept(): server side, accepts a received incoming
attempt to create a new TCP connection from
remote client, and creates a new socket associated
with the socket address pair of this connection.
Socket API: interface for C
programming




connect(): (client side) assigns a free local port
number to a socket. In case of a TCP socket, it
causes an attempt to establish a new TCP
connection.
send() and recv(), or write() and read(),
or sendto() and recvfrom(), used for sending and
receiving data to/from a socket.
close() causes system to release resources
allocated to a socket. In case of TCP, the
connection is terminated.
…
Client/server socket interaction: TCP
Server (running on hostid)
Client
create socket,
port=x, for
incoming request:
welcomeSocket =
ServerSocket()
two sockets
at server
TCP
wait for incoming
connection request connection
connectionSocket =
welcomeSocket.accept()
read request from
connectionSocket
write reply to
connectionSocket
close
connectionSocket
setup
create socket,
connect to hostid, port=x
clientSocket =
Socket()
send request using
clientSocket
read reply from
clientSocket
close
clientSocket
Application 2-7
Stream jargon


input
stream
Client
Process
process
output
stream
inFromServer

Stream: a sequence of
characters that flow into
or out of a process
input stream is attached to
some input source for the
process, e.g., keyboard,
socket, file, …
output stream is attached
to an output source, e.g.,
monitor, socket, file, …
Key: stream interface
provides an abstraction,
i.e., no matter what’s the
actual source/dest, reading
from input stream/writing
to output stream are same
outToServer

monitor
inFromUser
keyboard
input
stream
client
TCP
clientSocket
socket
to network
TCP
socket
from network
Application 2-8
This course
 TCP/IP
network administration on
Unix/Linux system
Where are Network Func.
Implemented?
Link layer: implemented in device drivers
 TCP/IP: implemented in kernel
 Application layer protocols implemented in
command (software)







DNS: dig, nslookup
DHCP
ssh
ftp
HTTP:
Will learn how to install/configure all
these!
Origin of Unix
Dennis Ritchie (standing) and Ken Thompson
begin porting UNIX to the PDP-11 via two Teletype 33 terminals.
Unix Lineage
Linux kernel versions
Unix Kernel
Kernel: part of Unix operating system that
remains running at all times when the
system is up
 kernel executable image

 named unix (System V-based), vmunix (BSDbased system), or something similar
 stored in or linked to root directory
•
•
•
•
•
AIX /unix (actually a link to a file in /usr/lib/boot)
FreeBSD /kernel
HP-UX /stand/vmunix
Linux /boot/vmlinuz
Solaris /kernel/genunix
Linux distribution

built upon standard kernels but are
packaged and bundled differently.
 collection of packages and how packages were
compiled and ultimately delivered are what
make Linux distributions unique

Examples




For more complete list of distributions:
Linux Mint, linuxmit.com http://distrowatch.com/
http://lwn.net/Distributions/
Ubuntu, ubuntu.com
Fedora, federaproject.org
for system-specific guide, go to specific
Website:
Debian, redhat, …
help.ubuntu.com
redhat.com/docs, …
Outline

Unix overview
 Unix and TCP/IP: where are network func.
implemented?
 Different variants of Unix
 Pointers to resources
Key commands for knowing system being
used
 Introduction to Unix system administration

 installation: compiling, driver, package

Interface/Routing configuration
System Administrator Resource

General (for all distributions)
 http://tldp.org/LDP/sag/html/index.html
 And much more

Distribution specific resource
 https://help.ubuntu.com/community/SystemAdministrati
on => We will use this as our example
 And much more

Essentials:





Using terminal and command lie
AddUsersHowTo
FilePermissions (permission bits and Access Control List)
BackupYourSystem
Software Management
Useful Commands

Focus on underlying commands (command
line to use in terminal window), instead of
GUI interface
 More ubiquitious
 More complete functionalities

First, one needs to know what kernel or
distribution is running
 In order to find out relevant online info, get
help, …
System info

What’s Unix/Linux kernel version?
zhang@mocha:~$ uname -a
Linux mocha 2.6.32-38-generic #83-Ubuntu SMP
Wed Jan 4 11:13:04 UTC 2012 i686 GNU/Linux

What Linux distribution is used?
zhang@mocha:~$ lsb_release -r -i -c -d
Distributor ID: Ubuntu
Description: Ubuntu 10.04.4 LTS
Release:
10.04
Codename:
lucid
Which version of command is
used ?

Almost all commands have a –v option
zhang@mocha:~$ nmap –v
Starting Nmap 5.00 ( http://nmap.org ) at 2012-03-21 13:40 EDT
NSE: Loaded 0 scripts for scanning.
Read data files from: /usr/share/nmap
WARNING: No targets were specified, so 0 hosts scanned.
Nmap done: 0 IP addresses (0 hosts up) scanned in 0.07 seconds

Finding stuffs: where is …?
 which: locate a command
 whereis: locate binary, source, and manual page
files for a command
 locate, find: find files by names
Installing software
Suppose you want to install program dig
 Google “How to install dig on Ubuntu?”
 A resource:

 Luckily this is easy to install, just not terribly
intuitive or easy to find as it’s not a package
known as dig:
sudo apt-get install dnsutils
Software (or command) and Package

Software, a program which you can run on
your computer
 Programs often need other resources to work
 Thousands of files may be required (and put in
exact location)

Packages : store everything that a
particular program needs to run
 a collection of files bundled into a single file,
which can be handled much more easily
 contained special files called installation
scripts, which copy files to where they are
needed (amongst other things)
Source Package and binary package
Source packages just include source code,
and can be used on any type of machine if
code is compiled in the right way
 Binary packages have been made
specifically for one type of computer,
or architecture, e.g., x86 (i386 or i686),
AMD64 and PPC

 Generally, correct binary packages will be used
automatically, so you don't have to worry about
picking right ones
Installing new software (1)

Software you want => relevant software
package
 locate command => findutils package
 named (DNS server) => BIND package

Know your packaging utilities
 Ubunto: APT (Debian Advanced Package Tool)
• E.g., apt-get install wget
 RedHat: YUM
• E.g., yum install wget
 Solaris:
• Pktutil –-install wget
Advanced Packaging Tool (APT)

apt-get command is a powerful commandline tool




installation of new software packages
upgrade of existing software packages
updating of the package list index
Upgrading entire Ubuntu system.
Install/Remove package

Install a Package: e.g., to install the
network scanner nmap:
sudo apt-get install nmap

Remove a Package:
sudo apt-get remove nmap
--purge options to apt-get remove will remove the package
configuration files as well.

Multiple Packages: You may specify
multiple packages to be installed or
removed, separated by spaces.
Update Package Index

APT package index is essentially a database of
available packages from repositories defined
in /etc/apt/sources.list file
deb http://us.archive.ubuntu.com/ubuntu/ lucid main restricted
deb-src http://us.archive.ubuntu.com/ubuntu/ lucid main restricted
## Major bug fix updates produced after the final release of the
## distribution.
deb http://us.archive.ubuntu.com/ubuntu/ lucid-updates main restricted
deb-src http://us.archive.ubuntu.com/ubuntu/ lucid-updates main restricted

To update local package index with latest changes
made in repositories
 sudo apt-get update
Upgrade Packages

To upgrade your system, first update your
package index as outlined above, and then
type:
sudo apt-get upgrade
sudo

allows a permitted user to execute a
command as superuser (root) or another
user, as specified in sudoers file.
 Typically, sudo requires that users authenticate
themselves with a password
 Once a user has been authenticated, a
timestamp is updated and the user may then
use sudo without a password for a short period
of time (15 minutes unless overridden in
sudoers).
Outline

Unix overview
 Unix and TCP/IP: where are network func.
implemented?
 Different variants of Unix
 Pointers to resources
Key commands for knowing system being
used
 Introduction to Unix system administration

 installation: compiling, driver, package
Linux boot in a nutshell
System startup

When a system is first
booted, or is reset,
processor executes code at
a well-known location
 For PC, this location is in
basic input/output system
(BIOS), which is stored in
flash memory on
motherboard
 BIOS must determine which
devices are candidates for
boot.
BIOS/Boot loader

BIOS searches for devices that are both
active and bootable in the order of
preference
 A boot device can be a floppy disk, a CD-ROM, a
partition on a hard disk, a device on network, or
a USB flash memory stick

When booted from a hard disk, where
Master Boot Record (MBR) contains the
primary boot loader
 After the MBR is loaded into RAM, the BIOS
yields control to it.
Primary Boot Loader

MBR, a 512-byte sector, first
sector on disk (sector 1 of
cylinder 0, head 0)
• contains both executable code and
error message text
• partition table contains a record for
each of four partitions (sixteen bytes
each).
• magic number: a validation check of
MBR.

The job: to find and load
secondary boot loader (stage 2)
• Using partition tables
Second-stage boot loader, or
kernel loader
a splash screen is commonly displayed, and
 Checks system hardware
 Enumerates attached hardware devices
 Mounts root device, and loads the
necessary kernel modules.
 Linux and an optional initial RAM disk
(temporary root file system) are loaded
into memory.
 When images are loaded, second-stage
boot loader passes control to kernel image
and kernel is decompressed and initialized
GRUB

first- and second-stage boot loaders
combined
 Linux Loader (LILO)
 GRand Unified Bootloader (GRUB) in the x86 PC
environment.
GRUB a three-stage boot
loader




Stage 1 (MBR) boots a stage 1.5 boot loader that
understands particular file system containing
Linux kernel image
When stage 1.5 boot loader is loaded and running,
stage 2 boot loader can be loaded.
With stage 2 loaded, GRUB displays a list of
available kernels (defined in /etc/grub.conf, with
soft links
from /etc/grub/menu.lst and /etc/grub.conf).
kernel image and initrd image are loaded into
memory. With images ready, stage 2 boot loader
invokes kernel image.
multibooting
One boot disk (which as one MBR)
 Choose one boot loader to be the “master”
 Use GRUB for Intel-based Unix/Linux
system

Kernel

prepares itself
 Uncompress itself
 Initialize internal tables, creating in-memory data
structures
 Complete hardware diagnostics
 Install loadable drivers for various hardware
devices present on system.
 creates a process (PID 1) to run init program

Command dmesg: display a copy of console
messages generated during last boot at this
stage
init process

the parent of all processes in the system,
it is executed by kernel and is responsible
for starting all other processes (including
daemons, network services)
 System V startup model (sysvinit), book talked
about this
 Upstart, used on mocha
 Systemd, used on storm, erdos

After this, boot is complete, and the
system is up and running normally.
Startup Runlevels

Indicate state of system when init process
is complete
 0: shuts down all processes and halt system
 1: single-user mode, for sys. Admin. To perform
maintenance
 2: special multi-user mode, no support for file
sharing
 3: full multi-user mode, NFS file sharing
 4: unused
 5: dedicated X windows terminal
 6: shuts down all processes and reboots
Configuration file, /etc/inittab

To set the default runlevel you can edit
following line in your /etc/inittab file:
 id:X:initdefault:
where X is the runlevel. So to automatically
startup X11, you would replace X with 5. Or
if you're at the lilo prompt, you can enter
linux X (where X again is the runlevel).
 During the init process, the /etc/rc.sysinit
file is run which in turn goes into the
default runlevel from the /etc/inittab file.

Configuration file, /etc/inittab
Every runlevel runs available scripts in
appropriate runlevel directory found in
/etc/rcX.d where X is the runlevel.
 If you're entering runlevel 3, scripts in
/etc/rc3.d are executed. These files are
symbolic links to main scripts located in
/etc/init.d directory.
 E.g., under /etc/init.3

 K20nfs -> ../init.d/nfs
 S10network -> ../init.d/network
 S55sshd -> ../init.d/sshd
Upstart

event-based replacement for
/sbin/init daemon which handles starting
of tasks and services during boot, stopping
them during shutdown and supervising them
while the system is running.
 originally developed for Ubuntu but is intended
to be suitable for deployment in all Linux
distributions as a replacement for venerable
System-V init.
systemd

system and service manager for Linux,
compatible with SysV and LSB init scripts.
 aggressive parallelization capabilities
 uses socket and D-Bus activation for starting
services
 offers on-demand starting of daemons
 keeps track of processes using Linux cgroups,
 supports snapshotting and restoring of the
system state
 maintains mount and automount points …

It can work as a drop-in replacement for
sysvinit.
Homework

Download and install Ubuntu
http://www.ubuntu.com/download/ubuntu/
download
Please use same release as mocha:
Distributor ID: Ubuntu
Description: Ubuntu 10.04.4 LTS
Release:
10.04
Codename:
lucid