亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
最近訪(fǎng)問(wèn)板塊 發(fā)新帖
查看: 2244 | 回復(fù): 4
打印 上一主題 下一主題

[網(wǎng)絡(luò)管理] DNS解析中請(qǐng)求和回應(yīng)地址不同--求教 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2011-12-21 19:23 |只看該作者 |倒序?yàn)g覽
    我在linux下調(diào)用域名解析函數(shù)返回失。
   抓包后分析  向DNS1發(fā)送請(qǐng)求后,回應(yīng)解析后地址的并不是DNS1的地址,而是另外一個(gè)地址 運(yùn)營(yíng)商說(shuō)是二級(jí)地址,并且是不固定的;
  我這里地址是10.240.44.184   請(qǐng)求的DNS地址是125.210.177.185   回應(yīng)解析包的地址是 125.210.177.146
  另外我ping 125.210.177.185   也是125.210.177.146給我回應(yīng)
    這種情況有什么方法可以 正常解析域名呢
求大俠們指點(diǎn)一下啊

論壇徽章:
0
2 [報(bào)告]
發(fā)表于 2011-12-21 22:25 |只看該作者
我現(xiàn)在的想法是 用socket添一個(gè)抓包程序 向DNS 125.210.177.185 發(fā)送請(qǐng)求之后,解析所有收到的UDP包,然后過(guò)濾掉125.210.177.XXX之外的包,
解析這個(gè)包的內(nèi)容,得到解析后的地址;
我從網(wǎng)上找到的抓包代碼

#include <stdio.h>
#include <stdlib.h>
#include <sys/socket.h>  
#include <netinet/in.h>  
#include <arpa/inet.h>   
#include <netinet/ip.h>  
#include <string.h>  
#include <netdb.h>  
#include <netinet/tcp.h>  
#include <netinet/udp.h>
#include <stdlib.h>  
#include <unistd.h>  
#include <signal.h>  
#include <net/if.h>  
#include <sys/ioctl.h>  
#include <sys/stat.h>  
#include <fcntl.h>  
#include <linux/if_ether.h>
#include <net/ethernet.h>


void die(char *why, int n)  
{  
        perror(why);  
        exit(n);  
}

int do_promisc(char *nif, int sock )  
{  
        struct ifreq ifr;  

        strncpy(ifr.ifr_name, nif,strlen(nif)+1);  
        if((ioctl(sock, SIOCGIFFLAGS, &ifr) == -1))  //獲得flag
        {         
                die("ioctl", 2);  
        }  

        ifr.ifr_flags |= IFF_PROMISC;  //重置flag標(biāo)志

        if(ioctl(sock, SIOCSIFFLAGS, &ifr) == -1 )  //改變模式
        {
                die("ioctl", 3);  
        }  
}  
//修改網(wǎng)卡成PROMISC(混雜)模式

char buf[40960];

int catch_packet_func()  
{  
        struct sockaddr_in addr;
        struct ether_header *peth;
        struct iphdr *pip;         
        struct tcphdr *ptcp;
        struct udphdr *pudp;

        char mac[16];
        int i,sock, r, len;         
        char *data;
        char *ptemp;
        char ss[32],dd[32];

        if((sock = socket(AF_PACKET, SOCK_RAW, htons(ETH_P_ALL))) == -1)  //建立socket
        //man socket可以看到上面幾個(gè)宏的意思
        {
                die("socket", 1);  
        }

        do_promisc("eth0", sock);    //eth0為網(wǎng)卡名稱(chēng)

        system("ifconfig";

        for(;  
        {  
                len = sizeof(addr);

                r = recvfrom(sock,(char *)buf,sizeof(buf), 0, (struct sockaddr *)&addr,&len);  
                buf[r] = 0;  
                ptemp = buf;
                peth = (struct ether_header *)ptemp;

                ptemp += sizeof(struct ether_header); //指針后移eth頭的長(zhǎng)度
                pip = (struct ip *)ptemp; //pip指向ip層的包頭

                ptemp += sizeof(struct ip);//指針后移ip頭的長(zhǎng)度

                switch(pip->protocol)   //根據(jù)不同協(xié)議判斷指針類(lèi)型
                {
                        case IPPROTO_TCP:
                                ptcp = (struct tcphdr *)ptemp;       //ptcp指向tcp頭部
                                printf("jcwang||TCP pkt :FORM:[%s]:[%d]\n",inet_ntoa(*(struct in_addr*)&(pip->saddr)),ntohs(ptcp->source));
                                printf("jcwang||TCP pkt :TO:[%s]:[%d]\n",inet_ntoa(*(struct in_addr*)&(pip->daddr)),ntohs(ptcp->dest));

                                break;

                        case IPPROTO_UDP:
                                pudp = (struct udphdr *)ptemp;      //ptcp指向udp頭部  
                                printf("jcwang||UDP pkt:\n len:%d payload len:%d from %s:%d to %s:%d\n",  r,  ntohs(pudp->len),
                                        inet_ntoa(*(struct in_addr*)&(pip->saddr)),
                                        ntohs(pudp->source), inet_ntoa(*(struct in_addr*)&(pip->daddr)), ntohs(pudp->dest) );  
       
                                break;

                        case  IPPROTO_ICMP:
                                printf("jcwang||ICMP pkt:%s\n",inet_ntoa(*(struct in_addr*)&(pip->saddr)));
                                break;

                        case  IPPROTO_IGMP:
                                printf("jcwang||IGMP pkt:\n";
                                break;

                        default:
                                printf("jcwang||Unkown pkt, protocl:%d\n", pip->protocol);
                                break;
                } //end switch

                perror("dump";
        }

}

但是 我看程序的打印   只有125.210.177.185  :53端口到 125.210.177.185 :XX端口的包  
沒(méi)有看到10.240.44.184到125.210.177.185              和125.210.177.146到10.240.44.184的包
是不是底層給過(guò)濾了  這端程序如何修改才能抓到DNS包

  在線(xiàn)等啊  有木有大俠來(lái)指教哇

論壇徽章:
34
亥豬
日期:2015-03-20 13:55:11戌狗
日期:2015-03-20 13:57:01酉雞
日期:2015-03-20 14:03:56未羊
日期:2015-03-20 14:18:30子鼠
日期:2015-03-20 14:20:14丑牛
日期:2015-03-20 14:20:31辰龍
日期:2015-03-20 14:35:34巳蛇
日期:2015-03-20 14:35:56操作系統(tǒng)版塊每日發(fā)帖之星
日期:2015-11-06 06:20:00操作系統(tǒng)版塊每日發(fā)帖之星
日期:2015-11-08 06:20:00操作系統(tǒng)版塊每日發(fā)帖之星
日期:2015-11-19 06:20:00黃金圣斗士
日期:2015-11-24 10:43:13
3 [報(bào)告]
發(fā)表于 2011-12-21 22:26 |只看該作者
dns本來(lái)就分 迭代和遞歸 啊

論壇徽章:
0
4 [報(bào)告]
發(fā)表于 2011-12-21 22:34 |只看該作者
但是 我自動(dòng)獲取的DNS是125.210.177.185  調(diào)用linux的gethostbyname()函數(shù)返回是失敗的

論壇徽章:
0
5 [報(bào)告]
發(fā)表于 2011-12-21 22:51 |只看該作者
繼續(xù)請(qǐng)教 如果要收到所有發(fā)到我這兒的UDP包  上面的代碼該怎么改呢
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專(zhuān)區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP