linuxvlan虚拟接口如何和物理接口通

linuxvlan虚拟接口如何和物理接口通,第1张

在 Linux 系统中,可以使用 VLAN 虚拟接口物理接口进行通信。下面是一些具体的步骤:

1. 在物理接口上配置 VLAN 标签:首先需要在物理接口(例如 eth0)上配置 VLAN 标签。可以使用 vconfig 命令创建虚拟接口,并指定物理接口和 VLAN ID。例如,使用如下命令创建 VLAN ID 100 的虚拟接口:

```

sudo vconfig add eth0 100

```

2. 配置虚拟接口 IP 地址:配置 VLAN 虚拟接口的 IP 地址,使用如下命令,例如将 VLAN ID 100 的虚拟接口的 IP 地址设置为 192.168.1.2:

```

sudo ifconfig eth0.100 192.168.1.2 up

```

3. 配置物理接口 IP 地址:对于物理接口 (如 eth0),也要配置 IP 地址。例如,将物理接口的 IP 地址设置为 192.168.1.1:

```

sudo ifconfig eth0 192.168.1.1 up

```

4. 配置路由规则:为了让 VLAN 虚拟接口能够访问其他网络,还需要添加一条相应的路由规则。例如,如果需要访问网关为 192.168.1.254 的网络,则可以使用下面的命令添加路由规则:

```

sudo route add -net 192.168.1.0/24 gw 192.168.1.254 dev eth0.100

```

这样配置后,VLAN 虚拟接口就可以和物理接口通信了。

其实经常在抓包的时候发现这个问题,今天才好奇的去Google了一下

简单的总结下,就是wireshark抓到的数据包提示Checksum错误,仅仅是因为它截获到的是 *** 作系统胡乱填充的checksum,而千兆网卡在开启Checksum

Offload之后,会把这些计算的工作交给网卡去做,网卡最后还是会计算出正确的checksum并且发出去的。

这几天在分析通讯报文的过程中发现WireShark里显示本机发出去的一些数据包Bad Checksum,并提示 maybe

caused by “TCP checksum offload?”

Google了一下,发现这是网卡的一项功能,可以替代系统的TCP/IP协议栈来计算TCP包的校验和。在windows系统中的Checksum

Offload过程如下:如果网卡支持,在高级选项里可以设置Checksum Offload是否对Rx或Tx有效,也可以设置为对两者都有效。

对于Tx,设置Checksum

Offload有效之后,Windows的传输层将随机填充TCP校验和,因此在本机上抓取的数据包是Bad

CheckSum。然后,网卡会自动计算正确的校验码然后发送,因此对方收到的仍然是正确的TCP包。

对于Rx,设置Checksum

Offload有效之后,网卡在接收数据时,会填充一个NDIS_TCP_IP_CHECKSUM_PACKET_INFO

结构并设置标志位;如果由于某种原因失败,则不设置标志位,由Windows里的TCP/IP协议栈来完成数据校验。

CheckSumOffload实际上是将传输层的一部分工作交给了硬件完成,以节约系统的CPU资源。微软的测试表明它可以最多节约30%的CPU资源。

IBM里AIX的文档

则指出:对于PCI接口的千兆网卡来说还不如让400Mhz以上的CPU来计算校验和,而PCI-X的千兆网卡启用此项后可以达到线路速度,从而节约CPU资源。

解决方法:windows下可以再网卡的高级属性里将checksum offload属性改为none。

linux下使用ethtool命令关闭checksum offload,具体命令如下:#ethtool-K eth0 tx offrx off


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/7258906.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-03
下一篇2023-04-03

发表评论

登录后才能评论

评论列表(0条)

    保存