Linux系统网络管理NetworkManager

1 启动网络管理服务和开机自启动
在rhel7中网路管理相关命令nmcli,nmtui,nmtui-edit,nm-connection-editor

服务启动 描述
systemctl start NetworkManager 启动服务
systemctl restart NetworkManager 重启服务
systemctl stop NetworkManager 停止服务
systemctl enable NetworkManager 开机自启动服务
systemctl disable NetworkManager 取消开机自启动
[root@qdlinux ~]# systemctl disable NetworkManager
Removed symlink /etc/systemd/system/multi-user.target.wants/NetworkManager.service.
Removed symlink /etc/systemd/system/dbus-org.freedesktop.NetworkManager.service.
Removed symlink /etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service.
[root@qdlinux ~]# systemctl enable NetworkManager
Created symlink from /etc/systemd/system/dbus-org.freedesktop.NetworkManager.service to /usr/lib/systemd/system/NetworkManager.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/NetworkManager.service to /usr/lib/systemd/system/NetworkManager.service.
Created symlink from /etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service to /usr/lib/systemd/system/NetworkManager-dispatcher.service.

[root@qdlinux ~]# systemctl is-enabled NetworkManager
enabled
[root@qdlinux ~]# systemctl is-active NetworkManager
active

2 查看设备状态命令nmcli devicenmcli connection

[root@qdlinux ~]# nmcli device 
DEVICE      TYPE      STATE      CONNECTION 
ens32       ethernet  connected  ens32      
virbr0      bridge    connected  virbr0     
lo          loopback  unmanaged  --         
virbr0-nic  tun       unmanaged  --  

[root@qdlinux ~]# nmcli connection 
NAME    UUID                                  TYPE      DEVICE 
ens32   b6ee9f55-35dd-41b0-865d-d83bc597877d  ethernet  ens32  
virbr0  8e94e1f3-ca47-40b3-9003-15c741bcd332  bridge    virbr0 

3 查看ip地址

[root@qdlinux ~]# ifconfig ens32
ens32: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.56.5  netmask 255.255.255.0  broadcast 192.168.56.255
        inet6 fe80::65fe:5243:aab7:46ac  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:2e:6e:9f  txqueuelen 1000  (Ethernet)
        RX packets 834  bytes 72426 (70.7 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 584  bytes 69140 (67.5 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

[root@qdlinux ~]# ip address show ens32
2: ens32: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:2e:6e:9f brd ff:ff:ff:ff:ff:ff
    inet 192.168.56.5/24 brd 192.168.56.255 scope global noprefixroute ens32
       valid_lft forever preferred_lft forever
    inet6 fe80::65fe:5243:aab7:46ac/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever


[root@qdlinux ~]# ip -s link show ens32
2: ens32: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
    link/ether 00:0c:29:2e:6e:9f brd ff:ff:ff:ff:ff:ff
    RX: bytes  packets  errors  dropped overrun mcast   
    85134      991      0       0       0       0       
    TX: bytes  packets  errors  dropped carrier collsns 
    80226      678      0       0       0       0   

生成新的配置文件

[root@qdlinux ~]# nmcli connection add con-name ens33-dhcp ifname ens32 autoconnect yes type ethernet ipv4.method auto 
Connection 'ens33-dhcp' (ee3fc1d8-8d0e-4749-a624-cbdf6505bfe4) successfully added.

[root@qdlinux ~]# nmcli connection 
NAME        UUID                                  TYPE      DEVICE 
ens32       b6ee9f55-35dd-41b0-865d-d83bc597877d  ethernet  ens32  
virbr0      8e94e1f3-ca47-40b3-9003-15c741bcd332  bridge    virbr0 
ens33-dhcp  ee3fc1d8-8d0e-4749-a624-cbdf6505bfe4  ethernet  --     

查看配置文件

[root@qdlinux ~]# less /etc/sysconfig/network-scripts/ifcfg-ens33-dhcp 
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33-dhcp
UUID=ee3fc1d8-8d0e-4749-a624-cbdf6505bfe4
DEVICE=ens32
ONBOOT=yes
(END)

启动新的配置文件,如果此时是用ssh连接上去的会掉线.

[root@qdlinux ~]# nmcli connection up ens33-dhcp 

Socket error Event: 32 Error: 10053.
Connection closing...Socket close.

Connection closed by foreign host.

Disconnected from remote host(192.168.56.5) at 09:49:30.

在虚拟机中查看ip地址,发现ip地址已经自动获取,并且已经改变.

ca88会员登录入口 1

ca88会员登录入口 2

ca88会员登录入口 3

现在切换原来的配置文件,ssh再次连接又连接上去了.

[root@qdlinux ~]# nmcli connection up ens32

[root@qdlinux ~]# ifconfig ens32
ens32: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.56.5  netmask 255.255.255.0  broadcast 192.168.56.255
        inet6 fe80::65fe:5243:aab7:46ac  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:2e:6e:9f  txqueuelen 1000  (Ethernet)
        RX packets 2508  bytes 205179 (200.3 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1514  bytes 196730 (192.1 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

虚拟机中重新添加一块网卡用于实验,查看一下设备名称和ip地址

[root@qdlinux ~]# nmcli device 
DEVICE      TYPE      STATE      CONNECTION         
ens32       ethernet  connected  ens32              
ens34       ethernet  connected  Wired connection 1 
virbr0      bridge    connected  virbr0             
lo          loopback  unmanaged  --                 
virbr0-nic  tun       unmanaged  --                 
[root@qdlinux ~]# ifconfig
ens32: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.56.5  netmask 255.255.255.0  broadcast 192.168.56.255
        inet6 fe80::65fe:5243:aab7:46ac  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:2e:6e:9f  txqueuelen 1000  (Ethernet)
        RX packets 3153  bytes 258362 (252.3 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1797  bytes 227166 (221.8 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ens34: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.56.103  netmask 255.255.255.0  broadcast 192.168.56.255
        inet6 fe80::3432:a743:270f:eb3d  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:2e:6e:a9  txqueuelen 1000  (Ethernet)
        RX packets 47  bytes 3569 (3.4 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 23  bytes 4673 (4.5 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

删除该设备配置文件,重新配置一个新的配置文件.

[root@qdlinux ~]# nmcli connection delete 
ens32                 help                  path                  virbr0                
ens33-dhcp            id                    uuid                  Wired\ connection\ 1  
[root@qdlinux ~]# nmcli connection delete "Wired connection 1"
Connection 'Wired connection 1' (e9c28a80-5519-359b-919f-4a0d572044e3) successfully deleted.
[root@qdlinux ~]# 

查看一下网络设备状态

[root@qdlinux ~]# nmcli connection 
NAME        UUID                                  TYPE      DEVICE 
ens32       b6ee9f55-35dd-41b0-865d-d83bc597877d  ethernet  ens32  
virbr0      8e94e1f3-ca47-40b3-9003-15c741bcd332  bridge    virbr0 
ens33-dhcp  ee3fc1d8-8d0e-4749-a624-cbdf6505bfe4  ethernet  --     
[root@qdlinux ~]# nmcli device 
DEVICE      TYPE      STATE         CONNECTION 
ens32       ethernet  connected     ens32      
virbr0      bridge    connected     virbr0     
ens34       ethernet  disconnected  --         
lo          loopback  unmanaged     --         
virbr0-nic  tun       unmanaged     --         

添加一个手动配置文件

[root@qdlinux ~]# nmcli connection add con-name ens34-static ifname ens34 type ethernet ipv4.method manual autoconnect yes ipv4.addresses 192.168.56.26/24 ipv4.gateway 192.168.56.2 ipv4.dns 202.102.134.68 +ipv4.dns 202.102.128.68
Connection 'ens34-static' (7050b2ec-2d8b-42a8-be2b-856d92dc66a4) successfully added.

再查看一个设备状态

[root@qdlinux ~]# nmcli device 
DEVICE      TYPE      STATE      CONNECTION   
ens32       ethernet  connected  ens32        
ens34       ethernet  connected  ens34-static 
virbr0      bridge    connected  virbr0       
lo          loopback  unmanaged  --           
virbr0-nic  tun       unmanaged  --           
[root@qdlinux ~]# nmcli connection 
NAME          UUID                                  TYPE      DEVICE 
ens32         b6ee9f55-35dd-41b0-865d-d83bc597877d  ethernet  ens32  
ens34-static  7050b2ec-2d8b-42a8-be2b-856d92dc66a4  ethernet  ens34  
virbr0        8e94e1f3-ca47-40b3-9003-15c741bcd332  bridge    virbr0 
ens33-dhcp    ee3fc1d8-8d0e-4749-a624-cbdf6505bfe4  ethernet  --     

查看一下该配置文件信息

[root@qdlinux ~]# less /etc/sysconfig/network-scripts/ifcfg-ens34-static 
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
IPADDR=192.168.56.26
PREFIX=24
GATEWAY=192.168.56.2
DNS1=202.102.134.68
DNS2=202.102.128.68
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens34-static
UUID=7050b2ec-2d8b-42a8-be2b-856d92dc66a4
DEVICE=ens34
ONBOOT=yes

修改开机自启动

[root@qdlinux ~]# nmcli connection modify ens34-static autoconnect no
[root@qdlinux ~]# tail /etc/sysconfig/network-scripts/ifcfg-ens34-static 
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens34-static
UUID=7050b2ec-2d8b-42a8-be2b-856d92dc66a4
DEVICE=ens34
ONBOOT=no

修改DNS通过+/-添加删除dns

[root@qdlinux ~]# nmcli connection modify ens34-static ipv4.dns 202.102.134.68
[root@qdlinux ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens34-static | grep DNS
DNS1=202.102.134.68

1.安装环境说明

  1. 本机操作系统macOS Sierra 10.12.6
  2. 采用的虚拟机VirtualBox 5.1.28
  3. 虚拟机镜像CentOS 7 64bit

做实验的时候,首先要关闭防火墙和selinux,然后配置好网卡信息。
防火墙临时关闭:iptables –F     
查看防火墙状态:iptables -L
防火墙永久关闭:/etc/init.d/iptables stop
                service iptables stop
selinux临时关闭:setenforce 0
selinux永久关闭:sed –i“7s/enforcing/disabled/g”/etc/selinux/config
一、名词解释:
CDN 内容分发网络
DDOS 拒绝服务攻击
1、地址的分类
  1)网络地址:互联网协议地址(IP地址),IP地址工作在网络层
IP地址的分类:IPV4  IPv6
2)物理地址:物理地址(MAC地址)是每一个设备的固定地址,MAC地址工作在链路层。
 
2、协议分类:
1、网络层协议:IP协议、ICMP协议、ARP协议等
  2、传输层协议:TCP、UDP等
  3、应用层协议:DHCP、DNS、FTP、SSH等
 
3、常见端口:
20  21  ftp服务  文件共享
22      ssh 服务  安全远程网络管理
23      telnet服务 
25      smtp 简单邮件传输协议  发信
110      pop3 邮局协议  收信
80      www  网页服务
3306    mysql 端口
53      DNS 端口
 
二、网关和路由配置
ifconfig eth0 要设置的IP地址  设置IP地址和子网掩码(临时生效)
例1:ifconfig eth0 192.168.115.102/24
例2:ifconfig eth0 192.168.115.102  netmask  255.255.255.0
例3(给网卡设置子网卡):ifconfig eth0:0 192.168.115.102
注意:子网卡IP不能和其他IP重复
 
网卡配置:
永久生效(修改配置文件):/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0 网卡名称
HWADDR=00:0c:29:65:da:3e  网卡的Mac地址(可删)
TYPE=Ethernet  网络类型(可删)
UUID=836c05a4-e78a-424e-8b3b-05cb6c126438  网卡UUID(可删)
ONBOOT=yes  开机是否自启动
NM_CONTROLLED=yes 可忽略
BOOTPROTO=static  网卡获取IP地址的方式
IPADDR=192.168.115.105  IP地址
NETMASK=255.255.255.0  子网掩码
DNS2=8.8.8.8  DNS2
GATEWAY=192.168.115.2  网关
DNS1=114.114.114.114  DNS1
IPV6INIT=no
USERCTL=no
配置文件修改完成后需要重启网络服务:
service network restart  重启所有网络服务
ifup 网卡名 启动指定某个网卡
ifdown 网卡名 关闭指定某个网卡
 
2、主机名配置
临时修改主机名:hostname 主机名
永久修改主机名:/etc/sysconfig/network
HOSTNAME=主机名(修改这里)
ca88会员登录入口 4
 
注意:区别 /etc/rc.d/rc.sysint 和 /etc/sysconfig/network
3、网关配置
 route -n 查看系统中路由表信息
临时修改:
添加默认网关:route  add  default  gw  网关ip地址
删除默认网关:route  del  default  gw  网关ip地址
指定添加路由:route  add  -net  连接的目标网段  gw  网关的IP地址
 
ca88会员登录入口 5
 
 
指定删除路由:route  del  -net  网段
永久生效:
      修改网关配置文件:/etc/sysconfig/network-scripts/ifcfg-eth0
路由配置文件:/etc/rc.local
/etc/resolv.conf 保存本机需要使用的DNS服务器的IP地址
 
开启路由转发配置文件:/etc/sysctl.conf 进入其中将net.ipv4.ip_forward =
0修改为1之后用sysctl  -p刷新一下配置文件即可
ca88会员登录入口 6
 
总结:
网关:没有具体目标
路由:有具体目标,以及到达线路
ca88会员登录入口 7
 
 
上图a、c、d为不同网段的电脑,现在需要通过b电脑的配置建立连接,那么:
a和b连接的网卡在同一个网段。
b和c 连接的网卡在同一个网段
b和d 连接的网卡在同一个网段
 
实验步骤:
(1):创建4个虚拟机,让它们分别在不同网段,都设置成桥接模式
(2):指定其中一个虚拟机为路由器,并为这个虚拟机创建三个网卡
(3):把配置文件/etc/sysconfig/network-scripts/ifcfg-eth0复制三份,分别为ifcfg-eth1 
ifcfg-eth2  ifcfg-eth3
(4):分别进入ifcfg-eth1  ifcfg-eth2 
ifcfg-eth3三个配置文件里面修改网卡名、删除Mac地址UUID、把三个网卡的IP地址修改成分别对应其他三台虚拟机的网段
(5):把其他三台虚拟机的网关分别修改成ifcfg-eth1  ifcfg-eth2 
ifcfg-eth3的IP地址
(6):然后所有的虚拟机都用service  network 
restart重启网卡,接着进入开启路由转发配置文件:/etc/sysctl.conf
将里面的net.ipv4.ip_forward = 0修改为1之后用sysctl 
-p刷新一下配置文件
(7):使用虚拟机ping  ip地址 互相实验看能不能通
 
4、DNS配置
域名解析测试命令 nslookup
测试DNS域名解析
格式:nslookup  目标主机地址  DNS服务器地址
 
DNS服务器设置
/etc/sysconfig/network-scripts/ifcfg-eth0
/etc/resolv.conf 保存本机需要使用的DNS服务器的IP地址
nameserver  DNS地址
主机映射文件:/etc/hosts
用于保存主机名和ip地址的映射记录
 
主机映射文件和DNS服务器的比较:
默认情况下,系统首先从hosts文件查找解析记录
hosts文件只对当前的主机有效
hosts文件可减少DNS查询过程,可加快访问速度
 
 
 
三、网络测试命令
(1)netstat  -tlun 查看TCP和UDP监听的端口
        -antp查看所有TCP的连接并显示PID号
      -a:显示所有活动连接
-n:以数字形式显示
-p:显示进程信息
-t:查看TCP协议相关信息
-u:查看UDP协议相关信息
 
(2)traceroute 
测试从当前主机到目的主机之间经过的网络节点,用于追踪数据包在网络上的传输时的全部路径,默认发送数据包大小为40字节,默认使用UDP协议进行传输,返回值为ICMP
-l  使用ICMP协议进行测试,Linux中默认UDP
-p 3 指定测试时发送的数据包个数(即测试次数)
-n  以IP的方式进行连接测试,避开DNS的解析,减少延迟
特殊情况:
       
当返回值中间出现******时,一般情况是中间节点防火墙封掉了ICMP的返回值。
       
当返回值从中间到结束都是*******时,一般情况为目标服务器拒绝接收UDP数据包或禁止了ICMP的返回包
(3)ping 测试网络连通性
-i 指定间隔时间
-c 指定ping的次数
-s 指定数据包的大小
(4)arp 地址解析协议,将IP解析成Mac
-a 查看所有
-d  ip地址  删除某条ARP记录
-s  ip地址 MAC地址  绑定ip地址
(5)nmap  网络探测命令
    -sP  探测某网段内有哪些主机是存活的
    -sT  探测某主机上开启了哪些TCP端口
    -sS  同上,但是是安全扫描,被扫描主机将记录很少的日志
    -O  扫描对方操作系统类型
 
四、远程管理:
1、  Windows用VNC连接Linux
yum  -y  install  tigervnc  tigervnc-server
先安装着两个软件
vncpasswd  设置密码
vncserver  启动服务
2、Linux用rdesktop连接Windows
  Linux必须安装桌面
  yum  -y  install  rdesktop
  rdesktop  -f  -a  16  -u  windows用户名  -p  windows密码  Windows
IP地址
      -f 是显示全屏  -a  Linux色位16或32 
      -u 用户名      -p  登录密码
3、Linux用SSH连接Linux
SSH协议
为客户机提供安全的Shell环境,用于远程管理
默认端口:TCP 22
OpenSSH
服务名称:sshd
服务端主程序:/usr/sbin/sshd
客户端主程序:/usr/bin/ssh
服务端配置文件:/etc/ssh/sshd_config
客户端配置文件:/etc/ssh/ssh_config
ssh连接需要用到两个配置文件
(1)/etc/ssh/ssh_config 客户端  (2)/etc/ssh/sshd _config 服务端
 
ca88会员登录入口 8
 
 SSH  远程登录命令
  ssh  IP地址 登录Linux系统
ca88会员登录入口 9
 
 ssh  用户名@IP地址  登录Linux系统
ca88会员登录入口 10
 
 指定端口:-p(小)
 
4、秘钥对验证
加密认证:RSA  DSA两个都可使用
(1)在客户机上执行ssh-keygen  -t  rsa 生成非对称加密秘钥对
      Enter file in which to save the key
      (/home/test/.ssh/id_rsa)询问是否需要密码验证,不需要就直接回车
ca88会员登录入口 11
 
(2)在客户机家目录的.ssh/目录下,将id_rsa.pub公钥文件上传给服务机
 
ca88会员登录入口 12
 
ca88会员登录入口 13
 
(3)上传完成后,要在服务机端的家目录下创建一个 .ssh/
的目录,把id_rsa.pub改名为authorized_keys并剪切到家目录下的.ssh/目录里面。
(4)编辑服务机端的/etc/ssh/sshd_config文件,取消注释
 
ca88会员登录入口 14
 
 
(5)、远程传输工具
  (1)  scp  进行文件的上传和下载
    上传格式:scp  本机文件  用户名@IP地址:目录
    下载格式:scp  用户名@IP地址:文件名  本地保存位置
    指定端口:-P(大)
 
    (2)sftp  安全的ftp传输协议
      登录方法:sftp  用户名@IP地址
      指定端口:-oPort=端口
     
用sftp登录到服务端以后,操作服务端的命令和操作本机相同,如果想在登录���务端的同时操作本机,需要在命令前面加上l,例
ca88会员登录入口 15
 
如果想让Windows也可以免密码连接到Linux,需要用x-shell工具-新建用户秘钥生成向导生成一个秘钥,然后将秘钥复制到Linux服务端的authorized_keys
文件里面即可
 
ca88会员登录入口 16
 
直接下一步、下一步即可生成秘钥,然后根据步骤操作
ca88会员登录入口 17
 
选择属性
ca88会员登录入口 18
 
复制里面的秘钥到Linux的authorized_keys 文件里面即可
 
ca88会员登录入口 19
 
ca88会员登录入口 20
 
(6)仅允许秘钥对登录,禁止密码登录
*确保启用ssh公钥认证功能,查看/etc/ssh/sshd_config文件,确保以下两条yes

ca88会员登录入口 21
 
*禁止密码安全验证,编辑/etc/ssh/sshd_config文件,确保以下文件出现在文件中:
ca88会员登录入口 22
 
ca88会员登录入口 23
 
编辑这个文件完成之后,需要重启sshd服务:service sshd
restart即可禁止密码登录,只能用秘钥对登录。
想让其他用户通过秘钥登录,可以直接把可以登录的私钥文件传给某个用户即可。
注意:一定要保护好私钥的安全性。
上面是秘钥的详细生成过程,下面介绍秘钥对的快速生成:
(1)在客户机上输入命令:ssh-keygen  -t  rsa
(2)上传公钥到服务端:ssh-copy-id  服务端用户名@IP地址
这样即可快速生成并上传,而且不用改名和提前创建.ssh目录
 
TCP Wrappers(简易防火墙)概述:
如果某个命令调用库文件libwarp.so ,那么这个命令就可以被TCP
Wrappers管理。
which 查询某服务命令所在位置
ldd  查询某命令调用的库文件
ca88会员登录入口 24
 
通过tcpd主程序对其他服务程序进行包装
访问控制策略的配置文件
白名单(允许访问):/etc/hosts.allow
黑名单(拒绝访问):/etc/hosts.deny
 
ca88会员登录入口 25
 
白名单比黑名单优先级高
设置访问控制策略
策略格式:服务列表:客户机地址列表
服务列表
多个服务以逗号分隔,ALL 表示所有服务
客户机地址列表
多个地址以逗号分隔,ALL表示所有地址
ca88会员登录入口 26
 
ca88会员登录入口 27
 
允许使用通配符 ? 和 *
网段地址,如 192.168.4.  或者 192.168.4.0/255.255.255.0
策略的应用顺序:
先检查hosts.allow,匹配即停止(即允许)
否则再检查hosts.deny,匹配即停止(即拒绝)
若两个文件中均无匹配策略,则默认允许访问ca88会员登录入口 28

手动方式修改配置文件

通过手动方式修改配置文件,首先复制一份原始配置命名为ifcfg-ens35-static,修改配置名称、协议、删除UUID、IP地址

[root@qdlinux network-scripts]# vim ifcfg-ens35-static 
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
TYPE=Ethernet
PROXY_METHOD=none
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static //修改为static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens35-static//修改为ens35-static
DEVICE=ens35//修改为ens35
ONBOOT=yes
IPADDR=192.168.56.26
PREFIX=24
GATEWAY=192.168.56.2
DNS1=202.102.134.68
DNS2=114.114.114.114

重新加载一下配置文件启动配置

[root@qdlinux network-scripts]# nmcli connection reload 
[root@qdlinux network-scripts]# nmcli device 
DEVICE      TYPE      STATE      CONNECTION   
ens32       ethernet  connected  ens32        
ens34       ethernet  connected  ens34-static 
ens35       ethernet  connected  ens35-static 
virbr0      bridge    connected  virbr0       
lo          loopback  unmanaged  --           
virbr0-nic  tun       unmanaged  --           
[root@qdlinux network-scripts]# nmcli connection 
NAME          UUID                                  TYPE      DEVICE 
ens32         b6ee9f55-35dd-41b0-865d-d83bc597877d  ethernet  ens32  
ens34-static  7050b2ec-2d8b-42a8-be2b-856d92dc66a4  ethernet  ens34  
ens35-static  c3f27806-e8cf-8d29-2fba-c732def2dc76  ethernet  ens35  
virbr0        8e94e1f3-ca47-40b3-9003-15c741bcd332  bridge    virbr0 
ens33-dhcp    ee3fc1d8-8d0e-4749-a624-cbdf6505bfe4  ethernet  --     

[root@qdlinux network-scripts]# nmcli connection down ens35-static ; nmcli connection up ens35-static

修改centos默认ens32为eth0方法

[root@qdlinux network-scripts]# vim /etc/sysconfig/grub 
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="rhgb net.ifnames=0 biosdevname=0 quiet"
GRUB_DISABLE_RECOVERY="true"

//重新加载一下
[root@qdlinux network-scripts]# grub2-mkconfig -o /boot/grub2/grub.cfg 
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.10.0-862.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-862.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-52d8eda1b73640adbcf5f8c63832171a
Found initrd image: /boot/initramfs-0-rescue-52d8eda1b73640adbcf5f8c63832171a.img
done
[root@qdlinux network-scripts]# 

重新启动计算机,发现已经修改成功

[root@qdlinux ~]# nmcli connection 
NAME         UUID                                  TYPE      DEVICE 
eth0         b6ee9f55-35dd-41b0-865d-d83bc597877d  ethernet  eth0   
eth1-static  7050b2ec-2d8b-42a8-be2b-856d92dc66a4  ethernet  eth1   
eth2-static  8f105ed6-1361-8e14-51fd-dedb8ef3510a  ethernet  eth2   
virbr0       9a190443-83a0-4623-a6b4-a62fdda2d167  bridge    virbr0 
[root@qdlinux ~]# nmcli device 
DEVICE      TYPE      STATE      CONNECTION  
eth0        ethernet  connected  eth0        
eth1        ethernet  connected  eth1-static 
eth2        ethernet  connected  eth2-static 
virbr0      bridge    connected  virbr0      
lo          loopback  unmanaged  --          
virbr0-nic  tun       unmanaged  --   

2.为什么要编译

因为我们从官方下载的Hadoop安装压缩包(hadoop-2.7.4.tar.gz)是32位系统下的,如果我们将它部署在64位的系统上运行就会报错,所以我们最好在自己的64位系统上自己重新编译Hadoop源码(hadoop-2.7.4-src.tar.gz)(也可以从网上下载他人编译好的Hadoop64位安装包)。

3.编译前的准备

3.1删除预安装的openjdk(如果有)

3.1.1查看是否安装了openjdk

[root@localhost ~]# java -version
openjdk version "1.8.0_65"
OpenJDK Runtime Environment (build 1.8.0_65-b17)
OpenJDK 64-Bit Server VM (build 25.65-b01, mixed mode)

3.1.2查看openjdk源

[root@localhost ~]# rpm -qa | grep java
java-1.7.0-openjdk-1.7.0.91-2.6.2.3.el7.x86_64
tzdata-java-2015g-1.el7.noarch
python-javapackages-3.4.1-11.el7.noarch
javapackages-tools-3.4.1-11.el7.noarch
java-1.8.0-openjdk-headless-1.8.0.65-3.b17.el7.x86_64
java-1.8.0-openjdk-1.8.0.65-3.b17.el7.x86_64
java-1.7.0-openjdk-headless-1.7.0.91-2.6.2.3.el7.x86_64

3.1.3依次删除OPENJDK

[root@localhost ~]# rpm -e --nodeps java-1.7.0-openjdk-1.7.0.91-2.6.2.3.el7.x86_64
[root@localhost ~]# rpm -e --nodeps tzdata-java-2015g-1.el7.noarch
[root@localhost ~]# rpm -e --nodeps java-1.8.0-openjdk-headless-1.8.0.65-3.b17.el7.x86_64
[root@localhost ~]# rpm -e --nodeps java-1.8.0-openjdk-1.8.0.65-3.b17.el7.x86_64
[root@localhost ~]# rpm -e --nodeps java-1.7.0-openjdk-headless-1.7.0.91-2.6.2.3.el7.x86_64

3.2关闭防火墙

3.2.1查看防火墙的状态

[root@localhost ~]# systemctl status firewalld.service
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2017-10-19 14:45:46 CST; 22min ago
 Main PID: 607 (firewalld)
   CGroup: /system.slice/firewalld.service
           └─607 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid

Oct 19 14:45:44 localhost.localdomain systemd[1]: Starting firewalld - dynami...
Oct 19 14:45:46 localhost.localdomain systemd[1]: Started firewalld - dynamic...
Hint: Some lines were ellipsized, use -l to show in full.

3.2.2关闭防火墙

[root@localhost ~]# systemctl stop firewalld.service

3.2.2禁止防火墙开机自启

[root@localhost ~]# systemctl disable firewalld.service 
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
Removed symlink /etc/systemd/system/basic.target.wants/firewalld.service.

3.3编译环境搭建

3.3.1上传所需要的软件安装压缩包

示例:Mac在终端使用scp命令上传本地hadoop目录下的所有软件包到虚拟机的/opt/目录下

3.3.2解压所有的软件到/opt目录下

使用命令tar -zxvf 软件包位置 -C 解压到的路径,例如:

[root@localhost opt]# tar -zxvf /opt/apache-ant-1.9.4-bin.tar.gz -C /opt/

3.3.3安装java、ant和findbugs

1.配置环境变量,修改配置文件[root@localhost opt]# vi /etc/profile,在末尾添加

export JAVA_HOME=/opt/jdk1.7.0_80      
export ANT_HOME=/opt/apache-ant-1.9.4    
export FINDBUGS_HOME=/opt/findbugs-1.3.9
export PATH=$PATH:$FINDBUGS_HOME/bin:$ANT_HOME/bin:$JAVA_HOME/bin

2.使配置文件生效[root@localhost opt]# source /etc/profile

3.验证是否安装成功

[root@localhost opt]# java -version
java version "1.7.0_80"
Java(TM) SE Runtime Environment (build 1.7.0_80-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.80-b11, mixed mode)
[root@localhost opt]# ant -version
Apache Ant(TM) version 1.9.4 compiled on April 29 2014
[root@localhost opt]# findbugs -version
1.3.9

3.3.4安装protobuf

1.安装一些其他需要依赖的软件(虚拟机需要联网)

[root@localhost ~]# yum -y install maven svn ncurses-devel gcc* lzo-devel zlib-devel autoconf automake libtool cmake openssl-devel

2.安装protobuf,最后一条命令输入后需要耐心等待

[root@localhost ~]# cd /opt/protobuf-2.5.0           
[root@localhost protobuf-2.5.0]# ./configure
[root@localhost protobuf-2.5.0]#make && make install

3.验证是否安装成功

[root@localhost protobuf-2.5.0]# protoc --version
libprotoc 2.5.0

4.编译hadoop源码

1.进入hadoop源码的根目录,执行编译命令(编译过程需联网)

[root@localhost ~]# cd /opt/hadoop-2.7.4-src
[root@localhost hadoop-2.7.4-src]# mvn clean package -Pdist -DskipTests -Dtar

2.编译过程时间很长,需耐心等待

3.编译成功如下图所示

5.安装hadoop

ca88会员登录入口,1.复制编译生成的Hadoop文件至/opt/目录下

[root@localhost ~]# cp -r /opt/hadoop-2.7.4-src/hadoop-dist/target/hadoop-2.7.4 /opt/hadoop-2.7.4

编译生成目录截图

2.配置环境变量

[root@localhost opt]# vi /etc/profile
在末尾添加
 export HADOOP_HOME=/opt/hadoop-2.7.4
 export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
[root@localhost opt]# source /etc/profile

3.修改主机名为hadoop,会在后面修改hadoop的配置文件中用到

[root@localhost ~]# hostnamectl set-hostname hadoop
[root@localhost ~]# hostnamectl status
   Static hostname: hadoop
         Icon name: computer-vm
           Chassis: vm
        Machine ID: ca98320ca97f4fbebdb7d5a4bd32c052
           Boot ID: 6953000caef747c6a65be85f40921f0e
    Virtualization: kvm
  Operating System: CentOS Linux 7 (Core)
       CPE OS Name: cpe:/o:centos:centos:7
            Kernel: Linux 3.10.0-327.el7.x86_64
      Architecture: x86-64

4.查看当前IP地址

[root@localhost ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 08:00:27:6e:65:f5 brd ff:ff:ff:ff:ff:ff
    inet 192.168.43.216/24 brd 192.168.43.255 scope global dynamic enp0s3
       valid_lft 3524sec preferred_lft 3524sec
    inet6 fe80::a00:27ff:fe6e:65f5/64 scope link 
       valid_lft forever preferred_lft forever

5.设置hosts本地解析,添加主机名和当前ip进行映射关系

[root@localhost ~]# vi /etc/hosts
在末尾添加
#当前IP地址 主机名
192.168.43.216 hadoop

6.配置hadoop,伪分布式需要修改5个配置文件

(1)进入配置文件目录
[root@localhost ~]# cd /opt/hadoop-2.7.4/etc/hadoop

(2)修改第一个配置文件:hadoop-env.sh 
[root@localhost hadoop]# vi hadoop-env.sh
找到‘export JAVA_HOME=’,修改为:
export JAVA_HOME=/opt/jdk1.7.0_80

(3)修改第二个配置文件:core-site.xml      
[root@localhost hadoop]# vi core-site.xml
<configuration>     
    <!-- 指定HADOOP所使用的文件系统schema(URI),HDFS的老大(NameNode)的地址 -->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://hadoop:9000</value>
    </property>

    <!-- 指定hadoop运行时产生文件的存储目录 -->   
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/opt/hadoop-2.7.4/tmp</value>
    </property>
</configuration>

(4)修改第三个配置文件:hdfs-site.xml
[root@localhost hadoop]# vi hdfs-site.xml
<configuration> 
        <!-- 指定HDFS副本的数量 -->
        <property>
            <name>dfs.replication</name>
            <value>1</value>
        </property> 
</configuration>   

(5)修改第四个配置文件:mapred-site.xml 
[root@localhost hadoop]# mv mapred-site.xml.template mapred-site.xml
[root@localhost hadoop]# vi mapred-site.xml
<configuration> 
        <!-- 指定mr运行在yarn上 -->
        <property>
            <name>mapreduce.framework.name</name>
            <value>yarn</value>
        </property>     
</configuration>

(6)修改第五个配置文件:yarn-site.xml
[root@localhost hadoop]# vi yarn-site.xml
<configuration>
        <!-- 指定YARN的老大(ResourceManager)的地址 -->
        <property>
            <name>yarn.resourcemanager.hostname</name>
            <value>hadoop</value>
        </property>
        <!-- reducer获取数据的方式 -->
        <property>
            <name>yarn.nodemanager.aux-services</name>
            <value>mapreduce_shuffle</value>
        </property>
<configuration>

6.运行hadoop

1.首次运行需要格式化namenode(是对namenode进行初始化

[root@localhost ~]# hdfs namenode -format (或 hadoop namenode -format)

2.启动hadoop

先启动HDFS
[root@localhost ~]# start-dfs.sh

再启动YARN
[root@localhost ~]# start-yarn.sh

3.验证是否启动成功

[root@localhost ~]# jps
12880 SecondaryNameNode
13025 ResourceManager
12725 DataNode
13305 NodeManager
13353 Jps
12607 NameNode

4.使用浏览器查看HDFS管理界面和MR管理界面

(HDFS管理界面)

(MR管理界面)

7.总结

7.1创建虚拟机的一些注意事项

  1. 创建的虚拟机的内存大小和虚拟硬盘大小不要设置的太小,否则会引起一些不必要的麻烦。比如,如果虚拟机内存太小,则在后面编译Hadoop的mavn项目的时候,就有可能产生内存溢出而编译失败的情况。(我创建的时候分配了2G的内存和20G的虚拟硬盘)
  2. 虚拟机网络设置,由于安装编译的过程需要联网,所以我是用了桥接的方式,并且没有设置静态IP,所以搭建成功后每次运行hadoop前,都需要先查看当前的IP地址,然后修改主机名和IP地址的映射关系,才能正常运行。

7.2编译其他版本的hadoop

大致的编译过程基本上是一致的,只不过用到的相关依赖软件的版本号,需要从hadoop源码包的根目录中的BUILDING.txt文件中查看。下图是部分内容截图:

7.3配置ssh免登陆(可选)

按上述方式搭建好hadoop后,每次运行除了要修改修改主机名和IP地址的映射关系外(通过设置静态IP解决),在每次执行start-dfs.sh和start-yarn.sh脚本的时候,都要输入Linux的登入密码。我们可以通过配置ssh免登陆的方式,来避免每次都要输入密码。
配置方式:

1.生成ssh公钥和私钥,执行下面的命令并连续按下回车三次
[root@localhost ~]# ssh-keygen -t rsa
2.将公钥拷贝到要免密登陆的目标机器上(localhost 本机)
[root@localhost ~]# ssh-copy-id localhost

7.4设置静态ip(可选)

  1. 通过ip a命令查看网卡名称,默认情况下会有两个一个lo回环网卡,而另一个就是我们所需要修改的网卡
  2. 修改网卡的配置文件方式

[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-网卡名
修改或添加下面的内容
BOOTPROTO="static"
ONBOOT="yes"
IPADDR="设置一个静态ip"
NETMASK="255.255.255.0"

7.5推荐使用远程连接的方式来操作

  1. Windows推荐使用secureCRT,进行操作和上传文件
  2. MacOS推荐使用终端,使用ssh命令进行连接执行命令,使用scp命令上传和下载文件,eg:

远程连接linux虚拟机
$ ssh root@192.168.43.216
上传本地文件到linux虚拟机
$ scp /Users/michealyan/hadoop/* root@172.17.129.78:/opt/

7.6其他说明

1.所用的到相关软件下载地址:飞机

2.参考链接:

CentOS7-64bit 编译 Hadoop-2.5.0,并分布式安装
https://my.oschina.net/u/1428349/blog/31364
Hadoop编译安装2.7.3(CentOS7)
https://www.2cto.com/net/201612/567546.html

3.仅供参考,欢迎指正

Author

发表评论

电子邮件地址不会被公开。 必填项已用*标注