ip管理
与ip相关的命令
查看ip地址
命令:ip addr show
或ifconfig
删除ip地址(临时)
命令:ip addr del dev 设备名称 ip地址/子网掩码
增加ip地址(临时)
命令:ip addr add ip地址/子网掩码 dev 设备名称
检测网络是否通畅
命令:ping 目的地的ip地址/目的地url
参数:
- -c 数字
表示ping的次数。用法:ping 目的地ip/url -c 数字
- -w 数字
更改系统的ip
图形方式更改ip(永久更改)
命令:
nm-connection-editor
nmtui
无图形时,用类似图形的方式修改ip。
图形方式更改ip的前提条件:NetworkManager.service服务状态开启
nm-connection-editor
更改ip
- 执行
nm-connection-editor
命令
[root@localhost ~]# nm-connection-editor
- 删除原来的ip
- 设置新ip
- 动态生成新ip(DHCP服务)
设置ip时,若已经搭建好dhcp服务器,选择此项;
查询虚拟机的新ip:
- 静态生成新ip
查询虚拟机的新ip,确实为自定义的ip值。
nmtui
更改ip
- 执行nmtui命令
在这里插入代码片
- 编辑
2.1 进入NetworkManager TUI界面->回车键(Enter
)
2.2 选择以太网的网络->删除
2.3 设置ip
- 动态生成新ip(DHCP服务)
- 静态生成新ip
逐页保存即可。
ip修改成功!!
命令方式更改ip
临时修改ip
命令:ifconfig 网卡 新ip地址 netmask 子网掩码
- 查看虚拟机原来的连接情况:
[root@localhost ~]# ifconfig ##查看虚拟机ens33的ip
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.118 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::20c:29ff:feb7:f375 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:b7:f3:75 txqueuelen 1000 (Ethernet)
RX packets 1784 bytes 340595 (332.6 KiB)
RX errors 0 dropped 420 overruns 0 frame 0
TX packets 894 bytes 120638 (117.8 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 436 bytes 45812 (44.7 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 436 bytes 45812 (44.7 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
virbr0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255
ether 52:54:00:14:c3:5c txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[root@localhost ~]# ping 192.168.1.18 -c 3 ##ping主机
PING 192.168.1.18 (192.168.1.18) 56(84) bytes of data.
64 bytes from 192.168.1.18: icmp_seq=1 ttl=64 time=0.469 ms
64 bytes from 192.168.1.18: icmp_seq=2 ttl=64 time=0.608 ms
64 bytes from 192.168.1.18: icmp_seq=3 ttl=64 time=0.574 ms
--- 192.168.1.18 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2001ms
rtt min/avg/max/mdev = 0.469/0.550/0.608/0.062 ms
[root@localhost ~]# ping 192.168.1.119 -c 3 ##ping虚拟机
PING 192.168.1.119 (192.168.1.119) 56(84) bytes of data.
64 bytes from 192.168.1.119: icmp_seq=1 ttl=64 time=0.494 ms
64 bytes from 192.168.1.119: icmp_seq=2 ttl=64 time=0.589 ms
64 bytes from 192.168.1.119: icmp_seq=3 ttl=64 time=0.740 ms
--- 192.168.1.119 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2000ms
rtt min/avg/max/mdev = 0.494/0.607/0.740/0.105 ms
- 删除原来的ip:
[root@localhost ~]# ip addr del dev ens33 192.168.1.118/24 ##删除虚拟机原来的ip
[root@localhost ~]# ifconfig ##查看ens33的ip
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet6 fe80::20c:29ff:feb7:f375 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:b7:f3:75 txqueuelen 1000 (Ethernet)
RX packets 1894 bytes 363173 (354.6 KiB)
RX errors 0 dropped 454 overruns 0 frame 0
TX packets 930 bytes 123610 (120.7 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 436 bytes 45812 (44.7 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 436 bytes 45812 (44.7 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
virbr0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255
ether 52:54:00:14:c3:5c txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
- 设置新的ip:
- 测试新的虚拟机是否能ping通其它的虚拟机和主机
[root@localhost ~]# ping 192.168.1.119 -c 3 ##ping虚拟机(成功!)
PING 192.168.1.119 (192.168.1.119) 56(84) bytes of data.
64 bytes from 192.168.1.119: icmp_seq=1 ttl=64 time=0.624 ms
64 bytes from 192.168.1.119: icmp_seq=2 ttl=64 time=0.755 ms
64 bytes from 192.168.1.119: icmp_seq=3 ttl=64 time=0.793 ms
--- 192.168.1.119 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2001ms
rtt min/avg/max/mdev = 0.624/0.724/0.793/0.072 ms
[root@localhost ~]# ping 192.168.1.18 -c 3 ##ping主机(成功!)
PING 192.168.1.18 (192.168.1.18) 56(84) bytes of data.
64 bytes from 192.168.1.18: icmp_seq=1 ttl=64 time=0.571 ms
64 bytes from 192.168.1.18: icmp_seq=2 ttl=64 time=0.613 ms
64 bytes from 192.168.1.18: icmp_seq=3 ttl=64 time=0.569 ms
--- 192.168.1.18 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 0.569/0.584/0.613/0.028 ms
注意:
- List item这里设置新ip的方法和删除ens33中ip的方法都是临时的,系统重启或者执行
systemctl restart network
命令后,ip会恢复为最初值。 - 如果不先删除原来的ip,直接使用ifconfig设置新的ip,则无法ping通。
永久修改ip
命令:nmcli
(相当于nm-connection-editor
的文本形式)
设备相关
命令:nmcli device 参数
nmcli device status
查看设备状态
nmcli device disconnect ens33
关闭设备
nmcli device connect ens33
开启设备
nmcli device modify 协议 ip地址/子网掩码
添加ip(临时,仅用于本次服务)
连接相关
命令:nmcli connection 参数
nmcli connection show
查看网卡信息
nmcli connection down 连接名称
关闭连接
nmcli connection up 连接名称
打开连接
nmcli connection modify 连接名称 协议 ip地址/子网掩码
给设备添加ip
添加完后必须重启才能生效
[root@localhost ~]# nmcli connection modify xxxzzz3 ip4 192.168.1.225/24
[root@localhost ~]# systemctl restart network
[root@localhost ~]# ip addr show ens33
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:b7:f3:75 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.188/24 brd 192.168.1.255 scope global noprefixroute ens33
valid_lft forever preferred_lft forever
inet 192.168.1.225/24 brd 192.168.1.255 scope global secondary noprefixroute ens33
valid_lft forever preferred_lft forever
inet6 fe80::2148:3570:2e21:5dc9/64 scope link noprefixroute
valid_lft forever preferred_lft forever
nmcli connection delete 连接名称
删除连接
[root@localhost ~]# nmcli connection delete xxxzzz3
nmcli connection add con-name 连接名称 ifname 设备名称 type 连接类型 协议 ip地址/子网掩码
添加静态连接
多次给一个设备添加连接,只有第一个生效。nmcli connection add con-name 连接名称 ifname 设备名称 type 连接类型 协议 ip地址/子网掩码
添加动态连接(DHCP)
文件方式更改ip
配置文件目录:/etc/sysconfig/network-scripts/
配置文件名称:ifcfg-连接名称
配置动态连接(DHCP)
[root@localhost network-scripts]# nmcli connection delete zzjj2 ##删除占用ens33网卡的连接
Connection 'zzjj2' (1609c5cb-bcee-48dd-b433-8b8a73087e55) successfully deleted.
[root@localhost network-scripts]# ip addr show ens33 ##无连接占用此网卡
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:b7:f3:75 brd ff:ff:ff:ff:ff:ff
[root@localhost network-scripts]# vim ifcfg-zzjj3 ##编辑新的配置文件
重启网络服务,查看连接:
-
Linux7中
重启命令:systemctl restart network
-
Linux8中
重启命令:
systemctl restart NetworkManager
nmcli connection down 老的连接
nmcli connection up 新的连接
注意:Linux8中必须将连接关闭重启,否则无法更新新的ip。
配置静态连接
[root@localhost network-scripts]# nmcli connection delete zzjj3
Connection 'zzjj3' (72ab84a1-1a01-0f4d-dd73-e59a04067485) successfully deleted.
[root@localhost network-scripts]# vim ifcfg-zzjj4
重启网络服务,查看连接:
-
Linux7中
重启命令:systemctl restart network
-
Linux8中
重启命令:
systemctl restart NetworkManager
nmcli connection down 老的连接
nmcli connection up 新的连接
注意:Linux8中必须将连接关闭重启,否则无法更新新的ip。
在配置文件文件中修改ip后不重启NetworkManager,ip不会更改;仅执行
systemctl restart NetworkManager
,ip也不更改;需同时将原来的连接关闭重启后,ip才会更新。
DHCP管理
DHCP:全称Dynamic Host Configuration Protocol,动态主机配置协议。
DHCP服务器的作用:动态分配管理IP地址和其他配置参数
在红帽Linux8中搭建DHCP服务
设置静态网络
[root@RHTL8_clone Packages]# cd /etc/sysconfig/network-scripts/
[root@RHTL8_clone network-scripts]# ls
ifcfg-ens160
[root@RHTL8_clone network-scripts]# rm -fr ifcfg-ens160
[root@RHTL8_clone network-scripts]# vim ifcfg-ens160 #设置一个静态网络
ifcfg-ens160的内容:
重启后查看虚拟机ip:
[root@RHTL8_clone dhcp]# systemctl restart NetworkManager ##重启网络
[root@RHTL8_clone dhcp]# nmcli connection show ##查看连接的网络
NAME UUID TYPE DEVICE
System ens160 ea74cf24-c2a2-ecee-3747-a2d76d46f93b ethernet ens160
virbr0 a4584b16-dc66-4bbe-8609-49d40536f639 bridge virbr0
[root@RHTL8_clone dhcp]# nmcli connection down System\ ens160 ##关闭ens160连接的网络
Connection 'System ens160' successfully deactivated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/1)
[root@RHTL8_clone dhcp]# nmcli connection up System\ ens160 ##开启ens160连接的网络
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/3)
[root@RHTL8_clone dhcp]# ifconfig ##查询ip
ens160: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.10 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::20c:29ff:fe61:85b1 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:61:85:b1 txqueuelen 1000 (Ethernet)
RX packets 859 bytes 137969 (134.7 KiB)
RX errors 0 dropped 150 overruns 0 frame 0
TX packets 102 bytes 11574 (11.3 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 96 bytes 8544 (8.3 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 96 bytes 8544 (8.3 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
virbr0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255
ether 52:54:00:01:f1:c4 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
给虚拟机安装dhcp服务的安装包
若创建虚拟机时没有连接镜像,则使用以下步骤将主机上红帽Linux8中的镜像放到虚拟机的光驱中。
查看镜像的挂载位置
进入镜像所在目录,找到DHCP安装包的位置
[root@RHTL8_clone ~]# cd /run/media/root/RHEL-8-0-0-BaseOS-x86_64
[root@RHTL8_clone RHEL-8-0-0-BaseOS-x86_64]# ls
AppStream EULA images RPM-GPG-KEY-redhat-beta
BaseOS extra_files.json isolinux RPM-GPG-KEY-redhat-release
EFI GPL media.repo TRANS.TBL
[root@RHTL8_clone RHEL-8-0-0-BaseOS-x86_64]# cd BaseOS/
[root@RHTL8_clone BaseOS]# ls
Packages repodata
[root@RHTL8_clone BaseOS]# cd Packages/
[root@RHTL8_clone Packages]# ls dhcp* ##查找dhcp服务器的安装包
[root@RHTL8_clone Packages]# rpm -ivh dhcp-server-4.3.6-30.el8.x86_64.rpm ##安装dhcp服务安装包
配置DHCP文件
将DHCP配置文件的例子复制给/etc/dhcp/dhcpd.conf
[root@RHTL8_clone dhcp]# cp /usr/share/doc/dhcp-server/dhcpd.conf.example /etc/dhcp/dhcpd.conf ##复制DHCP服务器给的配置文件的样本
cp: overwrite '/etc/dhcp/dhcpd.conf'? yes
[root@RHTL8_clone dhcp]# vim /etc/dhcp/dhcpd.conf ##配置DHCP
重启服务
[root@RHTL8_clone etc]# systemctl restart dhcpd
注意:在配置/etc/dhcp/dhcpd.conf
时,子网网段要与dhcp服务器在同一网段。若dhcp服务器处在192.168.1.x网段,却将dhcp的子网设置为192.168.0.x网段,则无法打开dhcp服务。
在Linux7中配置DHCP网络获取ip
- 将Linux7设置为动态获取ip格式(DHCP格式) --修改
/etc/sysconfig/network-scripts/
中的配置文件 - 重启网络后查看ip:
在Linux8中查看ip分配情况
至此,成功将Linux8配置成一台DHCP服务器。
网关管理
路由器上和客户主机处在同一个网段的ip叫做客户主机的网关。
设置网关
设置临时网关
ip route add default via ip地址
添加默认网关
ip route del default via ip地址
删除默认网关
设置永久网关
修改系统全局网关
配置文件:/etc/sysconfig/network
- 修改配置文件
[root@rhel7 network-scripts]# vim /etc/sysconfig/network
- 重启
-
- Linux7系统的重启
执行以下三条命令:
systemctl stop NetworkManager
systemctl restart network
systemctl start NetworkManager
- Linux7系统的重启
-
- Linux8系统的重启
执行以下三条命令:
systemctl restart NetworkManager
nmcli connection down 链接名称
nmcli connection up 链接名称
- Linux8系统的重启
修改某个网卡的网关
配置文件:etc/sysconfig/network-scripts/网卡名称
- 修改配置文件
[root@rhel7 ~]# cd /etc/sysconfig/network-scripts/
[root@rhel7 network-scripts]# vim ifcfg-ens33
- 重启
-
- Linux7系统的重启
执行以下三条命令:
systemctl stop NetworkManager
systemctl restart network
systemctl start NetworkManager
- Linux7系统的重启
-
- Linux8系统的重启
执行以下三条命令:
systemctl restart NetworkManager
nmcli connection down 链接名称
nmcli connection up 链接名称
- Linux8系统的重启
Linux模拟路由器
环境:两台Linux7虚拟机
在rhel7中添加一块网卡使rhel7主机变成双网卡主机
右键 -> 设置 -> 网络适配器 -> 桥接模式
查看rhel7的网卡信息:
设置rhel7虚拟机两块网卡的ip
- 修改两块网卡的ip
[root@rhel7 network-scripts]# vim ifcfg-ens33
[root@rhel7 network-scripts]# cp ifcfg-ens33 ifcfg-ens38
[root@rhel7 network-scripts]# vim ifcfg-ens38
- 重启网络,查看ip
- 分别测试rhel7和真实主机、另一台虚拟机的连接情况:
在rhel7中打开内核路由功能
- 查看内核的路由功能是否开启:
sysctl -a | grep ip_forward
- 修改配置文件:
/etc/sysctl.conf
- 执行
sysctl -p
使修改立即生效:
在rhel7中打开地址伪装功能
ip地址转换需要通过火墙,因此要确保rhel7中的火墙状态开启。
- 查看rhel7中的火墙状态,若是关闭状态则开启火墙;
- 查看rhel7的地址伪装功能是否开启:
命令:firewall-cmd --list-all
- 永久开启地址伪装功能:
命令:firewall-cmd --permanent --add-masquerade
- 重启服务
命令:firewall-cmd --reload
- 查看rhel7的地址伪装功能:
此时,虚拟机rhel7即模拟为一个路由器
测试虚拟机rhel7的路由转发功能
-
开启一个新的虚拟机rhel7_clone3,将其ip设置为
172.25.254.11
-
测试rhel7_clone3的连通情况:
-
给rhel7_clone3添加网关(该网关与rehl7中的路由网关ip相同),查看网关是否正确连接。
-
rhel7_clone3连接真实主机:
真实主机连接rhel7_clone3:
DNS管理
DNS服务器:把域名转换为ip地址的服务器。
DNS服务器的配置文件:/etc/sysconfig/network-scripts/网卡名称
若配置文件为如下形式(未设置DNS服务器的ip) :
此时虚拟机无法解析域名,但可以访问域名对应的ip地址。
比如 :域名(www.baidu.com) 对应 ip( 39.156.69.79),ping情况如下:
配置etc/hosts
etc/hosts
中的配置目的是手动给定域名和ip之间的对应关系。
[root@rhel7 network-scripts]# vim /etc/host
成功ping通www.baidu.com,但换成其它域名,又无法ping通。若要对所有域名都能自动解析出它对应的ip,需要配置/etc/resolv.conf
。
配置resolv.conf
[root@rhel7 network-scripts]# vim /etc/resolv.conf
此时虚拟机可以ping通任何一个域名,因为电信的DNS服务器会自动将域名解析为对应的ip。
网桥管理
- 网桥默认为关闭状态
- 查看网卡连接状况
- 删除ens33的连接
- 重新编辑配置文件
/etc/sysconfig/network-scripts/ifcfg-ens33
5.编辑文件/etc/sysconfig/network-scripts/ifcfg-br0
- 重启网络,查看桥接接口是否打开
[root@rhel7_clone3 ~]# systemctl restart network ##重启网络
[root@rhel7_clone3 ~]# ifconfig ##查看是否又有桥接br0
br0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.200 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::20c:29ff:feb6:1056 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:b6:10:56 txqueuelen 1000 (Ethernet)
RX packets 60 bytes 15986 (15.6 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 29 bytes 3802 (3.7 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
ether 00:0c:29:b6:10:56 txqueuelen 1000 (Ethernet)
RX packets 9367 bytes 1917818 (1.8 MiB)
RX errors 0 dropped 863 overruns 0 frame 0
TX packets 173 bytes 19621 (19.1 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 204 bytes 17628 (17.2 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 204 bytes 17628 (17.2 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
virbr0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255
ether 52:54:00:14:c3:5c txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
或者