Linux网络配置与网络工具
Linux网络简介
Linux的网络支持
Linux支持各种协议类型的网络:
- TCP/IP、NetBIOS/NetBEUI、IPX/SPX、AppleTake等
- 在网络底层也支持Ethernet、Token Ring、ATM、PPP(PPPoE)、FDDI、Frame Relay等网络协议。
这些网络协议是Linux内核提供的功能,具体的支持情况由内核编译参数决定。
RHEL/CentOS的Linux内核默认支持上述的网络协议。
Linux的网络接口
Linux支持众多类型的网络接口
- 每一个网络接口设备在Linux的内核中都有相应的设备名称
每一种网络接口设备(网络适配器)都需要相应的设备驱动程序
- 网络接口设备的驱动程序被编译在系统内核中
- 或者被编译为系统内核模块以便让系统内核进行调用
RHEL/CentOS默认是采用内核模块(Module)的方式在系统引导时驱动网络接口的
- 在**/lib/modules/$(uname -r)/kernel/drivers/net**目录下可以找到可加载的驱动可以从系统内核模块配置文件/etc/modprobe.conf中查看系统加载的网卡驱动模块
- 可以从系统内核模块配置文件**/etc/modprobe.conf**中查看系统加载的网卡驱动模块
接口类型 | 接口名称 | 说明 |
---|---|---|
以太网接口 | ethX | 是最常用的网络接口 |
令牌环接口 | trX | 只出现在少数纯IBM环境的网络中 |
光纤分布式数据接口 | fddiX | FDDI接口设备昂贵,通常用于核心网或高速网络中 |
点对点协议接口 | pppX | 用于Modem/ADSL拨号网络或基于PPTP协议的VPN等 |
本地回环接口 | lo | 用于支持UNIX Domain Socket技术的进程相互通信(IPC) |
X是从0开始的整数。如:eth0代表第一块以太网卡,eth1代表第二块以太网卡等。
Linux的网络服务应用
Linux几乎支持Internet世界里所有的网络服务
- WWW服务: Apache、Ngnix、Lighttpd
- Email服务: Postfix、Qmail、Sendmail、Exim
- Dovecot IMAP、Cyrus IMAP、Courier IMAP
- FTP服务: Vsftpd、pure-ftpd、Proftpd 、Wu-ftpd
- 文件共享服务:Samba、NFS
- DNS服务:BIND
- 目录服务:OpenLDAP
- 数据库服务: PostgreSQL、MySQL、 Oracle
- 远程登录与管理:OpenSSH、VNC
临时性配置网络参数
配置网络参数的方法
临时性网络配置
- 通过命令修改当前内核中的网络相关参数实现
- Ifconfig/ip、route、hostname、 sysctl -w
- 配置后立即生效重新开机后失效
永久性网络配置
- 通过直接修改网络相关的配置文件实现
- 修改配置文件后,为了使之立即生效
- 通过重新启动网络服务或指定的网络接口设备实现
- 重新开机后保留所有配置
管理以太网接口
网络接口命名:eth0、eth1 等等
- 使用别名(aliases),单个设备可具备多个地址
- 别名被标识为(eth0:1,eth0:2)等等
- 别名被当作单独的接口对待
- 基于一块物理网卡的多个别名(包括物理网卡自身)只能有一个接口使用DHCP动态分配网络参数
查看网络接口配置
- ifconfig [ethX]
网络接口的启用与停用
- 使用 ifup ethX 命令来启用指定的接口
- 使用 ifdown ethX 命令来禁用指定的接口
ifconfig 命令
ifconfig命令可以临时地设置网络接口的IP参数
格式:
ifconfig <网络接口> <IP地址>
[Mask <子网掩码>] [Broadcast <广播地址>]
当IP地址使用标准A、B、C类地址时,广播地址和子网掩码可以省略。
举例:
ifconfig eth0 10.0.0.10 Mask 255.255.255.0 Broadcast 10.0.0.255
ifconfig eth0 192.168.0.10
ifconfig eth0:0 192.168.1.10
查看Linux内核路由表
使用route命令,查看路由表。路由表可以包含:到主机的路由、到网络的路由、默认网关的路由。
route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.0.0 * 255.255.255.0 U 0 0 0 eth0
192.168.1.0 * 255.255.255.0 U 0 0 0 eth1
192.19.12 192.168.1.1 255.255.255.0 U 0 0 0 eth1
default localhost 0.0.0.0 UG 0 0 0 eth0
route命令
route命令可以临时地设置内核路由表。
格式:
route add|del [-net|-host] <target [netmask Netmask]>
[gw Gateway] [[dev] Interface]
选项:
- add或del:表示添加或删除路由
- -net或-host:表示添加到主机或网络的路由
- target:指定目标主机或网络地址,若目标为网络地址时,需使用 netmask 指定子网掩码
- gw:用于指定网关的IP地址
- dev:用于指定路由的网络接口(dev关键字可省略)
举例:
添加到主机的路由
route add -host 192.168.1.2 dev eth0:0
route add -host 10.20.30.148 gw 10.20.30.40
添加到网络的路由
route add -net 10.20.30.40 netmask 255.255.255.248 eth0
route add -net 10.20.30.48 netmask 255.255.255.248 gw 10.20.30.41
route add -net 192.168.1.0/24 eth1
添加默认网关路由
route add default gw 192.168.1.1删除到主机的路由
route del -host 192.168.1.2 dev eth0:0
route del -host 10.20.30.148 gw 10.20.30.40
删除到网络的路由
route del -net 10.20.30.40 netmask 255.255.255.248 eth0
route del -net 10.20.30.48 netmask 255.255.255.248 gw 10.20.30.41
route del -net 192.168.1.0/24 eth1
删除默认网关路由
route del default gw 192.168.1.1
设置主机名和包转发
使用hostname命令可以临时地修改主机名
格式:
hostname <主机名>
例如:
hostname centos1.ls-al.loc
使用sysctl命令可以临时地开启内核的包转发
sysctl命令用于临时调整内核参数
开启内核的包转发功能使用如下命令
sysctl -w net.ipv4.ip_forward=1
或
echo “1” > /proc/sys/net/ipv4/ip_forward
网络设置-ip
iproute2包,代替传统的net-tools
格式:
ip [ OPTIONS ] OBJECT { COMMAND | help }
对象OBJECT={ link | addr | addrlabel | route | rule | neigh | ntable | tunnel | maddr | mroute | mrule | monitor | xfrm | token }
选项OPTIONS={ -V[ersion] | -s[tatistics] | -d[etails] | -r[esolve] | -h[uman-readable] | -iec | -f[amily] { inet | inet6 | ipx | dnet | link } | -o[neline] | -t[imestamp] | -b[atch] [filename] | -rc[vbuf] [size] }
例子:
ip a/addr/address sh/show dev eth1查看指定IP地址
ip命令
ip是iproute2软件包里面的一个强大的网络配置工具
用来显示或操作路由、网络设备、策略路由和隧道
它能够替代一些传统的网络管理工具,例如ifconfig、route等。
用ip配置的设备信息,大部分会在设备重启后还原。如果想永久保留配置,需进入配置文件修改。
设置和删除ip地址
设置一个IP地址,可以使用下列ip命令:
ip addr add 192.168.0.193/24 dev wlan0
请注意IP地址要有一个后缀,比如**/24。这种用法用于在无类域内路由选择(CIDR)中来显示所用的子网掩码。在这个例子中,子网掩码是255.255.255.0**。(表示子网掩码前24位为1)
查看IP地址
查看一个IP地址,可以使用下列ip命令:
ip addr show wlan0
删除IP地址
删除一个IP地址,可以使用下列ip命令:
ip addr del 192.168.0.193/24 dev wlan0
路由功能
列出路由表条目
ip route show
查看路由表
ip route get 119.75.216.20
添加默认路由
ip route add default via 192.168.202.254
添加网络路由
ip route add 192.168.4.0/24 via 192.168.4.1
修改网络路由
ip route change 192.168.4.0/24 dev eth1
设置NAT路由
ip route add nat 192.168.1.100 via 192.168.1.1
查看某个路由表信息
ip route show table main
ip route show table local
ip route show table all
擦除路由表
擦除所有路由表
ip route flush
擦除路由表的缓存
ip route flush cach
永久性配置网络参数
RHEL/CentOS中的TCP/IP配置文件
配置文件 | 说明 |
---|---|
/etc/sysconfig/network | 系统网络配置文件,包含了主机最基本的网络信息用于系统启动 |
/etc/sysconfig/network-scripts/ifcfg-ethX | 以太网接口配置文件 |
/etc/sysconfig/network-scripts/route-ethX | 以太网接口的静态路由配置文件 |
/etc/hosts | 完成主机名映射为IP地址的静态解析功能 |
/etc/resolv.conf | 配置域名服务客户端的配置文件,用于指定域名服务器的位置 |
/etc/host.conf | 配置域名服务客户端的控制文件 |
网络接口配置文件
网络设备的配置被保存在文本文件中 /etc/sysconfig/network-scripts/ifcfg-ethX
配置文件的语法和完整选项列表参见 */usr/share/doc/initscripts-/sysconfig.txt**
常用选项:
选项 | 说明 | 选项 | 说明 |
---|---|---|---|
Type | 指定网络接口类型 | IPADDR | 指定静态IP地址 |
DEVICE | 指定设备名 | NETMASK | 指定子网掩码 |
HWADDR | 指定网卡的MAC地址 | BROADCAST | 指定广播地址 |
BOOTPROTO | 指定获取网络参数的方式 | GATEWAY | 指定设备的网关 |
ONBOOT | 指定是否在启动时启用设备 |
# vim /etc/sysconfig/network-scripts/ifcfg-eth0
Type=Ethernet
DEVICE=eth0
HWADDR=00:02:8A:A6:30:45
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.0.123
NETMASK=255.255.255.0
BROADCAST=192.168.0.255
GATEWAY=192.168.0.1
#静态配置
# vim /etc/sysconfig/network-scripts/ifcfg-eth0
Type=Ethernet
DEVICE=eth0
HWADDR=00:02:8A:A6:30:45
BOOTPROTO=dhcp
ONBOOT=yes
# 动态配置(DHCP)
系统网络配置文件
系统网络配置文件为**/etc/sysconfig/network**,用于永久性配置主机名和默认网关等
例如:
# vim /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=centos1.ls-al.loc
GATEWAY=192.168.1.254
网络接口的静态路由配置文件
每个网络接口均可有其静态路由配置文件,如**/etc/sysconfig/network-scripts/route-ethX**
配置网络接口eth0的静态路由:
# vim /etc/sysconfig/network-scripts/route-eth0
192.168.2.0/24 via 172.16.10.88
本地域名解析配置文件
本地域名解析数据库文件为 /etc/hosts
例如:
# vim /etc/hosts
127.0.0.1 localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6
192.168.1.200 centos1.ls-al.loc centos1
192.168.0.200 soho.mylabs.me soho
配置远程域名解析器
设置Linux的DNS客户,可以编辑**/etc/resolv.conf**文件
举例:
# vim /etc/resolv.conf
nameserver 192.168.1.1
nameverver 208.67.222.222
nameverver 208.67.220.220
domain sinolido.org # 指定本机所在的域
search sinolido.org # 指定默认搜索域
配置域名解析顺序
域名解析的优先顺序,由配置文件**/etc/host.conf**决定
例如
- 首先查找 /etc/hosts 文件进行域名解析
- 然后使用/etc/resolv.conf文件中指定的域名服务器进行域名解析
# vim /etc/host.conf
order hosts,bind
网络测试工具
网络检测的常用工具
命令工具 | 功能说明 |
---|---|
ifconfig | 检测网络接口配置 |
route | 检测路由配置 |
ping | 检测网络连通性 |
netstat | 查看网络状态 |
lsof | 查看指定IP 和/或 端口的进程的当前运行情况 |
host/dig/nslookup | 检测DNS解析 |
traceroute | 检测到目的主机所经过的路由器 |
tcpdump | 显示本机网络流量的状态 |
ping和traceroute(网络层,ICMP协议)
ping
测试网络的连通性
例如:
ping www.sina.con.cn
ping -c 4 192.168.1.12
traceroute
显示数据包到达目的主机所经过的路由
例如:
traceroute www.sina.com.cn
查看网络端口的使用情况
netstat
查看网络端口
netstat -an
netstat -lunpt
lsof
查看在指定IP 和/或 端口上打开的进程
lsof -i @192.168.0.200
lsof -n -i UDP@192.168.0.200
查看指定端口运行的程序
lsof -i :ssh
lsof -i :22
nmap
端口扫描
网络客户工具
图形界面网络客户工具
图形界面浏览器:Firefox、Mozilla
图形界面E-mail客户端:Thunderbird、Evolution
图形界面FTP客户端:Gftp、Konqueror
图形界面下载工具:WebDownloader for X、Httrack、Getleft
字符界面网络工具
命令 | 功能 |
---|---|
telnet | 远程登录 |
ftp / lftp / ncftp | FTP工具 |
smbclient | 存取 SMB/CIFS 共享资源(类似于ftp) |
wget | 下载文件、镜像 WEB站点 |
rsync | 远程文件同步 |
links / w3m / lynx | 浏览器 |
mutt / mail | 邮件客户 |
ssh / scp / sftp | 基于安全协议的 远程登录/远程复制/远程FTP |
传统的ftp命令
只支持交互式使用方式
$ ftp [ < hostname or IPAddress > ]
常用的交互子命令
子命令 | 功能 | 子命令 | 功能 |
---|---|---|---|
? | 获得命令帮助 | lcd | 切换本地目录 |
!< CMD > | 执行本地Shell命令 | !ls | 显示本地目录列表 |
open/close | 开启/关闭连接会话 | bye/quit | 退出ftp交互 |
bin/asc | 指定二进制/文本传输 | get/put | 单文件上传、下载 |
pwd、ls、cd、mkdir、rmdir | 远程目录管理 | mget、mput | 多文件上传、下载(支持通配符) |
lftp简介
lftp是个功能强大的字符界面文件传输工具
功能:
- 支持交互式和命令行两种工作模式
- 支持ftp、ftps、http、https、hftp、fish等传输协议
- 支持FXP【File eXchange Protocol】(在两个FTP服务器之间传输文件)
- 支持代理、支持多线程传输、支持断点续传
- 支持传输队列(queue)、支持书签(bookmark)
- 支持镜像(mirror)
- 类似bash,提供后台命令、nohop模式、命令历史、命令别名、命令补齐、作业控制、lftp环境设置等支持。
- 使用 lftpget 来实现自动化传输
安全的网络客户工具
SSH
SSH 的英文全称为 Secure SHell
SSH 是IETF 的网络工作组所制定的协议
SSH 是建立在应用层和传输层基础上的安全协议
SSH(Secure SHell)协议是 C/S 模式协议,分为 SSH 的客户端和服务器端,一次成功的 SSH 会话需要两端通力合作来完成。
SSH 目的是要在非安全网络上提供安全的远程登录和其他安全服务
所有使用 SSH 协议的通信,包括口令,都会被加密传输
用于替代传统的 telnet、ftp、r族命令(rlogin、rsh、rcp)
ssh [user@]hostname
ssh [user@]hostname command
OpenSSH
OpenSSH 是 SSH 协议的免费开源实现
- 安全、加密的网络连接工具(ssh、scp、sftp)
- 代替了 telnet、 rlogin、rsh、rcp 和 ftp 等工具
OpenSSH 支持 SSH 协议的版本 1和 2。
- 自从 OpenSSH 的版本 2.9 以来,默认的协议是版本 2
- 版本 2的协议支持 RSA 和 DSA,默认使用 RSA 密钥
OpenSSH 支持的用户认证方式
- 支持基于 PAM 的用户口令认证
- 支持用户密钥认证