Linux下的网络控制和网络通信

摘要:通过对Linux中的网络、网络控制和网络通信等来了解系统对于网络方面的细节,加强对Linux下网络的认识,加深对网络编程的理解。

网络基本命令

ifconfig

查看当前网络的基本信息

image-20200408110625465

lo:loop网络回路

ens< number >:网卡名

临时修改方法:

ifconfig <设备> < IP >

ifconfig <设备> netmask <掩码>

ifconfig <设备> broadcast <广播地址>

虚拟网卡:

ens33:<虚拟卡编号>

例如:ens33:0,ens33:1

刷新配置:

ifconfig <设备> < ip> up/down

例如:ifconfig ens33 192.168.122.11 up/down

ping

连通性检测

traceroute

网络路径追踪

netstat

网络状态

service NetworkManager start|stop|…

启动/关闭服务

网络服务于守护进程

网络通信

即为进程间通信,不同的机器、不同的进程交换信息

端口

整数(16bit):0~65535

分类:

公开(0~1023):紧密绑定

注册(1024~49151):松散绑定,系统自动绑定

私有(49152~65535):系统不分配,用户自定义

网络服务程序(Daemon)

监听:端口

工作原理:

S:listen port ,有请求时发生–>fork() 子进程响应请求,父进程继续监听

C:发送请求等待应答

工作模式:

独立:一个服务对应一个端口,高负载用独立

网络:服务监听不同端口,根据端口不同,调用不同进程

DHCP服务

  • 目标: 自动分配IP地址,减少出错,减少浪费(局域网)

  • 工作原理:

    问:

    DHCP服务器:如何接受?向谁应答?

    Client客户端:需要分配地址,客户端没有IP地址则需要发送什么?发给谁?

    答:

    Client发送请求:

    源地址:0.0.0.0

    目标地址:255.255.255.255(向一切地址发广播)只要DHCP在同一个网段内,则必定会收到应答。

    MAC:地址+IP包

    DHCP应答:

    • DHCP Offer包:IP地址相关信息。

    • 源地址:DHCP服务器IP

    • 目标地址:255.255.255.255

    • MAC: 源地址:DHCP的MAC 目标地址:client的MAC

    问:假如网络中多个DHCP服务器,就会有多个应答,client如何处理?

    答:按照先来先接收的原则。

    Client:确认IP租用信息,DHCPQuest包:说明已经接收到的IP地址(包括client的IP地址+DHCP服务器IP地址)

    DHCP服务器确认信息:

    DHCP服务刷新:

    IP地址的租期(4096),当到达租期的一半时,发送刷新的请求。

    服务器应答:刷新出租时间

    服务器没有应答:等待,到87.5%时间时再次请求

DHCP配置过程

1.安装软件

包括DHCP服务器、DHCP客户端

在管理员模式下,输入yum install dhcp*即可查看安装情况。

image-20200415102421411

可以发现需要安装的软件,直接进行安装。

2.虚拟机设置

关闭计算机–>编辑–> 虚拟网络设置

image-20200415103014664

选择host-only模式(虚拟机和主机构成直连网络,虚拟机和主机可通信,但是虚拟机不能于Internet通信),即对VMnet1进行操作。

image-20200415103259136

需要端基更改设置获得管理员权限,再修改DHCP设置。设置成下图

image-20200415103438192

再将虚拟机的网络设置改为仅主机模式,接着开启虚拟机。

image-20200415103547015

3.DHCP服务配置

可以发现网络没有被分配IP地址,所以需要给网卡设置IP地址,

  1. 配置IP地址:ifconfig ens33 192.168.66.1 up

    这里的网段是当初上面有个子网IP的网段。

  2. 修改配置文件/etc/dhcp/dhcpd.conf

    首先,先进行备份cp dhcpd.conf dhcpd.conf.bak

    接着打开 dhcpd.conf

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    #
    # DHCP Server Configuration file.
    # see /usr/share/doc/dhcp-server/dhcpd.conf.example
    # see dhcpd.conf(5) man page

    #定义domain
    option domain-name "mytest.org";
    option domain-name-servers dns.mytest.org;
    #分配最大及其默认续租时间
    default-lease-time 600;
    max-lease-time 7200;
    #分配地址池
    subnet 192.168.66.0 netmask 255.255.255.128{
    range 192.168.66.10 192.168.66.125;
    option routers 192.168.66.1;
    }
    #分配固定的IP
    host hname{
    hardware ethernet 00:50:56:C0:00:01;
    FIXED-ADDRESS 192.168.66.100;
    }
  1. 启动服务

    service dhcpd start/status/stop/restart

  2. 查看日志

    /var/log/messages 或者 journalctl -xe

  3. 测试

    DHCP客户端选择自动获取IP与DNS。

    image-20200415112146469

DNS服务配置——IP与域名转换

  1. 工作原理:将域名和IP地址进行转换翻译。

  2. 域名管理原则

    分级原则:根域(.)、顶级域(com,uk,cn…)、二级域、三级域…

  3. 服务器类型

    主域名服务器(权威服务器)

    辅助域名服务器(备份、从主服务器复制信息、只读)

    缓存域名服务器(服务器软件,但是没有数据库,提供高速缓存、非权威)

    转发域名服务器(非本地域名的本地查询)

  4. 工作流程

    www.mit.edu –>查看本机缓存( 浏览器/hosts文件) –> DNS –> 转发服务器/根服务器 (递归或者迭代查询)

配置基本的DNS服务器

  1. 安装软件

    yum install bind

    image-20200420144953309

  2. 配置

    服务端:主配置文件、正向配置文件、反向配置文件

    客户端:指定域名选择方式

  3. 主配置文件

    记录dns服务器的基本参数信息

    port:53

    记录正向、反向配置文件的位置、名称

    记录当前域的信息

    记录根域

    修改etc/named.conf

    image-20200420145644338

    以及添加以下自定义内容:

    参数说明:

    hint:根服务器

    master:主服务器

    slaver:从服务器

    image-20200420150612088

并且到 /var/named下创建 infosecurity.org.zone配置正向配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
$TTL    1D
@ IN SOA infosecurity.org. adm.infosecurity.org.(
0;
1D;
1H;
1W;
3H);
IN NS dns
IN A 192.168.17.130
www IN A 192.168.17.130
mail IN A 192.168.17.130
ftp IN A 192.168.17.130
dns IN A 192.168.17.130

最后一个 * 是代表所以都指向一个服务器。

这里是dns:192.168. * * *. * * *可以从ifconfig中查看本机ip

  1. 修改/etc/hosts文件 加入域名服务器信息

    image-20200422101727076

  2. 修改/etc/resolv.conf文件

    image-20200422101749789

  3. 启动服务

    service named start

image-20200422101937723

可以发现可以ping通了!

tips:

如果发现ping不通的情况下将Linux防火墙的服务器使用命令service firewalld stop关闭即可。

反向配置文件

修改/etc/named.conf

image-20200422105034720

并且到 /var/named下创建 17.168.192.zone`配置反向配置文件

1
2
3
4
5
6
7
8
9
10
11
$TTL    1D
@ IN SOA infosecurity.org. adm.infosecurity.org.(
0;
1D;
1H;
1W;
3H);
IN NS dns.infosecurity.org.
130 IN PTR dns.infosecurity.org.
130 IN PTR www.infosecurity.org.
130 IN PTR mail.infosecurity.org.

web服务

  1. 工作原理

    http/https:协议

    www:主机

    infosecurity.org:域名

    port:80(默认)

  2. 安装

    yum install httpd*

    image-20200422111130476

  3. 配置web服务器

    修改配置文件/etc/httpd/conf/httpd.conf:

    ​ listen:80 #修改监听端口

    ​ document root: #制定主页文件目录

    ​ dorectorityindex: #设定首页文件名称、类型

  4. 启动服务

    service httpd start

FTP文件服务器

  1. 工作原理

    对不同的系统,不同的网络,不同的文件格式进行统一操作。

  2. 端口

    20和21

    主动和被动方式:

    主动:

    Client:申请X端口,请求访问server的21端口,server应答,并利用21端口传达控制命令。

    server:利用20端口向客户端的X+1端口发出传送请求,进行数据传送。

    被动:

    server连接成功后,给client发送一个端口用于数据传输。

  3. 安装

    yum install vsftpd

  4. 配置

    基本配置文件:/etc/vsftpd/vsftpd.conf

    资源文件:/var/ftp

    用户类型:匿名、本地、虚拟

    匿名

    anonymous:可以无口令(或口令为anonymous)

    进行备份和过滤:

    image-20200422113039501

    将/etc/vsftpd/vsftpd.conf修改为以下:

    1
    2
    3
    4
    5
    6
    7
    listen_port=21
    anonymous_enable=YES
    write_enable=YES
    anon_upload_enable=YES
    anon_mkdir_write_enable=YES
    anon_other_write_enable=YES
    anon_umask=022
  5. 启动

    service vsftpd start

  6. 测试登入

    安装ftp客户端:yum install ftp

    终端输入ftp,填写IP后输入账号密码(均为ftp)即可连接

    ftp ip :登入

    cd/binasc

    put/get:上传下载

    quit:退出

    image-20200427142311393

  7. 默认路径

    var/ftp/

  8. 其他问题

    默认路径有没有权限,一般情况下用户上传文件不修改var/ftp权限,应将var/ftp/pub/权限修改为777

    image-20200427141900471

    如果还是不能上传 需要关闭SELinux: #setenforce 0,1为打开策略。

本地用户配置

  1. 创建一个新用户,这里定为叫myftp

  2. 修改/etc/passwd下的配置文件为/bin/nologin:

    例如:myftp:x:1002:1002::/home/myftp:/bin/nologin

  3. 修改/etc/vsftpd/vsftpd.conf为:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    listen_port=21
    anonymous_enable=YES
    write_enable=YES
    anon_upload_enable=YES
    anon_mkdir_write_enable=YES
    anon_other_write_enable=YES
    anon_umask=022
    local_enable=YES
    local_umask=022
    pam_service_name=vsftpd
  4. 执行命令

    #ldd /usr/sbin/vsftpd

    #cp /lib64/libpam.so.0 /etc/pam.d

  5. 根据需要修改/etc/shells文件,加入/bin/nologin

  6. 测试登入

    image-20200427144217992

  7. 修改当前用户的家目录

    修改etc/passwd:myftp:x:1002:1002::/var/ftp:/bin/nologin

虚拟用户

  1. 修改用户信息

    /etc/vsftpd下创建username

    image-20200427145908552

  2. 转换信息格式

    image-20200427150136837

  3. 修改配置文件

    /etc/vsftpd.conf

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    listen_port=21
    anonymous_enable=YES
    write_enable=YES
    anon_upload_enable=YES
    anon_mkdir_write_enable=YES
    anon_other_write_enable=YES
    anon_umask=022
    local_enable=YES
    local_umask=022
    guest_enable=YES
    guest_username=myftp
    pam_service_name=vsftpd
  4. 修改加密数据文件

    /etc/pam.d/vsftpd

    1
    2
    auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser
    account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser
  1. 重启服务

    service vsftpd restart

    可以发现正常登入了

    image-20200427155401689

tips:

在Windows中访问ftp的话需要再/etc/vsftpd/vsftpd.conf下添加以下内容

1
2
3
pasv_enable=YES
pasv_min_port=3000
pasv_max_port=6000

并在有需要的情况下修改以下选项:

设置IE浏览器>>Internet选项>>高级>>将“使用被动FTP(用于防火墙和DSL调制解调器的兼容)”选项去掉>>确定即可

20170411162146752

------- 本文结束  感谢您的阅读 -------