[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] Re: Qestion about the Xen network?
When I run the client from Dom0 (Fedora 8) to connect to server running in the PV Ubuntu (use the virbr0 as bridge). The command and data caught by tcpdump are: [root@localhost test1]# ./server 8081 root@ubuntu:~/test1# ./client 192.168.1.192 8081 agrv[1] = 192.168.1.192 Connect Error:No route to host [root@localhost ~]# tcpdump -i virbr0 -nn tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on virbr0, link-type EN10MB (Ethernet), capture size 96 bytes 23:49:18.581878 IP 192.168.122.187.37635 > 192.168.1.192.8081: S 2526621589:2526621589(0) win 5840 <mss 1460,sackOK,timestamp 4294946904 0,nop,wscale 4> 23:49:21.577743 IP 192.168.122.187.37635 > 192.168.1.192.8081: S 2526621589:2526621589(0) win 5840 <mss 1460,sackOK,timestamp 4294947204 0,nop,wscale 4> 23:49:21.607282 IP 192.168.122.1 > 192.168.122.187: ICMP host 192.168.1.192 unreachable, length 68 23:49:21.607296 IP 192.168.122.1 > 192.168.122.187: ICMP host 192.168.1.192 unreachable, length 68 23:49:23.577759 arp who-has 192.168.122.1 tell 192.168.122.187 23:49:23.577770 arp reply 192.168.122.1 is-at fe:ff:ff:ff:ff:ff My Dom0's Iptables configuration, server and client program list blew. But I can not find the Ubuntu PV's iptables configuration file. Maybe it doesn't have one. My Dom0 (fedora 8) iptables /etc/sysconfig/iptables # Firewall configuration written by system-config-firewall # Manual customization of this file is not recommended. *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] :RH-Firewall-1-INPUT - [0:0] -A INPUT -j RH-Firewall-1-INPUT -A RH-Firewall-1-INPUT -i lo -j ACCEPT -A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT -A RH-Firewall-1-INPUT -p 50 -j ACCEPT -A RH-Firewall-1-INPUT -p 51 -j ACCEPT -A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT -A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT -A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 2049 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 23 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 25 -j ACCEPT -A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -j REJECT --reject-with icmp-host-prohibited COMMIT The server and client program is as following. /******* (server.c) ************/ #include <sys/types.h> #include <sys/socket.h> #include <stdio.h> #include <netinet/in.h> #include <arpa/inet.h> #include <unistd.h> #include <errno.h> #include <string.h> int main(int argc, char *argv[]) { int sockfd,new_fd; struct sockaddr_in server_addr; struct sockaddr_in client_addr; int sin_size,portnumber; char hello[]="Hello! Are You Fine?\n"; if(argc!=2) { fprintf(stderr,"Usage:%s portnumber\a\n",argv[0]); return 1; } if( (portnumber = atoi(argv[1])) < 0 ) { fprintf(stderr,"Usage:%s portnumber\a\n",argv[0]); return 1; } /* create socket descripter */ if( (sockfd = socket(AF_INET,SOCK_STREAM, 0)) == -1 ) { fprintf(stderr,"Socket error:%s\n\a",strerror(errno)); return 1; } /* set sockaddr */ //bzero(&server_addr, sizeof(struct sockaddr_in)); memset(&server_addr, 0, sizeof(struct sockaddr_in)); server_addr.sin_family = AF_INET; server_addr.sin_addr.s_addr = htonl(INADDR_ANY); server_addr.sin_port = htons(portnumber); /* bind to a port */ if( bind(sockfd,(struct sockaddr *)(&server_addr),sizeof(struct sockaddr))==-1 ) { fprintf(stderr,"Bind error:%s\n\a",strerror(errno)); return 1; } /* listen to the port */ if( -1 == listen(sockfd,5) ) { fprintf(stderr,"Listen error:%s\n\a",strerror(errno)); return 1; } while(1) { /* accept */ sin_size=sizeof(struct sockaddr_in); //if( (new_fd = accept(sockfd, (struct sockaddr *)(&client_addr), &sin_size)) == -1) new_fd = accept(sockfd, (struct sockaddr *)(&client_addr), &sin_size); if( -1 == new_fd ) { fprintf(stderr,"Accept error:%s\n\a",strerror(errno)); return 1; } fprintf(stderr,"Server get connection from %s\n", inet_ntoa(client_addr.sin_addr)); if(write(new_fd,hello,strlen(hello))==-1) { fprintf(stderr,"Write Error:%s\n",strerror(errno)); return 1; } /* over */ close(new_fd); /* next */ } close(sockfd); return 0; } /******* client.c ************/ #include <sys/types.h> #include <sys/socket.h> #include <stdio.h> #include <netinet/in.h> #include <arpa/inet.h> #include <unistd.h> #include <errno.h> int main(int argc, char *argv[]) { int sockfd; char buffer[1024]; struct sockaddr_in server_addr; //struct hostent *host; char *ip; int portnumber,nbytes; if(argc!=3) { fprintf(stderr,"Usage:%s ip portnumber\a\n",argv[0]); return 1; } //if((host=gethostbyname(argv[1]))==NULL) printf("agrv[1] = %s\n",argv[1]); if( strlen(ip=argv[1])< 7 ) { fprintf(stderr,"Get Ip address error\n"); return 1; } if((portnumber=atoi(argv[2]))<0) { fprintf(stderr,"Usage:%s hostname portnumber\a\n",argv[0]); return 1; } /* create socket descripter */ if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1) { fprintf(stderr,"Socket Error:%s\a\n",strerror(errno)); return 1; } /* set the struct */ bzero(&server_addr, sizeof(server_addr)); server_addr.sin_family = AF_INET; server_addr.sin_port = htons(portnumber); //server_addr.sin_addr = *( (struct in_addr *)host->h_addr ); //server_addr.sin_addr.s_addr = inet_addr(host->h_addr); server_addr.sin_addr.s_addr = inet_addr(ip); //server_addr.sin_addr.s_addr = ((struct in_addr*)(host->h_addr))->s_addr; /* request to server */ if(connect(sockfd,(struct sockaddr *)(&server_addr),sizeof(struct sockaddr))==-1) { fprintf(stderr,"Connect Error:%s\a\n",strerror(errno)); return 1; } /* connected successfully */ if((nbytes=read(sockfd,buffer,1024))==-1) { fprintf(stderr,"Read Error:%s\n",strerror(errno)); return 1; } buffer[nbytes]='\0'; printf("I have received:%s\n",buffer); /* over */ close(sockfd); return 0; } 2010/10/22 Bei Guan <gbtju85@xxxxxxxxx>
Attachment:
server.c Attachment:
client.c _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |