linux虚拟机网络管理
Linux网络学习一、网络基础1、端口在网络的应用层需要将数据分发给不同的端口,不管是TCP还是UDP协议的端口号长度都是16位,所以各有2^16=65536个端口,常用TCP端口号如下:用途端口号FTP(文件传输协议)20、21SSH(安全shell协议)......
Linux网络学习
一、网络基础
1、 端口
在网络的应用层需要将数据分发给不同的端口,不管是TCP还是UDP协议的端口号长度都是16位,所以各有2^16=65536个端口,常用TCP端口号如下:
用途 | 端口号 |
FTP(文件传输协议) | 20、21 |
SSH(安全shell协议) | 22 |
telnet(远程登陆协议不安全,弃用) | 23 |
DNS(域名服务器) | 53 |
HTTP(超文本传输协议) | 80 |
SMTP(简单邮件传输协议) | 25 |
POP3(第三代邮局协议) | 110 |
查看网络端口使用情况cmd:netstat -a
2、 DNS
域名解析系统(Domain Name System),把人们易于记忆的网络域名解析为计算机使用的IP地址。在DNS之前,是通过静态域名解析,例如windows中的hosts文件内静态对应了ip地址与对应的域名,其优先级高于DNS。但是大容量时解析困难,更新维护困难。域名结构有:根域名(“.”)、顶级域名(组织域“.com”或国家域”.cn”)、二级域名(自己命名)、主机域(“www”),后三个域名相加构成全球唯一域名。客户机域名进行逐级递归查询。
3、 网关
在局域网内进行两台主机数据交换依靠交换机MAC地址识别,在不同网段之间通信则需要网关进行数据传输,网关还负责公网IP与内网IP之间的转换
二、Linux网络配置
1、IP配置
用ifconfig查看连接状态,有两项,
- lo(loopback):本地回环网卡,地址127.0.0.1。
- eth0,第一块网卡,可以用ifconfig临时配置eth0的ip与子网掩码。
可以通过系统的setup工具命令来设置ip、子网、DNS等内容,设置后需要重启:service network restart。
也可以通过文件对网络IP进行配置:vi /etc/sysconfig/network-scripts/ifcfg-eth0。
DEVICE=eth0
#关联的设备名称
BOOTPROTO={static|dhcp|none|bootp}
#表示引导协议static|none表示静态;dhcp表示动态
IPADDR=192.168.10.10
#设置IP地址
NETMASK=255.255.255.0
#设置子网掩码
GATEWAY=192.168.10.1
#设置网关
ONBOOT=yes|no
#开机时是否自动激活网络接口
HWADDR=00:1E:0B:8F:B0:D0
#硬件地址要与硬件中的地址保持一致可省
DNS1=202.106.0.20
#指定DNS地址
USERCTL=yes|no
#表示是否允许普通用户启用或禁用此接口
PEERDNS=yes|no
#表示是否在BOOTPROTO为dhcp时接受由dhcp服务器指定的dns地址
DEVICE=eth0
#网卡的设备名称
BOOTPROTO={static|dhcp|none|bootp}
#表示获取IP的方式,static|none表示静态;dhcp表示动态
IPADDR=192.168.10.10
#设置IP地址
NETMASK=255.255.255.0
#设置子网掩码
GATEWAY=192.168.10.1
#设置网关
ONBOOT=yes|no
#开机时是否自动激活网络接口
HWADDR=00:1E:0B:8F:B0:D0
#硬件地址要与硬件中的地址保持一致可省
DNS1=202.106.0.20
#指定DNS地址
USERCTL=yes|no
#表示是否允许普通用户启用或禁用此接口
PEERDNS=yes|no
#表示是否在BOOTPROTO为dhcp时接受由dhcp服务器指定的dns地址
如果有时通过ifconfig只能查看到lo而没有eth0,可能是因为网络没有随系统没有启动。
2、虚拟机网络配置
除了给Linux进行网络配置外,还需要对外部环境进行配置。虚拟机有三种网络连接方式:
- 桥接是占用真实的ip地址通过宿主机的真实网卡,可以与局域网及公网通讯。
- NAT方式通过VMnet1网卡只能跟宿主机通讯,可以访问互联网。
- HOST-only通过VMnet8网卡只能与宿主机通讯。桥接方式需要设置VMWare的桥接网卡,在virtual network editor中选择宿主机的连接方式(有线网卡还是无线网卡)。
3、网络管理
Linux目前提供两种网络管理工具,一种是network,一种是NetworkManager。
network
network是控制网络接口配置信息修改后,网络服务必须重新启动,来激活网络新配置,从而使得配置生效。这部分操作对服务而言和重新启动系统时是一样的作用。控制脚本是/etc/init.d/network这个文件,可以用这个文件后面加上下面的参数来操作网络服务。例如:
/etc/init.d/network restart
同样也可以用service这个命令来操作网络服务例如:
service network restart
NetworkManager
RHEL6新增加的图形化网络管理工具,可用检测网络、自动连接网络的程序。对于无线网络,网络管理器可以自动切换到最可靠的无线网络。利用网络管理器的程序可以自由切换在线和离线模式。网络管理器可以优先选择有线网络,支持 VPN。网络管理器最初由 Redhat 公司开发,现在由 GNOME 管理。
NetworkManager 新版本增强设备以及协议的支持,NetworkManager 最新版有一个全新的漂亮的客户端界面nmtui。通过命令nmtui启动networkmanager 的图形化界面。
4、防火墙
在早期的Linux系统中,默认使用的是iptables防火墙管理服务来配置防火墙。RHEL 7系统中集成了多款防火墙管理工具,其中firewalld(Dynamic Firewall Manager of Linux systems,Linux系统的动态防火墙管理器)服务是默认的防火墙配置管理工具,它拥有基于CLI(命令行界面)和基于GUI(图形用户界面)的两种管理方式。
firewalld 与 iptables 都是 linux 中防火墙的管理程序,但其实其角色主要为对于防火墙策略的管理,真正的防火墙执行者是位于内核中的netfilter。二者区别如下:
-
firewalld可以动态修改单条规则,动态管理规则集,允许更新规则而不破坏现有会话和连接。而iptables,在修改了规则后必须得全部刷新才可以生效;
-
firewalld使用区域和服务而不是链式规则;
-
firewalld默认是拒绝的,需要设置以后才能放行。而iptables默认是允许的,需要拒绝的才去限制;
-
iptables 仅能通过命令行进行配置;而 firewalld 提供了图形接口
-
iptables 的配置文件在 /etc/sysconfig/iptables 中;而 firewalld 的配置文件在 /usr/lib/firewalld/ 和 /etc/firewalld/ 中的各种 XML 文件
-
iptables 没有守护进程,并不能算是真正意义上的服务;而 firewalld 有守护进程
-
iptables 通过控制端口来控制服务,而 firewalld 则是通过控制协议来控制端口
iptables
iptables服务把用于处理或过滤流量的策略条目称之为规则,多条规则可以组成一个规则链,而规则链则依据数据包处理位置的不同进行分类,具体如下:
1.在进行路由选择前处理数据包(PREROUTING);
2.处理流入的数据包(INPUT); *外网-->内网
3.处理流出的数据包(OUTPUT); *外网<--内网
4.处理转发的数据包(FORWARD); *通过第三方
5.在进行路由选择后处理数据包(POSTROUTING)。
匹配策略规则采取的动作:
1.ACCEPT(允许):允许流量通过
2.LOG(登记):允许流量通过,但记录日志信息
3.REJECT(拒绝):拒绝流量通过且明确给予拒绝的响应(考试时务必用REJECT,让系统明确知道流量被拒绝)
4.DROP(丢弃):拒绝流量通过但不响应
iptables命令可以根据流量的源地址、目的地址、传输协议、服务类型等信息进行匹配,一旦匹配成功,iptables就会根据策略规则所预设的动作来处理这些流量。另外,再次提醒一下,防火墙策略规则的匹配顺序是从上至下的,因此要把较为严格、优先级较高的策略规则放到前面,以免发生错误。如下所示为iptables对应参数
参数 | 作用 |
-p | 设置默认策略 |
-F | 清空规则链 |
-L | 查看规则链 |
-A | 在规则链的末尾加入新规则 |
-I num | 在规则链的头部加入新规则 |
-D num | 删除某一条规则 |
-s | 匹配来源地址IP/MASK,加叹号'、!”表示除这个IP外 |
-d | 匹配目标地址 |
-i 网卡名称 | 匹配从这块网卡流入的数据 |
-o网卡名称 | 匹配从这块网卡流出的数据 |
-P | 匹配协议.如TCP、UDP. ICMP |
-dport num | 匹配目标端口w |
-sport num | 匹配来源箍口号 |
-j | 采取的动作(ACCEPT. LOG. REJECT, DROP) |
如下所示为对应的操作例子:
#查看已有的防火墙规则链
iptables -L
#清空已有的防火墙规则链
iptables -F
#把INPUT规则链的默认策略设置为拒绝,规则链的默认拒绝动作只能是DROP,不能是REJECT
iptables -P INPUT DROP
#向INPUT链头部中添加允许ICMP流量进入的策略规则
iptables -I INPUT -p icmp -j ACCEPT
#删除INPUT规则链的第1条规则(即刚刚允许ICMP那条)
iptables -D INPUT 1
#把INPUT规则链默认策略设置为允许
iptables -P INPUT ACCEPT
#将INPUT规则链设置为只允许指定网段的主机访问本机的22端口(必须先指明协议才能指明端口号)
iptables -I INPUT -s 192.168.10.0/24 -p tcp --dport 22 -j ACCEPT
#向INPUT规则链尾部添加拒绝来自所有主机访问本机22端口的规则
iptables -A INPUT -p tcp --dport 22 -j REJECT
firewalld
相较于传统的防火墙管理配置工具,firewalld支持动态更新技术并加入了区域(zone)的概念。简单来说,区域就是firewalld预先准备了几套防火墙策略集合(策略模板),用户可以根据生产场景的不同而选择合适的策略集合,从而实现防火墙策略之间的快速切换。
区域 | 默认规则策路 |
trusted | 允许所有的数据包 |
home | 拒绝流入的流量,除非与流出相关,如果与ssh、mdnsx ipp-clientx amba-client与dhcpv6-client於后相关,则允许况量 |
internal | 等同于home区域 |
work | 拒绝流入的流量,而如果流量与ssh、ipp-client与dhcpv6-client相关,则允许流量 |
public | 拒绝流入,除非与流出的流生相关;而如果流毋与ssh、dhcpv6-client服务相关,则允许流量 |
external | 拒绝流入,除非与流出的流量相关:而如果流量与ssh,装亮相关,则允许流量 |
dmz | 拒绝流入,除非与流出的流域相关;而如果与ssh相关.则允许 |
block | 拒绝流入,除非与流出的流量相关 |
drop | 拒绝流入,除非与流出的流量相关 |
firewalld防火墙常用操作
#查看状态
systemctl status firewalld
#开启防火墙
systemctl start firewalld.service
# 关闭防火墙
systemctl stop firewalld
# 关闭防火墙服务,则开机不会自启动
systemctl disable firewalld.service
#重启防火墙
systemctl restart firewalld.service
#查看firewall防火墙的状态
firewall-cmd --state
#查看防火墙开放端口规则
firewall-cmd --list-port
#查看80端口是否开启
firewall-cmd --query-port=80/tcp
#开放80端口,–permanent永久生效,没有此参数重启后就失效
firewall-cmd --permanent --add-port=80/tcp
#加载生效开放的端口
firewall-cmd --reload
#查询指定端口80是否开放
firewall-cmd --query-port=80/tcp
# 移除8080端口
firewall-cmd --permanent --remove-port=8080/tcp
三、网络命令
ifconfig | 查看当前的网卡状况 |
ifdown/ifup | 关闭/开启网卡设备 |
netstat -t/u/l/a/n | 查看端口使用情况 -tcp协议端口/udp协议端口/监听的端口/所有连接/使用ip号、端口号 |
route -n | 查看路由列表 |
nslookup | 查看域名对应的ip |
Ping -c 3 | 握手,测试网络是否通畅,-c 3指定ping的次数3次 |
telnet | 与对应ip的端口进行连通测试 |
traceroute | 追踪访问指定地址的路由路径 |
wget | 从网络地址下载文件 |
tcpdump -i eth0 -nnX -port 21 | 网络抓包命令,-i 网卡号,-nn显示端口ip号,-X以16进制显示,-port抓包端口号 |
scp
使用scp命令可以实现在两个Linux服务器之间进行文件拷贝,其命令格式为
# 递归 文件源用户@主机:路径/文件名称 目的地用户@主机:目的地路径/名称
scp -r root@hadoop102:/opt/module/* tory@hadoop103:/opt/module
其中-r代表递归操作,如果用户当前就在文件源主机上登录,则可以省略“用户名@主机”,同理,如果在登陆在目标主机,则可以省略“目标用户@主机”。
rsync
远程同步工具rsync用于Linux之间的文件同步,用rsync做文件的复制要比scp的速度快,因为rsync只对差异文件做更新。scp是把所有文件都复制过去。其命令如下:
# 参数 文件源用户@主机:源文件路径 目标用户@主机:目的地路径
rsync -av root@hadoop102:/opt/module/hadoop-3.1.3/ tory@hadoop103:/opt/module/hadoop-3.1.3/
其中参数-a代表归档拷贝,-v代表显示复制过程
SSH
互联网的ftp与telnet协议明文传输,易被抓包截获,网络传输不安全。对称加密算法,加密与解密使用同一密钥,单密钥加密,解密需要加密的密码,不安全。SSH使用非对称加密算法有公钥与私钥,使用公钥加密,私钥解密,保护发送端的私钥不会被接收端看到。
如下所示为使用SSH的原理:
- 首先在A服务器生成一对公钥和私钥,公钥用于发送给别人,私钥自己保存。例如这里服务器B保存了A的公钥。
- 当A需要向B发送数据时,在A本地使用私钥对数据进行加密,B接收到数据后使用公钥进行解密
- 反之,当B向A发送数据时,在B使用公钥对数据进行加密,A接收到之后使用私钥进行解密
首先生成公钥和私钥,在Linux每个用户目录下都有一个隐藏的.ssh文件夹,用于保存ssh相关文件,在该目录下执行如下命令,生成id_rsa(私钥)、id_rsa.pub(公钥)。此外known_hosts文件中记录ssh访问过的计算机公钥,authorized_keys存放授权过的无密登录服务器公钥
ssh-keygen -t rsa
之后通过如下命令将公钥发送到目标主机
ssh-copy-id hadoop102
这样对当前用户,通过ssh登录hadoop102时就不需要输入密码了
更多推荐
所有评论(0)