多网卡通讯配置和测试

功能需求

要测试两台电脑协作的一个项目,需要在两台电脑间进行通讯,测试工具是A.我的笔记本电脑,有无线网卡和有线网卡;B.一台TX2的工控机,有无线网卡和两个有线网卡,其中一个网口和PLC通讯,另一个和我的电脑通讯。

连接测试

需要先将两台电脑用网线连接起来并ping通。实现这一目标主要需要设置好网络参数,也就是通讯双方要有自己的名字IP,并且知道对方和自己处在一个网络中(子网掩码),也知道通讯的节点(网关)。
最常用的内网网段是192.168.0.1~255, 工控机连接PLC的网段就是这个:工控机用的固定ip是192.168.0.100,PLC用的固定ip是192.168.0.102,子网掩码255.255.255.0,也就是说前三(二进制就是24位)位192.168.0是一样的,
才会认为是在同一个网络中,网关是192.168.0.1,这个“同一个网络”所用的通讯接口就是这个网关。
用网线连接笔记本和工控机,随意设了一个ip,笔记本是192.168.0.60,工控机是192.168.0.66,发现ping不通,思考了一下之后明白了,192.168.0的网段已经被另一个网口占用了,这个网口需要开辟一个新的网段才能用。
查到问题就好办了,把两个都设到192.168.2.xxx网段,同样用255.255.255.0的掩码,这样工控机就能区分出来192.168.0来自一个网口,192.168.2是另一个网口的。设置好之后笔记本的网络信息如下:

enp0s31f6 Link encap:以太网  硬件地址 e8:6a:64:xx:xx:xx  
          inet 地址:192.168.2.1  广播:192.168.2.255  掩码:255.255.255.0
          inet6 地址: fe80::3429:xxxx:xxxx:xxxx/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  跃点数:1
          接收数据包:395 错误:0 丢弃:0 过载:0 帧数:0
          发送数据包:2877 错误:0 丢弃:0 过载:0 载波:0
          碰撞:0 发送队列长度:1000 
          接收字节:82992 (82.9 KB)  发送字节:255402 (255.4 KB)
          中断:16 Memory:e9200000-e9220000 

这样就可以互相ping到了。

进阶需求和测试

完成上面一步后,又出现了新的问题,笔记本有有线网卡和无线网卡,默认有线的优先级是高于无线的,所以有线插上之后,无线虽然连着,但起不到数据传输的作用了,这样我就上不了网。
所有还需要进一步对网络访问加以区分
Linux下使用route查看路由表:

dane@ThinkPad:~ $ route
内核 IP 路由表
目标             网关            子网掩码        标志    跃点  引用      使用 接口
Destination     Gateway         Genmask      Flags Metric  Ref      Use  Iface
default         192.168.2.1     0.0.0.0         UG    100    0        0 enp0s31f6
default         172.16.18.254   0.0.0.0         UG    600    0        0 wlp3s0
link-local      *               255.255.0.0     U     1000   0        0 wlp3s0
172.16.18.0     *               255.255.255.0   U     600    0        0 wlp3s0
192.168.2.0     *               255.255.255.0   U     100    0        0 enp0s31f6

该ip路由表上有8个字段,Destination是表示目标ip段,它和Genmask(掩码)形成一个ip段。
当一个ip落在该目标ip段时,便找到了路由的出口,该出口就是一个网关(Gateway).
当然,还有一种情况就是,当一个ip落在两个目标ip段时,此时会根据跳跃点(Metric)来判断网关。
当一个ip不在目标ip段时,此时选择的是默认ip段(default).当存在一个多网卡的计算机时,可以给不同的网卡增加不同的路由信息。

举例:增加一条路由,目标ip段时133.40.16.0–133.40.16.255, 网卡是eth0.跳跃点是Metric 1,网关:133.40.16.0。

route add -net 133.40.16.0 netmask 255.255.255.0 gw 133.40.16.0 Metric 1 dev eth0

有效方案

尝试了很多方案之后(列在后面),找到了最适合的方法。ubuntu 16默认有两个网络管理设备,network 和 NetworkManager,这两者是不共生的,为了简便,
一般都用后者进行网络管理。对它的网络进行设置,只要在对应的配置文件中修改即可。管理员权限打开,参考link
中的命令进行参数修改。它与network的管理方式的级别关系是:
首先,当系统内没有第三方网络管理工具(比如nm)时,系统默认使用interfaces文件内的参数进行网络配置。(就像ubuntu Server版本一样)
接着,当系统内安装了 nm之后,nm默认接管了系统的网络配置,使用nm 自己的网络配置参数来进行配置。
但是,如果用户在安装nm之后(Desktop版本默认安装了nm),自己手动修改了interfaces 文件,那nm 就自动停止对系统网络的管理,系统改使用interfaces 文件内的参数进行网络配置。
此时,再去修改nm 内的参数,不影响系统实际的网络配置。若要让nm 内的配置生效,必须重新启用nm 接管系统的网络配置。

cd /etc/NetworkManager/system-connections/

在这个文件夹里可以看到所有的网络,比如我的无线网叫Wireless,网线连着的是wire,分别用gedit编辑这两个网络的配置信息:
打开文件后找到[IPV4]部分,增加route-metric如下:

Wireless 无线网络设置

[ipv4]
dns-search=
method=auto
route-metric=15

wire 有线网络设置,根据自己情况设置好ip和网关即可,metric默认会为100

[ipv4]
address1=192.168.2.1/24,192.168.2.1
gateway=192.168.2.1
dns-search=
method=manual

设置好以后,需要重启网络并清理缓存:

# 重启网络并刷新配置
systemctl stop network-manager  #停用NM
sudo pkill dhclient             #停用dh
sudo ip addr flush dev eth0     #eth0 需要根据实际的网卡进行更改,我的就是wlp3s0
systemctl start network-manager #重启

重启完成后,再次查看路由表,会发现无线网metric变成了15,排在有线之前,可以正常访问外网了
而有线网有网段的限制,还是可以正常访问与之相连的有线网络的。

dane@ThinkPad:~ $ route -n
内核 IP 路由表
目标            网关            子网掩码        标志  跃点   引用  使用 接口
0.0.0.0         172.16.18.254   0.0.0.0         UG    15     0        0 wlp3s0
0.0.0.0         192.168.2.1     0.0.0.0         UG    100    0        0 enp0s31f6
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 enp0s31f6
172.16.18.0     0.0.0.0         255.255.255.0   U     15     0        0 wlp3s0
192.168.2.0     0.0.0.0         255.255.255.0   U     100    0        0 enp0s31f6

尝试过不好用的方法

方法1. 临时修改路由网络,把原来默认的删掉,再加上想用的:

sudo route del -net 0.0.0.0
sudo route del -net 0.0.0.0 gw 192.168.2.1
sudo route add -net 192.168.2.0 netmask 255.255.255.0 gw 192.168.2.1 metric 20 dev enp0s31f6
sudo route add -net 0.0.0.0 netmask 0.0.0.0 gw 172.16.18.254 metric 50 dev wlp3s0

这样做有两个缺陷,一是重新插拔会刷新覆盖,二是最后一条添加出来和默认值又几乎一样了。总之这是个指标不治本的方式,临时用一下行,长期肯定不行。

方案2.(不可用,因为通常用NM管理,这两者是冲突的)在ubuntu中的路径是 /etc/network/interfaces,

# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback

# 新增下面的内容:
auto wlp3s0
  iface wlp3s0 inet dhcp 
  metric 10

Ref

route-detail
Linux下配置多网卡多网关

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
很抱歉,作为一个语言模型,我无法直接为您完成基于以太网通讯的硬件组态和通讯测试。不过,我可以为您提供一些基本的知识和指导,希望对您有所帮助。 基于以太网通讯的硬件组态通常需要以下步骤: 1. 选择适合的硬件设备,例如以太网交换机、网卡等,根据实际需求进行选择。 2. 连接硬件设备,根据实际情况进行布线和连接。通常需要将不同的设备连接到不同的端口,并在交换机上设置 VLAN 和端口配置等参数。 3. 进行设备组态和配置,例如设置 IP 地址、子网掩码、网关等网络参数,配置端口和 VLAN 等参数。 4. 进行通讯测试测试设备之间的通讯是否正常。通常可以使用 ping 命令或者网络测试工具进行测试。 在进行基于以太网通讯的硬件组态和通讯测试时,需要注意以下几点: 1. 确认设备的兼容性和支持的通讯协议,选择适合的硬件设备和通讯协议。 2. 进行正确的设备组态和配置,确保设备之间的网络参数和通讯参数设置正确。 3. 进行详细的测试计划和测试步骤,测试不同场景下设备之间的通讯是否正常。 4. 关注测试结果和日志信息,及时发现和处理问题。 总的来说,基于以太网通讯的硬件组态和通讯测试需要掌握一定的理论知识和实际操作经验,如果您需要进行相关工作,建议您寻求专业人士的帮助或者参考相关的书籍和资料。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值