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

目录
相关文章
|
8天前
|
JSON 运维 Ubuntu
Linux下如何使用Curl进行网络请求
希望这篇文章能帮助您在Linux下更好地使用Curl进行网络请求。如有疑问,请随时提问!
51 10
|
15天前
|
存储 监控 虚拟化
Hyper V上网优化:提升虚拟机网络速度
要优化Hyper-V虚拟机的网络速度,可从以下几方面入手:1. 优化虚拟交换机配置,如选择合适的交换机类型、启用SR-IOV、配置VLAN和QoS策略;2. 调整网络适配器设置,选择适当的适配器类型并启用VRQ等;3. 优化宿主机网络配置,更新网卡固件和驱动,启用硬件加速;4. 使用性能监视工具监控网络流量;5. 其他措施如启用硬件虚拟化、使用外部存储、配置NLB等。通过合理配置,可显著提升网络性能。
|
4月前
|
监控 安全 Linux
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景,包括 ping(测试连通性)、traceroute(跟踪路由路径)、netstat(显示网络连接信息)、nmap(网络扫描)、ifconfig 和 ip(网络接口配置)。掌握这些命令有助于高效诊断和解决网络问题,保障网络稳定运行。
174 2
|
1月前
|
消息中间件 Linux
Linux中的System V通信标准--共享内存、消息队列以及信号量
希望本文能帮助您更好地理解和应用System V IPC机制,构建高效的Linux应用程序。
135 48
|
14天前
|
监控 安全 网络协议
Hyper V上网实战:多虚拟机网络环境配置
在Hyper-V环境中配置多虚拟机网络以实现上网功能,需完成以下步骤:1. 确认Hyper-V安装与物理网络连接正常;2. 配置虚拟交换机(外部、内部或专用)以支持不同网络需求;3. 设置虚拟机网络适配器并关联对应虚拟交换机;4. 验证虚拟机网络连接状态;5. 根据场景需求优化多虚拟机网络环境。此外,还需注意网络隔离、性能监控及数据备份等事项,确保网络安全稳定运行。
|
22天前
|
安全 网络协议 网络安全
当虚拟机出现网络连接问题时,应该先检查Hyper-V的网卡连接配置
当虚拟机出现网络连接问题时,应首先检查Hyper-V的网卡配置。具体步骤包括:确认虚拟机运行状态、检查虚拟交换机类型和物理网卡连接、确保虚拟机网络适配器正确连接到虚拟交换机,并验证网络配置(IP地址等)。常见问题如虚拟交换机配置错误、网络适配器未连接或防火墙阻止连接,可通过重新配置或调整设置解决。必要时重启虚拟机和宿主机,查看事件日志或联系技术支持以进一步排查问题。
|
23天前
|
虚拟化 网络虚拟化 Windows
导入虚拟机到Hyper-V环境时,理解并配置网络适配器设置是确保网络通信的关键
在Hyper-V环境中,正确配置虚拟机的网络适配器是确保其网络通信的关键。需先启用Hyper-V功能并创建虚拟交换机。接着,在Hyper-V管理器中选择目标虚拟机,添加或配置网络适配器,选择合适的虚拟交换机(外部、内部或私有),并根据需求配置VLAN、MAC地址等选项。最后,启动虚拟机并验证网络连接,确保其能正常访问外部网络、与主机及其他虚拟机通信。常见问题包括无法访问外部网络或获取IP地址,需检查虚拟交换机和适配器设置。
|
1月前
|
消息中间件 Linux C++
c++ linux通过实现独立进程之间的通信和传递字符串 demo
的进程间通信机制,适用于父子进程之间的数据传输。希望本文能帮助您更好地理解和应用Linux管道,提升开发效率。 在实际开发中,除了管道,还可以根据具体需求选择消息队列、共享内存、套接字等其他进程间通信方
70 16
|
2月前
|
Linux 网络性能优化 网络安全
Linux(openwrt)下iptables+tc工具实现网络流量限速控制(QoS)
通过以上步骤,您可以在Linux(OpenWrt)系统中使用iptables和tc工具实现网络流量限速控制(QoS)。这种方法灵活且功能强大,可以帮助管理员有效管理网络带宽,确保关键业务的网络性能。希望本文能够为您提供有价值的参考。
215 28
|
2月前
|
网络协议 Unix Linux
深入解析:Linux网络配置工具ifconfig与ip命令的全面对比
虽然 `ifconfig`作为一个经典的网络配置工具,简单易用,但其功能已经不能满足现代网络配置的需求。相比之下,`ip`命令不仅功能全面,而且提供了一致且简洁的语法,适用于各种网络配置场景。因此,在实际使用中,推荐逐步过渡到 `ip`命令,以更好地适应现代网络管理需求。
75 11