十四.网络配置

一.rhel8与7的区别

        在rhel7上,同时支持network.service(配置文件在/etc/system/network-scripts)和NetworkManager.service(简称NM)。默认情况下,这2个服务都有开启,但许多人都会将NM禁用掉。

        在rhel8上,已废弃network.service,因此只能通过NM进行网络配置,包括动态ip和静态ip。换言之,在rhel8上,必须开启NM,否则无法使用网络。

        rhel8依然支持network.service,只是默认没安装,后面在介绍

二.NetworkManager介绍

        NetworkManager是2004年Red Hat启动的项目,在能够让Linux用户更轻松地处理现代网络需求,尤其是无线网络,能自动发现网卡并配置ip地址。

        类似在手机上同时开启wifi和蜂窝网络,自动探测可用网络并连接,无需手动切换。虽然初衷是针对无线网络,但在服务器领域,NM已大获成功。

三.NM能管理各种网络

有线网卡、无线网卡

动态ip、静态ip

以太网、非以太网

物理网卡、虚拟网卡

四.使用方法

nmcli:命令行。这是最常用的工具,本文将详细讲解该工具使用。

nmtui:在shell终端开启文本图形界面。示意图见本文最后的Tips

Freedesktop applet:如GNOME上自带的网络管理工具

cockpit: RedHat自带的基于web图形界面的"驾驶舱"工具,具有dashborad和基础管理功能

五.为什么要用NM

yum -y install bash-completion #自动补全命令包

工具齐全:命令行、文本界面、图形界面、web

广纳天地:纳管各种网络,有线、无线、物理、虚拟

参数丰富:多达200多项配置参数(包括ethtool参数)

一统江湖:RedHat系、SUSE系、Debian/Ubuntu系,均支持

大势所趋:下一个大版本的rhel只能通过NM管理网络

六.nmcli使用方法

命令 用途

nmcli dev status         显示所有网络接口的networkmanager状态

nmcli con show          列出所有链接

nmcli con show name         列出name链接的当前设置

nmcli con add con-name name         添加一个名为name的新连接

nmcli con mod name         修改name连接

nmcli con reload         重新加载配置文件(在手动编辑配置文件之后使用)

nmcli con up name         激活name连接

nmcli dev dis dev         在网络接口dev上停用并断开当前连接

nmcli con del name         删除name连接以及其配置文件

[root@localhost ~]# nmcli dev status
DEVICE  TYPE      STATE      CONNECTION
ens160  ethernet  connected  ens160
lo      loopback  unmanaged  --

修改网络IP地址有以下几种方式:

1、图形界面

2、修改网卡的配置文件vim letc/sysconfig/network-scriptslifcfg-ens160(适用于rhel8以前)

[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens160 
'''
BOOTPROTO=none/ static
#none表示不使用启动地址协议static静态地址协议
ONBOOT=yes
#在系统启动时激活网卡
IPADDR=192.168.100.3
#IP地址
NETMASK=255.255.255.0
#子网掩码
GATEWAY=192.168. .1
#网关地址
修改完成之后,重启服务:systemctl restart NetworkManager
重新加载后生效: nmcli connection up ens160
网关配置文件:letc/sysconfig/network
DNS配置文件:letc/resolv.conf

'''

3.命令行编辑一

[root@localhost ~]# nmcli con edit ens160            #个人建议不用这个,这个不好用
#进去之后
nmcli>go ipv4
nmcli ipv4>set addresses 192.168.38.17/24
nmcli ipv4>set gatway 192.168.38.1
nmcli ipv4>save        #更新
nmcli ipv4>activate ens160
nmcli ipv4>quit            #q也可以出去
#这里ip a,就会出现两个IP

4.命令行编辑二

[root@localhost ~]# nmcli connection modify ens160 ipv4.addresses 192.168.43.130/24
[root@localhost ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    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: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:0c:29:94:3a:55 brd ff:ff:ff:ff:ff:ff
    inet 192.168.43.132/24 brd 192.168.43.255 scope global dynamic noprefixroute ens160
       valid_lft 1260sec preferred_lft 1260sec
    inet6 fe80::7612:336a:ba88:3369/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
[root@localhost ~]# nmcli connection modify ens160 ipv4.addresses 192.168.43.130/24 ipv4.method manual
[root@localhost ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    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: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:0c:29:94:3a:55 brd ff:ff:ff:ff:ff:ff
    inet 192.168.43.132/24 brd 192.168.43.255 scope global dynamic noprefixroute ens160
       valid_lft 1198sec preferred_lft 1198sec
    inet6 fe80::7612:336a:ba88:3369/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
[root@localhost ~]# nmcli con up ens160
[root@localhost ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    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: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:0c:29:94:3a:55 brd ff:ff:ff:ff:ff:ff
    inet 192.168.43.130/24 brd 192.168.43.255 scope global noprefixroute ens160
       valid_lft forever preferred_lft forever
    inet6 fe80::7612:336a:ba88:3369/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
[root@localhost ~]# nmcli con modify ens160 +ipv4/addresses 192.168.43.132
Error: invalid <setting>.<property> 'ipv4/addresses'.
[root@localhost ~]# nmcli con modify ens160 +ipv4.addresses 192.168.43.132
[root@localhost ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    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: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:0c:29:94:3a:55 brd ff:ff:ff:ff:ff:ff
    inet 192.168.43.130/24 brd 192.168.43.255 scope global noprefixroute ens160
       valid_lft forever preferred_lft forever
    inet6 fe80::7612:336a:ba88:3369/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
[root@localhost ~]# nmcli con up ens160  
[root@localhost ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    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: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:0c:29:94:3a:55 brd ff:ff:ff:ff:ff:ff
    inet 192.168.43.130/24 brd 192.168.43.255 scope global noprefixroute ens160
       valid_lft forever preferred_lft forever
    inet 192.168.43.132/32 scope global noprefixroute ens160
       valid_lft forever preferred_lft forever
    inet6 fe80::7612:336a:ba88:3369/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

七.nmtui:文本图形界面(用键盘左右键)

1)选择编辑链接

2)有一个网卡,选择编辑

3)进去之后,将IPV4配置改成手动,添加地址,网关,后来,就一直OK就好了

4)不管怎么配置,记得重新激活

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 在使用 Python 的 socket 模块创建 socket 时,可以设置 IP 地址。具体方法是通过传入一个元组来指定 IP 地址和端口号。 例如,创建一个 TCP/IP socket 并指定 IP 地址为 '127.0.0.1',端口号为 8080,代码如下: ``` import socket # 创建一个 TCP/IP socket sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 绑定 IP 地址和端口号 server_address = ('127.0.0.1', 8080) sock.bind(server_address) # 监听端口 sock.listen(1) print('Server started and listening on {}:{}'.format(*server_address)) # 接受连接请求 connection, client_address = sock.accept() # 处理连接 try: while True: data = connection.recv(1024) if data: print('Received data: {!r}'.format(data)) else: break finally: # 关闭连接 connection.close() print('Connection closed') ``` ### 回答2: 在使用Python的socket模块时,可以通过socket.socket类来创建一个TCP套接字对象,然后通过该对象的方法设置IP地址。 首先,需要在程序中导入socket模块: ```python import socket ``` 接下来,可以使用`socket.socket()`方法创建一个套接字对象,如: ```python sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) ``` 在这里,`AF_INET`表示使用IPv4协议,`SOCK_STREAM`表示使用TCP协议。 要设置IP地址,可以使用`socket.bind()`方法,参数是一个元组,包含IP地址和端口号。例如,将IP地址设置为本地主机的IP地址,并监听特定的端口号,可以这样设置: ```python host = '127.0.0.1' # 设置IP地址为本地主机的IP地址 port = 12345 # 设置端口号为12345 sock.bind((host, port)) # 绑定IP地址和端口号 ``` IP地址是一个由四个十进制数值(0-255)组成的串,用点分隔开,如"127.0.0.1"。在本例中,我们将IP地址设置为本地主机的IP地址,即`'127.0.0.1'`。 最后,我们可以通过`socket.getsockname()`方法来获取套接字的设置的IP地址和端口号。例如: ```python ip, port = sock.getsockname() print("IP地址:", ip) print("端口号:", port) ``` 这样就完成了通过socket.socket设置IP地址的操作。 ### 回答3: 在使用socket编程时,可以使用socket.socket类来创建套接字。在创建套接字时,可以通过设置IP地址来指定该套接字要绑定的网络接口。 设置IP地址的方式是通过套接字的bind()方法来实现的。bind()方法接受一个参数,即所要绑定的IP地址。 要设置IP地址,需要将IP地址转换为所需的格式。在IPv4协议中,IP地址通常以字符串的形式表示,例如"192.168.0.1"。而在socket编程中,IP地址需要使用网络字节序(big-endian)表示,可以使用socket库中的inet_aton函数或inet_pton函数将字符串格式的IP地址转换为网络字节序。 以下是一个示例代码,实现了创建一个套接字并设置IP地址为"192.168.0.1"的过程: ```python import socket # 创建套接字 sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 设置IP地址 ip = "192.168.0.1" ip_bytes = socket.inet_aton(ip) # 将IP地址转换为网络字节序 sock.bind((ip_bytes, 0)) # 绑定套接字 # 其他操作... ``` 在上述代码中,首先使用socket.socket()方法创建了一个基于IPv4和TCP协议的套接字。然后,使用socket.inet_aton()方法将字符串格式的IP地址转换为网络字节序的字节串。最后,使用bind()方法将套接字绑定到指定的IP地址。 值得注意的是,绑定的IP地址必须是当前主机上的一个可用接口的IP地址,否则绑定将失败。在多网卡的环境下,可以通过设置IP地址来选择要使用的网络接口。 通过设置套接字的IP地址,可以使得套接字使用指定的网络接口进行数据的收发,方便网络编程的实现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值