配网-多网卡下网络配置

多网卡下网络配置#

如下图所示,模块集成了多种网卡设备,不同的网卡配置不同的工作模式,提供了不同的网络服务。 其中可以通过 4G 网卡Wi-Fi 网卡 AP 模式以太网终端模式( WAN )访问外部网络,Wi-Fi 网卡 STATION 模式、以太网网关模式( LAN )、USB 网卡均提供了局域网络,那么该如何选择网卡使用,以及如何配置网络转发,按照自己想要的方式进行网络通信?

针对多网卡使用情况下,QuecPython 提供如下两种方式进行操作。

  1. 指定网卡数据发送

多网卡情况下,当进行网络通信时,无法确定走哪个网卡进行发出,但是有时网络服务在不同的局域网内,需要从指定网卡发出,此时可以通过标准的socket接口,通过 bind 网卡的 ip,来固定 tcp/udp 通信从哪个网口发出。如下图所示,当绑定10.11.129.252时走4G网卡交互,当绑定192.168.1.100时走以太网卡交互。

  1. 网卡转发配置

使用提供的默认网卡配置接口set_default_NIC(ip),当配置默认网卡后,将该网卡作为对外访问网络网卡,启用 NAT 功能,对其他网卡数据进行转发。如下图所示,使用nic.set_default_NIC('10.11.129.252')配置立即生效,然后会对来自以太网卡的非本机数据从 4G 网卡转发处理。

  1. 默认网卡接口开出,主要由用户维护默认网卡,便于切换网络转发。
  2. 其中 4G 网卡第一路固定配置为默认网卡,第一路拨号成功后会触发重新配置成默认网卡。目前使用场景基本都是4G网卡作为默认网卡对外转发,防止用户使用的不确定性,导致网络不可用,为了网络可靠性增加此操作。

Wi-Fi(AP)-> LTE(单路)#

在 Wi-Fi 网卡和蜂窝无线网卡(LTE)同时存在时,通过 Wi-Fi 网络使用 4G 网络连通外网,该如何配置,工作方式见下图:

对于多种网卡,配置转发关系,当前 QuecPython 尚未提供复杂详细的路由表转发配置功能,我们只需要配置默认网卡即可。再多的网卡,也只有唯一的一个默认网卡,通过默认网卡配置,都会从默认网卡进行 NAT 转发。

示例代码如下展示:


# 此处展示只是配置转发方向,具体 Wi-Fi 网卡初始化配置请参考 Wi-Fi 网卡应用指导章节。  
# nic 指具体网卡的网卡对象,当前我们默认网卡配置接口在具体网卡功能内部,后续会作为基础接口放置在网络配置模块下。

nic.set_default_NIC('10.11.129.251')

# 此时 AP 网络下的终端设备可以通过 LTE 连接外部网络

Ethernet(LAN)-> LTE(单路)#

在以太网卡和蜂窝无线网卡(LTE)同时存在时,通过以太网络使用 4G 网络连通外网,该如何配置,工作方式见下图:

对于多种网卡,配置转发关系,当前 QuecPython 尚未提供复杂详细的路由表转发配置功能,我们只需要配置默认网卡即可。再多的网卡,也只有唯一的一个默认网卡,通过默认网卡配置,都会从默认网卡进行 NAT 转发。

示例代码如下展示:


# 此处展示只是配置转发方向,具体以太网卡初始化配置请参考以太网卡应用指导章节 。 
# nic 指具体网卡的网卡对象,当前我们默认网卡配置接口在具体网卡功能内部,后续会作为基础接口放置在网络配置模块下。

nic.set_default_NIC('10.11.129.252')

# 此时 LAN 网络下的终端设备可以通过 LTE 连接外部网络。

Wi-Fi(AP)-> LTE(多路)#

在 Wi-Fi 网卡和蜂窝无线网卡(LTE)同时存在时,并且 LTE 进行多路拨号,一路为 Wi-Fi 网络提供 LTE 网络服务,一路为模组内部通信,该如何配置?工作方式见下图:

对于多种网卡,配置转发关系,当前 QuecPython 尚未提供复杂详细的路由表转发配置功能,我们只需要配置默认网卡即可。再多的网卡,也只有唯一的一个默认网卡,通过默认网卡配置,都会从默认网卡进行 NAT 转发。

如上图所示,蜂窝无线网卡第一路拨号 ip 为 10.11.129.251 ,第二路拨号 ip 为 10.11.129.252 ,我们使用第一路作为模组内部通信,第二路为 Wi-Fi 网络提供 LTE 网络服务。

第一路作为内部通信网络服务,使用第一路进行 TCP 通信示例代码如下展示:

# 导入usocket模块
import usocket

if __name__ == '__main__':
    # 创建一个socket实例
    sock = usocket.socket(usocket.AF_INET, usocket.SOCK_STREAM, usocket.TCP_CUSTOMIZE_PORT)
    sock.settimeout(5)
    sock.bind(("10.11.129.251", 0))
    # 解析域名
    sockaddr=usocket.getaddrinfo('python.quectel.com', 80)[0][-1]
    print('start connect')
    # 建立连接
    sock.connect(sockaddr)
    # 向服务端发送消息
    ret=sock.send('GET /NEWS HTTP/1.1\r\nHost: python.quectel.com\r\nAccept-Encoding: deflate\r\nConnection: keep-alive\r\n\r\n')
    print('send %d bytes' % ret)
    #接收服务端消息
    data=sock.recv(1024)
    print('recv %s bytes:' % len(data))
    print(data.decode())

    # 关闭连接
    sock.close()

第二路为 Wi-Fi 网络提供 LTE 网络服务,配置示例代码如下展示:


# 此处展示只是配置转发方向,具体 Wi-Fi 网卡初始化配置请参考 Wi-Fi 网卡应用指导章节。  
# nic 指具体的网卡对象,当前我们默认网卡配置接口在具体网卡功能内部,后续会作为基础接口放置在网络配置模块下。

nic.set_default_NIC('10.11.129.252')

# 此时 AP 网络下的终端设备可以通过 LTE 连接外部网络。

Ethernet(WAN)-> LTE(多路)#

在以太网卡和蜂窝无线网卡(LTE)同时存在时,并且 LTE 进行多路拨号,一路为以太网络提供 LTE 网络服务,一路为模组内部通信,,该如何配置,工作方式见下图:

对于多种网卡,配置转发关系,当前 QuecPython 尚未提供复杂详细的路由表转发配置功能,我们只需要配置默认网卡即可。再多的网卡,也只有唯一的一个默认网卡,通过默认网卡配置,都会从默认网卡进行 NAT 转发。

如上图所示,蜂窝无线网卡第一路拨号 ip 为 10.11.129.251 ,第二路拨号 ip 为 10.11.129.252 ,我们使用第一路作为模组内部通信,第二路为以太网提供 LTE 网络服务。

第一路作为内部通信网络服务,使用第一路进行 TCP 通信示例代码如下展示:

# 导入usocket模块
import usocket

if __name__ == '__main__':
    # 创建一个socket实例
    sock = usocket.socket(usocket.AF_INET, usocket.SOCK_STREAM, usocket.TCP_CUSTOMIZE_PORT)
    sock.settimeout(5)
    sock.bind(("10.11.129.251", 0))
    # 解析域名
    sockaddr=usocket.getaddrinfo('python.quectel.com', 80)[0][-1]
    print('start connect')
    # 建立连接
    sock.connect(sockaddr)
    # 向服务端发送消息
    ret=sock.send('GET /NEWS HTTP/1.1\r\nHost: python.quectel.com\r\nAccept-Encoding: deflate\r\nConnection: keep-alive\r\n\r\n')
    print('send %d bytes' % ret)
    #接收服务端消息
    data=sock.recv(1024)
    print('recv %s bytes:' % len(data))
    print(data.decode())

    # 关闭连接
    sock.close()

第二路为以太网络提供 LTE 网络服务,配置示例代码如下展示:


# 此处展示只是配置转发方向,具体以太网卡初始化配置请参考以太网卡应用指导章节。  
# nic 指具体网卡的网卡对象,当前我们默认网卡配置接口在具体网卡功能内部,后续会作为基础接口放置在网络配置模块下。

nic.set_default_NIC('10.11.129.252')

# 此时 WAN 网络下的终端设备可以通过 LTE 连接外部网络。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值