Tải bản đầy đủ (.pdf) (24 trang)

Managing Network Connections

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (276.77 KB, 24 trang )

Managing Network
Connections
Connecting to a network from Linux is often as
easy as attaching your computer’s network inter-
face card to your ISP’s hardware (such as a DSL
or cable modem) and rebooting. However, if your
network interface doesn’t come up or requires
some manual setup, there are many commands
available for configuring network interfaces,
checking network connections, and setting up
special routing.
This chapter covers many useful commands for
configuring and working with your network
interface cards (NICs), such as
ethtool
,
mii-
tool
, and
ifconfig
. More specifically, it covers
ways of configuring wired Ethernet, wireless
Ethernet, and modem network hardware. With
your hardware connected and network interfaces
in place, the chapter describes commands such as
netstat
,
dig
,
ip
, and


ping
for getting informa-
tion about your network.
Configuring Networks
from the GUI
When you first install Ubuntu, the installer lets
you configure any wired Ethernet cards attached
to your computer, with the use of a DHCP server
detected on your network. Alternatively, you can
set a static IP address, along with your hostname
and IP addresses for your gateway machine and
name servers. After installation, there are also
graphical tools for configuring your network
interfaces.
IN THIS CHAPTER
Using ethtool and mii-
tool to work with net-
work interface cards
Getting network
statistics with netstat
Starting network
devices with service,
chkconfig, ifup, and
ifdown
Viewing Ethernet
information with
ifconfig and ip
Managing wireless
cards with iwconfig
Configuring modems

with wvdialconf, stty,
and minicom
Checking DNS name
resolution with dig,
host, and hostname
Checking connectivity
with ping and arp
Tracing connections
with traceroute, route,
and ip
Watching the network
with netstat, tcpdump,
and nmap
82935c11.qxd:Toolbox 10/29/07 1:16 PM Page 211
The Network Configuration window (select System ➪ Administration ➪ Network from
the GNOME desktop) offers a GUI for configuring your network interface, network
hardware, DNS servers, host list, and even IPsec virtual private networks. You can con-
figure both dynamic (DHCP, bootp) and static IP addresses. You can even set up static
network routes.
In some cases, however, your network interfaces may not be working. Likewise, there
may be ways you want to work with your network interfaces that are not supported
from the GUI. For those cases, the following sections describe how to work with your
network interfaces from the command line.
Managing Network Interface Cards
If the network hardware on your computer didn’t immediately come up and let you
connect to the Internet, there are some steps you should go through to troubleshoot
the problem:
❑ Verify that your network interface card (NIC) is properly installed and that the
cable is connected to your network (ISP’s CPE, switch, and so on).
❑ After the cable is connected, make sure you have a link with no speed or duplex

mismatches.
❑ If all else fails, consider replacing your NIC with known-good spare to isolate a
hardware failure.
To check your link from Linux, and to set speed and duplex, there are two commands
you can use: the older
mii-tool
(net-tools package) and the newer
ethtool
(ethtool
package). Use
ethtool
unless you have a very old NIC and NIC driver that is not com-
patible with the
ethtool
command.
To view the syntax of the ethtool command, type the following:
$ ethtool -h | less View options to the ethtool command
The
ethtool
command outputs its built-in help to stderr. To be able to page through
that help with
less
, we redirect stderr to stdout.
To display settings for a specific Ethernet card, add the interface name to the command. For
example, to view card information for eth0, type:
$ sudo ethtool eth0 See settings for NIC at eth0
Settings for eth0:
Supported ports: [ TP MII ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full

Supports auto-negotiation: Yes
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
Chapter 11: Managing Network Connections
212
82935c11.qxd:Toolbox 10/29/07 1:16 PM Page 212
Advertised auto-negotiation: Yes
Speed: 100Mb/s
Duplex: Full
Port: MII
PHYAD: 1
Transceiver: internal
Auto-negotiation: on
Supports Wake-on: g
Wake-on: g
Current message level: 0x00000007 (7)
Link detected: yes
You will need root permissions to acquire information about the Ethernet interface,
hence the use of the
sudo
command in the previous example.
To find out about the driver being used for a particular network card, use the
-i
option:
$ sudo ethtool -i eth0 Display driver information for NIC
driver: e1000
version: 7.3.15-k2-NAPI
firmware-version: 0.5-7
bus-info: 0000:04:00.0
Use the

-S
option to display detailed statistics for a NIC:
$ sudo ethtool -S eth0 Show statistics for NIC at eth0
NIC statistics:
rx_packets: 1326384
tx_packets: 773046
rx_bytes: 1109944723
tx_bytes: 432773480
rx_errors: 5
tx_errors: 2
rx_dropped: 0
tx_dropped: 0
multicast: 0
collisions: 0
rx_length_errors: 0
rx_over_errors: 0
rx_crc_errors: 5
rx_frame_errors: 0
rx_fifo_errors: 0
rx_missed_errors: 0
tx_aborted_errors: 0
tx_carrier_errors: 2
...
The
ethtool
command can be used to change NIC settings as well as display them. To
turn off auto-negotiation and hard-set the NIC to 100 Mpbs, full duplex, type this:
$ sudo ethtool -s eth0 speed 100 duplex full autoneg off Change NIC settings
213
Chapter 11: Managing Network Connections

82935c11.qxd:Toolbox 10/29/07 1:16 PM Page 213
To turn off auto-negotiation and hard-set the speed to 10 Mpbs, half-duplex, type this:
$ sudo ethtool -s eth0 speed 10 duplex half autoneg off Change NIC settings
The changes just made to your NIC settings are good for the current session. When
you reboot, however, those setting will be lost. To make these settings stick at the next reboot
or network restart, you need to create a new script to get executed at boot time. The fol-
lowing steps describe how to do this.
1.
Choose a name for your new script, such as
eth_options
, and then create the
script in the
/etc/init.d
directory:
$ sudo vi /etc/init.d/eth_options
2.
Insert the following text into this new script:
#!/bin/sh
ETHTOOL=”/usr/sbin/ethtool”
ETHTOOL_OPTS=”speed 10 duplex half autoneg off”
DEV=”eth0”
case “$1” in
start)
echo -n “Setting $DEV options to $ETHTOOL_OPTS...”;
$ETHTOOL -s $DEV $ETHTOOL_OPTS;
echo “ done.”;;
stop)
;;
esac
exit 0

3.
The specific settings you desire should be placed into the variable
ETHTOOL_OPTS
.
For example:
ETHTOOL_OPTS=”speed 10 duplex half autoneg off”
You can also change the
DEV
variable, which points to the first Ethernet
interface,
eth0
.
4.
Next, you need to set up the script as an executable file:
$ sudo chmod +x /etc/init.d/eth_options
5.
Then, set up the symbolic links to run your new script under the different run levels:
$ sudo update-rc.d eth_options defaults
Adding system startup for /etc/init.d/eth_options ...
/etc/rc0.d/K20eth_options -> ../init.d/eth_options
/etc/rc1.d/K20eth_options -> ../init.d/eth_options
/etc/rc6.d/K20eth_options -> ../init.d/eth_options
/etc/rc2.d/S20eth_options -> ../init.d/eth_options
/etc/rc3.d/S20eth_options -> ../init.d/eth_options
/etc/rc4.d/S20eth_options -> ../init.d/eth_options
/etc/rc5.d/S20eth_options -> ../init.d/eth_options
214
Chapter 11: Managing Network Connections
82935c11.qxd:Toolbox 10/29/07 1:16 PM Page 214
You can run your script with the following command:

$ sudo /etc/init.d/eth_options start
NOTE You can find tips similar to this at the nixCraft site,
www.cyberciti
.biz/tips/
.
As mentioned earlier,
ethtool
may not work on some older NICs. So if you have an older
NIC, try using mii-tool as follows:
$ sudo mii-tool Show negotiated speed and link status of old NIC
eth0: negotiated 100baseTx-FD flow-control, link ok
This example was taken from the same machine as the examples above, with the NIC
auto-negotiating at 1000 Mbps, full-duplex. The
mii-tool
command is mis-reading
the speed setting. This is why we recommend using
mii-tool
only as a last resort if
ethtool
doesn’t work with your old NIC.
To display mii-tool output with more verbosity, use the
-v
option:
$ sudo mii-tool -v Show verbose output of settings for old NIC
eth0: negotiated 100baseTx-FD flow-control, link ok
product info: vendor 00:50:43, model 12 rev 2
basic mode: autonegotiation enabled
basic status: autonegotiation complete, link ok
capabilities: 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD
advertising: 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD flow-control

link partner: 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD flow-control
In the example just shown, you can see that each mode (100baseTx and 10baseT)
supports both half-duplex (HD) and full duplex (FD). To disable auto-negotiation and
force a particular setting, use the
-F
option as follows:
$ sudo mii-tool -F 10baseT-FD eth0 Force speed/duplex to 10baseT-FD
If you change your mind and later want to re-enable auto-negotiation, use the
-r
option:
$ sudo mii-tool -r eth0 Re-enable auto-negotiation for an old NIC
restarting autonegotiation...
mii-tool
does not provide a capability to save settings like
ethtool
does, so you have
to run it after every reboot. This can be done by adding it at the end of
/etc/rc.local
.
The
netstat
command provides another way to get network interface statistics:
$ netstat -i Get network interface statistics for eth0
Kernel Interface table
Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0 1500 0 1757208 6 0 0 996834 4 0 0 BMRU
215
Chapter 11: Managing Network Connections
82935c11.qxd:Toolbox 10/29/07 1:16 PM Page 215
Use the

-c
option to get
netstat
to refresh network interface statistics every second:
$ netstat -ic Refresh network statistics every second
You can get cleaner (screen-oriented) refreshed output from
netstat
by combining it with the
watch
command as follows:
$ watch netstat -i Refresh network statistics (screen oriented)
Every 2.0s: netstat -i Wed Aug 22 01:55:48 2007
Kernel Interface table
Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0 1500 0 1757208 6 0 0 996834 4 0 0 BMRU
As the output indicates, the
netstat
statistics are updated every 2.0 seconds.
Managing Network Connections
Starting and stopping the network interfaces for your wired Ethernet connections to
your LAN or the Internet is usually handled automatically at the time you boot and
shut down your Ubuntu system. However, you can use the commands in
/etc/init.d
to start and stop your network interfaces any time you want or
update-rc.d
to config-
ure whether your network starts automatically.
The
ifconfig
and

ip
commands can also be used to configure, activate, and deacti-
vate interfaces. However, on Ubuntu and other Debian derivatives, the commands in
the
/etc/init.d
directory provide simpler tools to start and stop network interfaces.
Therefore, in most cases, you should only use
ifconfig
and
ip
commands to gather
information about your Ethernet interfaces and NICs (as shown later in this section).
Starting and Stopping Ethernet Connections
The reason that your wired Ethernet interfaces just come up in many cases when you
boot Ubuntu is that the
network
service is set to be on when the system enters the com-
mon boot run levels (run levels 3 and 5). There is a set of underlying configuration files
and scripts that make that happen and a few simple commands that let you control it.
For Ubuntu, control scripts and configuration files are located in the
/etc/network/
directory. NICs are configured by editing
/etc/network//interfaces
. The file looks
like the following:
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
216

Chapter 11: Managing Network Connections
82935c11.qxd:Toolbox 10/29/07 1:16 PM Page 216
auto eth1
iface eth1 inet dhcp
auto eth2
iface eth2 inet dhcp
auto ath0
iface ath0 inet dhcp
auto wlan0
iface wlan0 inet dhcp
To get more information on this file, type the following:
$ less /usr/share/doc/network-manager/README.Debian
If you change the interfaces file, you need to run the following command:
$ sudo /etc/dbus-1/event.d/25NetworkManager restart
The script that starts the configured
network-scripts
files is
/etc/init.d/network
.
As with other Linux services, you can start and stop the
network
service using the
/etc/init.d/networking
command.
To take all NICs offline then bring them back online, allowing any change to the network scripts
to take effect, type the following:
$ sudo /etc/init.d/networking restart Shutdown and bring up network interfaces
* Reconfiguring network interfaces...
There is already a pid file /var/run/dhclient.eth0.pid with pid 9242
killed old client process, removed PID file

Internet Systems Consortium DHCP Client V3.0.4
Copyright 2004-2006 Internet Systems Consortium.
All rights reserved.
For info, please visit />Listening on LPF/eth0/00:19:d1:5a:a9:e2
Sending on LPF/eth0/00:19:d1:5a:a9:e2
Sending on Socket/fallback
DHCPRELEASE on eth0 to 192.168.1.1 port 67
There is already a pid file /var/run/dhclient.eth0.pid with pid 134993416
Internet Systems Consortium DHCP Client V3.0.4
Copyright 2004-2006 Internet Systems Consortium.
...
[ OK ]
You may see errors for extra interfaces defined but not available on your system, such
as wireless interfaces. You can ignore any error that refers to a networking device you
have not installed.
217
Chapter 11: Managing Network Connections
82935c11.qxd:Toolbox 10/29/07 1:16 PM Page 217
Use the
start
and
stop
options to start and stop your network interfaces, respectively:
$ sudo /etc/init.d/networking stop Shutdown network interfaces
$ sudo /etc/init.d/networking start Bring up network interfaces
To check the status of your network interfaces, type the following:
$ ifconfig Check network interface status
eth0 Link encap:Ethernet HWaddr 00:19:D1:5A:A9:E2
inet addr:192.168.1.106 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::219:d1ff:fe5a:a9e2/64 Scope:Link

UP BROADCAST RUNNING MULTICAST MTU:1492 Metric:1
RX packets:14442 errors:0 dropped:0 overruns:0 frame:0
TX packets:13080 errors:0 dropped:0 overruns:0 carrier:0
collisions:434 txqueuelen:1000
RX bytes:3732823 (3.5 MiB) TX bytes:1142020 (1.0 MiB)
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:35 errors:0 dropped:0 overruns:0 frame:0
TX packets:35 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:2121 (2.0 KiB) TX bytes:2121 (2.0 KiB)
If you have multiple network interfaces, you may want to just bring one interface up or
down. To do that, use the
ifup
and
ifdown
commands:
$ sudo ifdown eth0 Take the eth0 network interface offline
$ sudo ifup eth0 Bring the eth0 network interface online
When your network interfaces are up, there are tools you can use to view information
about those interfaces and associated NICs.
Viewing Ethernet Connection Information
To view the media access control (MAC) address for your NIC and IP address for your
TCP/IP connections, you can use the
ifconfig
command. The following command
line shows the address information and status of your eth0 Ethernet interface:
$ ifconfig eth0

eth0 Link encap:Ethernet HWaddr 00:D0:B7:79:A5:35
inet addr:10.0.0.155 Bcast:10.0.0.255 Mask:255.255.255.0
inet6 addr: fe80::2d0:b7ff:fe79:a535/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1413382 errors:6 dropped:0 overruns:0 frame:6
TX packets:834839 errors:4 dropped:0 overruns:0 carrier:4
collisions:0 txqueuelen:1000
RX bytes:1141608691 (1.0 GiB) TX bytes:470961026 (449.1 MiB)
218
Chapter 11: Managing Network Connections
82935c11.qxd:Toolbox 10/29/07 1:16 PM Page 218
In this example, the eth0 interface is the first Ethernet interface on the computer.
The MAC address (HWaddr) of the NIC is 00:D0:B7:79:A5:35. You can see eth0’s IP
address (10.0.0.155), broadcast address (10.0.0.255), and subnet mask (255.255.255.0).
Other information includes the number of packets received and transmitted, as
well as problems (errors, dropped packets, and overruns) that occurred on the
interface.
To get information on both active and inactive NICs, use the
-a
option:
$ ifconfig -a
Instead of using
ifconfig
(and several other commands described in this chapter),
you can use the newer
ip
command. The
ip
command was made to show informa-
tion about your network interfaces, as well as changing settings for network devices,

routing, and IP tunnels. Here the
ip
command is used to show information about the eth0
interface:
$ ip addr show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:d0:b7:79:a5:35 brd ff:ff:ff:ff:ff:ff
inet 10.0.0.155/24 brd 10.0.0.255 scope global eth0
inet6 fe80::2d0:b7ff:fe79:a535/64 scope link
valid_lft forever preferred_lft forever
The
ip
command allows for shorthand syntax. If you’re familiar with the Cisco
IOS command line interface, the
ip
command works the same way. For example,
instead of typing
ip addr show
, you could type the following to see information
on all interfaces:
$ ip a
The
ip
command can operate on multiple network components, known as objects.
One of these objects is
addr
, which allows
ip
to configure network addresses. We
will cover other objects of the

ip
command below.
To see how the ip command is used, use the
help
option. Along with the
help
option,
you can identify an
ip
object to get information on using that object:
$ ip help View ip usage statement
Usage: ip [ OPTIONS ] OBJECT { COMMAND | help }
ip [ -force ] [-batch filename
where OBJECT := { link | addr | route | rule | neigh | ntable | tunnel|
maddr | mroute | monitor | xfrm }
OPTIONS := { -V[ersion] | -s[tatistics] | -r[esolve] |
-f[amily] { inet | inet6 | ipx | dnet | link } |
-o[neline] | -t[imestamp] }
$ ip addr help View help for the addr object
$ ip route help View help for the route object
$ ip tunnel help View help for the tunnel object
219
Chapter 11: Managing Network Connections
82935c11.qxd:Toolbox 10/29/07 1:16 PM Page 219

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×