网络接口配置
ifconfig
- 列出各个已定义的网络接口的配置情况(root权限)
- ifconfig
- ifconfig eth0
- 禁止/激活任何网络接口
-
ifconfig eth0 up
-
ifconfig eth0 down
-
ifup eth0
-
ifdown eth0
在网络配置界面中,通过“激活”或者“解除”按钮可以启动或者禁用网络接口
注意:修改网络接口配置可能会导致SSH客户端断开
- 修改网络接口配置
ifconfig <设备名> <IP> netmask <掩码>
修改完需要重启网络接口,只有单次修改有效
- 长期有效
vim /etc/sysconfig/network-scripts/ifcfg-xxx(针对CentOS)
IPADDR=XX.XX.XX.XX
NETMASK=YY.YY.YY.YY
GATEWAY=ZZ.ZZ.ZZ.ZZ
DNS1=AA.AA.AA.AA
DNS2=BB.BB.BB.BB
网络控制程序network
- /etc/rc.d/init.d/network start | stop | restart
- /etc/init.d/network start | stop | restart
- service network start | stop | restart
常用网络命令
ping
网络测试命令
ping [选项] <目的主机名或IP地址>
- c num 发送num个数据包后停止
- s bytes 默认值是64字节
traceroute
显示数据包经过路由的命令
traceroute <选项> <目的主机IP或域名>
route
管理路由表命令
- 显示路由表内容:不加任何参数的route命令显示本机路由表的内容,
- 添加/删除路由记录
route add|del -net <网络号> netmask <网络掩码> dev <设备名>
route add -net 200.1.1.0 netmask 255.255.255.0 dev eth0
- 添加或者删除默认网关:
route add|del default gw <网关名或网关IP>
例如:
route add default gw 200.1.1.254
route del default gw 200.1.1.254
netstat
显示网络状态
- a 显示所有会话数据
- i 列出系统已经定义的每个网卡
- r 显示出计算机当前的路由表
- s 显示出当前网络协议统计信息
- nltp 列出正在占用的端口
网络相关配置文件
/etc/sysconfig/network
对本机的网络进行配置,常见的几个配置项如下:
- NETWORKING:值为yes或no,表示主机是否支持网络功能。
- HOSTNAME:主机名(即域名)。
- GATEWAY:默认网关。
- FORWARD_IPV4:设置本机是否允许转发IPV4的数据包。
- DOMAINNAME:此台主机所属的网络域。
- GATEWAYDEV:连接网关的设备,例如eth0,如果是拨号用户则设为ppp0。
/etc/sysconfig/network-scripts/
- DEVICE=eth0 //设备名称
- ONBOOT=yes //起动时是否起动该设备,省略该行表示yes
- BOOTPROTO=none //启动协议,none表示使用用户设置的ip地址,dhcp表示从dhcp获得ip地址static表示静态IP。
- IPADDR=192.168.14.11 //IP地址
- NETMASK=255.255.255.0 //子网掩码
- GATEWAY=XX.XXX.XXXX
- DNS1=xx.xxx.xxx.xx
域名解析配置文件 /etc/host.conf
- order hosts,bind
先查询解析/etc/hosts文件,然后是DNS服务器 - multi on
指定的计算机是否可以有多个IP地址 - nospoof on
不允许对该服务器进行IP地址欺骗(防攻击)
主机名列表文件/etc/hosts
IP地址 主机名 别名
例如:
192.168.14.15 qq.yys.com qq
127.0.0.1 localhost
域名服务器设置文件 /etc/resolv.conf
- nameserver <DNS服务器IP>
定义DNS服务器的IP地址 - domain <域名> (可选)
定义本地域名 - search <域名列表>(可选)
定义域名的搜索列表
网络服务列表文件 /etc/services
列出了系统支持的服务名称、服务使用的端口号和协议类型、服务的别名、功能注释等。
例如
http 80/tcp www www-http #WorldWideWeb HTTP
协议定义文件 /etc/protocols
协议名称 协议号 别名
例如:
tcp 6 TCP
udp 17 UDP
网络服务管理
Linux服务器最主要的功能就是提供各种网络服务,例如:www,ftp,dns,邮件服务器等
/etc/services文件列出了Linux系统支持的所有服务的名称
网络服务管理可以采用图形界面管理工具和命令行界面管理工具
图形界面管理工具
chkconfig
用于检查和设置系统的各种服务
- 添加指定的新服务:chkconfig --add 服务名
- 删除指定服务:chkconfig --del 服务名
- 显示所有或指定服务,以及他们在每个运行级别是否启动等:
chkconfig --list 或 chkconfig --list [服务名]
- 改变服务的运行级别及启动信息:
chkconfig [--level <levels>] <name> <on|off|reset>
chkconfig --level 3 sshd off
重启后才能生效,类似配置启动项
service
终端命令service用于设置网络服务的当前状态:
service 服务名 [start|stop|restart]
马上生效
网络服务模型
网络服务主要靠服务名以及服务端口号进行区分。
网络服务启动后,会在服务器上驻留服务进程,该进程对本身的服务进行监控,比如:客户端连接服务端口,服务进程就响应连接,提供服务。
Linux系统中的网络服务模型有两种
- 独立的守护进程工作模式
- 基于xinetd的工作模式
守护进程
在Client/Server模式下。服务器监听(Listen)在一个特定的端口上等待客户连接。连接成功后服务器和客户端通过端口进行数据通信。
守护进程的工作就是打开一个端口,并且等待(Listen)进入连接。
如果客户端发起一个连接请求,守护进程就创建(Fork)一个子进程响应这个连接,而主进程继续监听其他的服务请求。
运行独立的守护进程工作方式称作:stand-alone。它是Unix传统的C/S模式的访问模式。
Web服务器Apache和邮件服务器Sendmail、域名服务器Bind使用独立守护进程模式启动。
因为这些负载很大服务器上,预先创建子服务器,可以提高客户的服务速度。
xinetd
从守护进程的概念可以看出,对于系统所要提供的每一种服务,都必须运行一个监听某个端口连接情况的守护进程,这通常意味着资源浪费。
为了解决这个问题,Linux引进了“网络守护进程服务程序”的概念。
RHEL5使用的网络守护进程是xinetd(eXtended InterNET daemon)。和stand-alone模式相比xinetd模式也称 Internet Super-Server(超级服务器)。
xinetd能够同时监听多个指定的端口,在接受用户请求时,它能够根据用户请求的端口不同,启动不同的网络服务进程来处理这些用户请求。
可以把xinetd看做一个管理启动服务的管理服务器,它决定把一个客户请求交给那个程序处理,然后启动相应的守护进程。
xinetd能够同时监听多个指定的端口,在接受用户请求时,它能够根据用户请求的端口不同,启动不同的网络服务进程来处理这些用户请求。
可以把xinetd看做一个管理启动服务的管理服务器,它决定把一个客户请求交给那个程序处理,然后启动相应的守护进程。
特点
- 支持对TCP、UDP、RPC服务的管理
- 可以实施基于时间段的访问控制
- 功能完备的log功能,可以记录连接成功、连接失败的行为
- 能够有效地防止拒绝服务(DoS)的攻击
- 能够限制同时运行的同一类型的服务器的数目
- 能够限制log文件大小
- 能够将某个服务绑定在特定的系统接口上,从而实现只能允许私有网络访问某项服务。
- 能够实现作为其它系统的代理。
使用
需要配置文件:
yum install -y xinetd
- /etc/xinetd.conf:控制xinetd程序运行的配置文件。其中,提供了所有服务的缺省配置。
系统默认的/etc/xinetd.conf文件内容如下:
# Simple configuration file for xinetd
#
# Some defaults, and include /etc/xinetd.d/
defaults
{
instances = 60 #同时连接并发数
log_type = SYSLOG authpriv #记录到登录日志
log_on_success = HOST PID #成功登录后,记录那些信息
log_on_failure = HOST #登录失败后,记录什么信息
cps = 25 30 #同一秒最大并发为25,超过后暂停服务30秒
}
- /etc/xinetd.d/*:该目录包括所有由xinetd程序启动的服务的配置文件,每个服务都有自己单独的配置文件,配置文件名与服务名一致
telnet服务
Telnet是一种远程登录应用,常用于系统远程维护。端口23.
Telnet设计为基于xinetd的一种服务,受xinetd管理。
- chkconfig --list
- yum install telnet telnet-server
- chkconfig --list | grep telnet #查看启用情况
- 编辑(新建)/etc/xinetd.d/telnet
service telnet
{
flags = REUSE #表示当中断或重启xinetd时,TCP/IP Socket可重用
socket_type = stream #表示使用TCP的Socket类型
wait = no #表示该服务提供多线程功能
user = root #设置进程的UID,由root用户操作
server = /usr/sbin/in.telnetd #设置服务程序文件
log_on_failure += USERID #表示当连接失败时,系统除记录/etc/xinetd.conf文件中设置的内容外,还需记录用户ID
disable = no #表示允许xinetd启动本项服务(该项原来是yes)
}
- 重新启动服务 service xinetd restart
vsFTPd
FTP是一种文件传输协议,它实现了服务器与客户机之间的文件传输和资源的共享。
vsFTPd(very secure FTP daemon)是一个功能强大的FTP服务器,能运行在大部分UNIX 类作系统上,支持很多其他的FTP服务器不支持的特征:
- 支持虚拟IP
- 支持虚拟用户
- 可以独立操作或者由xinetd管理
- 可以对每个用户进行配置
- 带宽限制
- 支持IPv6
- 支持通过SSL的加密
主动模式PORT(主动连接 客户端 )
指的是FTP服务器“主动”去连接客户端的数据端口来传输数据,其过程具体来说就是:
- 客户端从一个任意的非特权端口N(N>1024)连接到FTP服务器的命令端口(即tcp 21端口),
- 紧接着客户端开始监听端口N+1,并发送FTP命令“port N+1”到FTP服务器,
- 然后服务器会从它自己的数据端口(20)“主动”连接到客户端指定的数据端口(N+1),这样客户端就可以和ftp服务器建立数据传输通道了。
被动模式PASV(被动等待客户端连接)
指的是FTP服务器“被动”等待客户端来连接自己的数据端口,其过程具体是:
- 当开启一个FTP连接时,客户端打开两个任意的非特权本地端口(N >1024和N+1)。
- 第一个端口连接服务器的21端口,但与主动方式的FTP不同,客户端不会提交PORT命令并允许服务器来回连它的数据端口,而是提交PASV命令。
- 这样做的结果是服务器会开启一个任意的非特权端口(P > 1024),并发送PORT P命令给客户端。
- 然后客户端发起从本地端口N+1到服务器的端口P的连接用来传送数据。(注意此模式下的FTP服务器不需要开启tcp 20端口了)
安装
yum install -y vsftpd
-
默认会创建一个名为ftp用户,home目录为: /var/ftp
-
默认是监听IPV6端口
启动
-
独立工作模式 :
默认情况,进入ftp用户的home目录
service vsftpd start -
借助xinetd管理的工作模式:
将前面的选项设置为“listen_ipv6=NO”
并配置/etc/xinetd.d/vsftpd文件
独立工作模式下的配置
vsFTPd的配置文件有三个:
- /etc/vsftpd/vsftpd.conf:vsFTPd的主配置文件
anonymous_enable=YES //允许匿名登录
local_enable=YES //允许本地用户登录
write_enable=YES //开放本地用户的写权限
dirmessage_enable=YES //当切换目录时,显示该目录的信息。
connect_from_port_20=YES //使用FTP数据端口20的连接请求
userlist_enable=YES //与前面介绍的vsftpd.user_list配置文件有关,后面介绍
listen=YES //是否允许vsFTPd运行在独立启动模式;如果值为NO,则需要使用其它软件启动vsFTPd。
tcp_wrappers=YES
- userlist_enable
用法:YES/NO
若是启动此功能,则会读取/etc/vsftpd.user_list 当中的使用者名称。只有出现在文件中的用户名才能登录ftp。
此项功能可以在询问密码前就出现失败讯息,而不需要检验密码的程序。默认值为关闭。
- userlist_deny
用法:YES/NO
这个选项只有在userlist_enable 启动时才会被检验。
如果将这个选项设为YES,则在 /etc/vsftpd.user_list 中的使用者将无法登入﹔若设为NO,则只有在/etc/vsftpd.user_list 中的使用者才能登入。
此项功能可以在询问密码前就出现错误讯息,而不需要检验密码的程序。
# 限制指定的本地用户不能访问,而其它本地用户可以访问。
userlist_enable= YES
userlist_deny= YES
userlist_file= /etc/vsftpd.user_list
# 限制指定的本地用户可以访问,而其它本地用户不可以访问。
userlist_enable= YES
userlist_deny= NO
userlist_file= /etc/vsftpd.user_list
-
/etc/vsftpd/ftpusers : vsFTPd的访问控制
在/etc/vsftpd.ftpusers配置文件中保存了一个用户列表,如果用户名在这个列表中,它就不能通过网络进行FTP登录。 -
/etc/vsftpd/user_list: 允许/禁止用户列表
vsFTPd的启动与关闭
-
service vsftpd [start|stop|restart]
-
/etc/rc.d/init.d/vsftpd [start|stop|restart]
-
/etc/init.d/vsftpd [start|stop|restart]
ftp 使用
- ftp xx.xx.xx.xx | open xx.xx.xx.xx
- get | mget
- put | mput
- binary | acsii 设置文件传输方式
- cd 在远程主机切换目录
- lcd 在本地主机切换目录
- ls 在远程主机上执行ls
- mkdir 在远程主机上创建目录
- close 关闭
- quit 退出
xinetd模式启动vsFtpd
-
service vsftpd stop
-
修改/etc/vsftpd/vsftpd.conf 将 listen_ipv6=YES 改为 listen_ipv6 =NO
-
新增一个文件:/etc/xinetd.d/vsftpd 内容如下:
service ftp #注意这里的名字是ftp不是vsftpd{
socket_type = stream #使用TCP的Socket类型
wait = no #多线程
user = root
server = /usr/sbin/vsftpd
server_args = /etc/vsftpd/vsftpd.conf
disable = no
}
stand alone / xinetd ?
运行单个xinetd就可以同时监听所有服务端口,这样就降低了系统开销,保护系统资源。
但是对于访问量大、经常出现并发访问时,xinetd想要频繁启动对应的网络服务进程,反而会导致系统性能下降。
因此在选择基于哪种工作模式的时候,需要根据服务的使用情况具体情况具体分析。