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

 

注意事项:

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

 

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

 

 


作者:kissazi2 
出处:http://www.cnblogs.com/kissazi2/ 
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

转载:http://www.cnblogs.com/kissazi2/archive/2013/06/14/3136153.html

目录
相关文章
|
1月前
|
监控 安全 Linux
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景,包括 ping(测试连通性)、traceroute(跟踪路由路径)、netstat(显示网络连接信息)、nmap(网络扫描)、ifconfig 和 ip(网络接口配置)。掌握这些命令有助于高效诊断和解决网络问题,保障网络稳定运行。
81 2
|
3月前
|
安全 Linux 网络安全
Web安全-Linux网络协议
Web安全-Linux网络协议
80 4
|
1天前
|
Prometheus 监控 Cloud Native
Prometheus+Grafana监控Linux主机
通过本文的步骤,我们成功地在 Linux 主机上使用 Prometheus 和 Grafana 进行了监控配置。具体包括安装 Prometheus 和 Node Exporter,配置 Grafana 数据源,并导入预设的仪表盘来展示监控数据。通过这种方式,可以轻松实现对 Linux 主机的系统指标监控,帮助及时发现和处理潜在问题。
20 7
|
3天前
|
Ubuntu Unix Linux
Linux网络文件系统NFS:配置与管理指南
NFS 是 Linux 系统中常用的网络文件系统协议,通过配置和管理 NFS,可以实现跨网络的文件共享。本文详细介绍了 NFS 的安装、配置、管理和常见问题的解决方法,希望对您的工作有所帮助。通过正确配置和优化 NFS,可以显著提高文件共享的效率和安全性。
57 7
|
2月前
|
运维 监控 网络协议
|
2月前
|
Ubuntu Linux 虚拟化
Linux虚拟机网络配置
【10月更文挑战第25天】在 Linux 虚拟机中,网络配置是实现虚拟机与外部网络通信的关键步骤。本文介绍了四种常见的网络配置方式:桥接模式、NAT 模式、仅主机模式和自定义网络模式,每种模式都详细说明了其原理和配置步骤。通过这些配置,用户可以根据实际需求选择合适的网络模式,确保虚拟机能够顺利地进行网络通信。
120 1
|
2月前
|
Linux 网络安全
Linux虚拟机与主机和Xshell的连接问题解决
Linux虚拟机与主机和Xshell的连接问题解决
108 1
|
2月前
|
网络协议 安全 Ubuntu
Linux中网络连接问题
【10月更文挑战第3天】
40 1
|
2月前
|
网络协议 Linux 网络性能优化
Linux C/C++之TCP / UDP通信
这篇文章详细介绍了Linux下C/C++语言实现TCP和UDP通信的方法,包括网络基础、通信模型、编程示例以及TCP和UDP的优缺点比较。
56 0
Linux C/C++之TCP / UDP通信
|
2月前
|
虚拟化 网络虚拟化 网络架构
虚拟机 VMware Workstation 16 PRO 的网络配置
虚拟机 VMware Workstation 16 PRO 的网络配置
95 2