Bridge网络模式下Linux虚拟机和主机进行通信

简介:

我的VMware版本是8.0.3。其他版本的设置应该大致相同。

1、注意我们的网络模式是Bridge

image

2、我们的网卡设置

image

image

3、目标虚拟机(Linux)的IP

image

4、我的主机的IP地址

image

5、网络调试助手的设置

image

6、上一段用来调试网络的代码。这段代码使用UDP进行通信,主要的作用是应答式的,一回一答。

复制代码
#include <sys/types.h>  
#include <sys/socket.h>  
#include <arpa/inet.h>  
#include <stdio.h>  
#define BUFLEN 255  
  
int main(int argc, char **argv)  
{  
    struct sockaddr_in peeraddr, localaddr;  
    int sockfd;  
    char recmsg[BUFLEN+1];  
    int socklen, n;  
  
    if(argc!=5){  
        printf("%s <dest IP address> <dest port> <source IP address> <source port>\n", argv[0]);  
        exit(0);  
    }  
  
    sockfd = socket(AF_INET, SOCK_DGRAM, 0);  
    if(sockfd<0){  
        printf("socket creating err in udptalk\n");  
        exit(1);  
    }  
     printf("IP address Checking!\n");  
    socklen = sizeof(struct sockaddr_in);  
    memset(&peeraddr, 0, socklen);  
    peeraddr.sin_family=AF_INET;  
    peeraddr.sin_port=htons(atoi(argv[2]));  
    if(inet_pton(AF_INET, argv[1], &peeraddr.sin_addr)<=0){  
        printf("Wrong dest IP address!\n");  
        exit(0);  
    }  
    memset(&localaddr, 0, socklen);  
    localaddr.sin_family=AF_INET;  
    if(inet_pton(AF_INET, argv[3], &localaddr.sin_addr)<=0){  
        printf("Wrong source IP address!\n");  
        exit(0);  
    }  
    printf("try to bind local address \n");  
    localaddr.sin_port=htons(atoi(argv[4]));  
    if(bind(sockfd, &localaddr, socklen)<0){   
        printf("bind local address err in udptalk!\n");  
        exit(2);  
    }  
 printf("Please Type Some Message To Server\n");    
    if(fgets(recmsg, BUFLEN, stdin) == NULL) {
        printf("get nothing exit\n"); 
        exit(0);
    }  
 //    printf("end of fgets \n");  
    if(sendto(sockfd, "HELLO", strlen("HELLO"), 0, &peeraddr, socklen)<0){  
        printf("sendto err in udptalk!\n");  
        exit(3);  
    }  
 printf("end of sendto \n");  
      printf("start of recv&send message loop!\n");  
    for(;;){  
        /*recv&send message loop*/  
        printf("Waiting For Message...!\n");  
        n = recvfrom(sockfd, recmsg, BUFLEN, 0, &peeraddr, &socklen);  
        if(n<0){  
            printf("recvfrom err in udptalk!\n");  
            exit(4);  
        }else{  
            recmsg[n]=0;  
            printf("peer:%s\n", recmsg);    
        }  
     printf("Please Type Some Message To Server\n");    
        if(fgets(recmsg, BUFLEN, stdin) == NULL) exit(0);  
        if(sendto(sockfd, recmsg, strlen(recmsg), 0, &peeraddr, socklen)<0){  
            printf("sendto err in udptalk!\n");  
            exit(3);  
        }  
    }  
}
复制代码

下图是以上代码运行的实例

其中./udptalk 192.168.41.24 2000 192.168.92.128 2000  是启动的命令。在应用这段代码的时候,把192.168.41.24替换成要接受消息的主机(destination)。第一个2000是目标端口。192.168.92.128是本机地址,第二个2000是发送端口。

image

 

注意事项:

你要确保默认网关是有效的,不然虚拟机和主机的通信就会失败。比如说你的网关设的是局域网内的一台主机,但是跟局域网相连的网线又被你拔了,这时候,虚拟机和主机的通信就会失败。

 

其实最好将虚拟机的所用的虚拟网卡的网关设成真实主机的地址,这样就不用再借助一台主机来充当网关。(如下图所示)

本文转自陈哈哈博客园博客,原文链接http://www.cnblogs.com/kissazi2/archive/2013/06/14/3136153.html如需转载请自行联系原作者


kissazi2

相关文章
|
1月前
|
NoSQL 关系型数据库 MySQL
《docker高级篇(大厂进阶):4.Docker网络》包括:是什么、常用基本命令、能干嘛、网络模式、docker平台架构图解
《docker高级篇(大厂进阶):4.Docker网络》包括:是什么、常用基本命令、能干嘛、网络模式、docker平台架构图解
188 56
《docker高级篇(大厂进阶):4.Docker网络》包括:是什么、常用基本命令、能干嘛、网络模式、docker平台架构图解
|
1天前
|
Linux 网络性能优化 网络安全
Linux(openwrt)下iptables+tc工具实现网络流量限速控制(QoS)
通过以上步骤,您可以在Linux(OpenWrt)系统中使用iptables和tc工具实现网络流量限速控制(QoS)。这种方法灵活且功能强大,可以帮助管理员有效管理网络带宽,确保关键业务的网络性能。希望本文能够为您提供有价值的参考。
42 27
|
24天前
|
Ubuntu Linux 开发者
Ubuntu20.04搭建嵌入式linux网络加载内核、设备树和根文件系统
使用上述U-Boot命令配置并启动嵌入式设备。如果配置正确,设备将通过TFTP加载内核和设备树,并通过NFS挂载根文件系统。
72 15
|
29天前
|
Ubuntu Unix Linux
Linux网络文件系统NFS:配置与管理指南
NFS 是 Linux 系统中常用的网络文件系统协议,通过配置和管理 NFS,可以实现跨网络的文件共享。本文详细介绍了 NFS 的安装、配置、管理和常见问题的解决方法,希望对您的工作有所帮助。通过正确配置和优化 NFS,可以显著提高文件共享的效率和安全性。
179 7
|
1月前
|
安全 Docker 容器
docker的默认网络模式有哪些
Docker 默认网络模式包括:1) bridge:默认模式,各容器分配独立IP,可通过名称或IP通信;2) host:容器与宿主机共享网络命名空间,性能最优但有安全风险;3) none:容器隔离无网络配置,适用于仅需本地通信的场景。
53 6
|
2月前
|
Docker 容器
【赵渝强老师】Docker的None网络模式
Docker容器在网络方面实现了逻辑隔离,提供了四种网络模式:bridge、container、host和none。其中,none模式下容器具有独立的网络命名空间,但不包含任何网络配置,仅能通过Local Loopback网卡(localhost或127.0.0.1)进行通信。适用于不希望容器接收任何网络流量或运行无需网络连接的特殊服务。
|
2月前
|
Docker 容器
【赵渝强老师】Docker的Host网络模式
Docker容器在网络环境中是隔离的,可通过配置不同网络模式(如bridge、container、host和none)实现容器间或与宿主机的网络通信。其中,host模式使容器与宿主机共享同一网络命名空间,提高性能但牺牲了网络隔离性。
|
2月前
|
Ubuntu 网络安全 虚拟化
VMware虚拟机ping不通原因排查及分析
下面以 VMware 虚拟机为例进行介绍。
1586 3
|
2月前
|
存储 SQL 数据库
虚拟化数据恢复—Vmware虚拟机误还原快照的数据恢复案例
虚拟化数据恢复环境: 一台虚拟机从物理机迁移到ESXI虚拟化平台,迁移完成后做了一个快照。虚拟机上运行了一个SQL Server数据库,记录了数年的数据。 ESXI虚拟化平台上有数十台虚拟机,EXSI虚拟化平台连接了一台EVA存储,所有的虚拟机都存放在EVA存储上。 虚拟化故障: 工组人员误操作将数年前迁移完成后做的快照还原了,也就意味着虚拟机状态还原到数年前,近几年数据都被删除了。 还原快照相当于删除数据,意味着部分存储空间会被释放。为了不让这部分释放的空间被重用,需要将连接到这台存储的所有虚拟机都关掉,需要将不能长时间宕机的虚拟机迁移到别的EXSI虚拟化平台上。
128 50