首页 > 其他分享 >0217-同网段跨主机通信

0217-同网段跨主机通信

时间:2024-08-12 09:15:51浏览次数:8  
标签:00 27 网段 0217 主机 08 let ff link

环境

  • Time 2022-11-20
  • VirtualBox 7.0.2
  • Rust 1.65.0
  • pnet 0.31.0
  • CentOS 7

前言

说明

参考:https://docs.rs/pnet_packet/latest/pnet_packet/index.html

目标

使用两台虚拟机,启动 CentOS 系统,然后进行跨主机的通信。

主机1网卡

[root@centos7 ~]# hostname
centos7
[root@centos7 ~]# ip link list
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
    link/ether 08:00:27:93:92:f2 brd ff:ff:ff:ff:ff:ff
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
    link/ether 08:00:27:16:d2:3f brd ff:ff:ff:ff:ff:ff
4: enp0s9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
    link/ether 08:00:27:de:8a:c8 brd ff:ff:ff:ff:ff:ff

主机2网卡

[root@centos7-1 ~]# ip link list
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
    link/ether 08:00:27:68:ff:42 brd ff:ff:ff:ff:ff:ff
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
    link/ether 08:00:27:36:b1:35 brd ff:ff:ff:ff:ff:ff
4: enp0s9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
    link/ether 08:00:27:92:6f:8a brd ff:ff:ff:ff:ff:ff
[root@centos7-1 ~]# hostname
centos7-1

后面将从主机1的 enp0s8 发送到主机2的 enp0s9 网卡。

reader.rs

use pnet_datalink::{channel, Channel};
fn main() {
    let interface = pnet_datalink::interfaces()
        .into_iter()
        .find(|iface| iface.name == "enp0s9")
        .unwrap();

    let channel = channel(&interface, Default::default());
    let (mut _sender, mut reader) = match channel {
        Ok(Channel::Ethernet(tx, rx)) => (tx, rx),
        _ => panic!("Not a valid channel returned"),
    };

    loop {
        let buf = reader.next().unwrap();
        println!("{:?}", buf);
    }
}

sender.rs

use pnet_datalink::{channel, Channel};
use pnet_packet::ethernet::{EtherTypes, MutableEthernetPacket};

fn main() {
    let interface = pnet_datalink::interfaces()
        .into_iter()
        .find(|iface| iface.name == "enp0s8")
        .unwrap();

    let channel = channel(&interface, Default::default());
    let (mut sender, mut _reader) = match channel {
        Ok(Channel::Ethernet(tx, rx)) => (tx, rx),
        _ => panic!("Not a valid channel returned"),
    };

    let mut buffer = [0; 14];
    let mut packet = MutableEthernetPacket::new(&mut buffer).unwrap();

    // 这个是 enp0s9 的 MAC 地址
    let dest = "08:00:27:de:8a:c8".parse().unwrap();
    packet.set_destination(dest);
    packet.set_source(interface.mac.unwrap());
    packet.set_ethertype(EtherTypes::Ipv4);

    sender.send_to(&buffer, None).unwrap().unwrap();
}

enp0s8 的抓包

20:02:53.244715 08:00:27:16:d2:3f > 08:00:27:92:6f:8a, ethertype IPv4 (0x0800), length 14: [|ip]

enp0s9 的抓包

20:02:52.545920 08:00:27:16:d2:3f > 08:00:27:92:6f:8a, ethertype IPv4 (0x0800), length 60: IP0

总结

在数据链路层上,通过 MAC 地址,实现了两台主机之间的通信。

附录

标签:00,27,网段,0217,主机,08,let,ff,link
From: https://www.cnblogs.com/jiangbo4444/p/18354335

相关文章

  • kvm主机快照
    #默认是以时间戳命名快照,没有备注我们不好区别virshsnapshot-createdomain-name查看快照[root@kafka-1ssh]#virshsnapshot-listauto-clone2-bridge-vmNameCreationTimeState----------------------------------------------------......
  • NVMe主机控制器,AMBA-AXI4-Stream接口,Xilinx FPGA,介绍手册
    NVMeA4SHostControllerIP1     介绍NVMeA4SHostControllerIP可以连接高速存储PCIeSSD,无需CPU和外部存储器,自动加速处理所有的NVMe协议命令,具备独立的数据写入AXI4-Stream/FIFO接口和数据读取AXI4-Stream/FIFO接口,适合于高性能、顺序访问的应用,比如视频记录、信号......
  • NVMe主机控制器,AMBA-AXI4接口,Xilinx FPGA,介绍手册
    NVMeAXI4HostControllerIP1     介绍NVMeAXI4HostControllerIP可以连接高速存储PCIeSSD,无需CPU,自动加速处理所有的NVMe协议命令,具备独立的数据写入和读取AXI4接口,不但适用高性能、顺序访问的应用,也适用于随机访问的应用,同时结合外部存储器(比如DDR),使得Host端的数......
  • Docker容器时间与宿主机不一致/宿主机时间不同步校验
    一、Docker容器时间与宿主机不一致前言如果在启动Docker容器的过程中没有单独配置localtime,很可能造成Docker容器时间与主机时间不一致的情况,比如UTC和CST相差8小时,换句话来说就是容器时间与北京时间相差8个小时。问题描述问题:容器时间与北京时间相差8个小时   #查看主机时间......
  • 云图说|一图告诉你主机安全的运维效率如何提升超出预期
    阅识风云是华为云信息大咖,擅长将复杂信息多元化呈现,其出品的一张图(云图说)、深入浅出的博文(云小课)或短视频(云视厅)总有一款能让您快速上手华为云。更多精彩内容请单击此处。摘要: 华为云主机安全服务7月新版本上线啦!本次新增月度运营报告、病毒查杀按次购买、容器审计以及容......
  • 第15天:信息打点—主机架构&蜜罐识别&WAF识别&&端口扫描&协议识别&服务安全
    时间轴主要内容1、端口扫描-应用&协议2、WAF识别-分类&识别3、蜜罐识别-分类&识别解决:1、Web服务器&应用服务器差异性2、WAF防火墙&安全防护&识别技术3、蜜罐平台&安全防护&识别技术端口服务及渗透......
  • 免费领取云主机,在华为开发者空间玩转YOLOV3
    摘要:YOLOv3(YouOnlyLookOnceversion3)是一种高效的目标检测算法,旨在实现快速而准确的对象检测。本文分享自华为云社区《华为云开发者云主机体验【玩转华为云】》,作者:DS小龙哥。一、前言云主机是华为云为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具体系,让每......
  • 如何在 java 或 python 中使用 HTTP(S) 解决无法解析的主机名或无法识别的名称错误?
    我尝试以编程方式访问网站的信息,但在Java和Python上都无法解析主机名。如果我指定IP地址,则会将错误更改为TLSV1_UNRECOGNIZED_NAME。不过,这个网站无需任何额外的工作就可以通过任何浏览器解决。我在这里浏览了很多潜在的解决方案,但对于Python,它说这个问题应该在2.7......
  • 随意扩大主机子网掩码范围可能造成的后果
    文章目录扩大子网掩码的影响和考虑1.网络安全和隔离性降低2.广播域增大3.IP地址管理复杂化4.路由复杂性5.策略和规则的适应性6.网络性能总结扩大子网掩码的影响和考虑1.网络安全和隔离性降低例子:考虑一个大型企业,它的财务部门和人力资源部门原本各自位于......
  • 连载|浅谈红队中的权限维持(六)-Linux 主机后门与Linux 隐藏文件
    本文来源无问社区,更多实战内容,渗透思路可前往查看http://www.wwlib.cn/index.php/artread/artid/11584.html0x01Linux主机后门1、添加用户一句话添加用户useraddtest;echo-e"123456n123456n"|passwdtest或者使用openssluseradd-popensslpasswd-1-salt'salt'12......