$ ping www.google.com
ping : bad address 'www.google.com
現在各個版本的busybox都一樣, 網上有人講需要libnss_dns* ...檔案, 拷貝過去還是不能用,
手編2.6.21核心+手編1.5.1busybox+一堆deb包解壓縮出gcc, 乙個自定義的linux基本完成了,就差這麼乙個東西, hack源**...
最終發現getaddrinfo這個函式呼叫失敗,解決思路就是模擬dns協議把網域名稱發給dns伺服器,把網域名稱轉化為ip,然後再呼叫getaddrinfo,試驗成功。
1. 把下面這段**加入libbb/xconnect.c 的開頭。
2. 把xconnect.c的str2sockaddr函式中getaddrinfo改為hgetaddrinfo。
[cpp]view plain
copy
print?
#include
#include
#include
#include
#include
#define oops(msg)
#include
void fillip(char* buffer, const
char* ip);
char* name2ip(const
char* name);
/*** * head len: 12
* * query: ? + 4
* * total: strlen(query.buffer) + 16
* */
typedef
structquery;
}dns_req;
/** length of resp: 12 */
typedef
structresp;
}dns_res;
int hgetaddrinfo(const
char *node, const
char *service,
const
struct addrinfo *hints,
struct addrinfo **res)
char *get_dns_name()
pdns = pstr;
while(isdigit(*pstr) || (*pstr == '.') )
*pstr = '\0';
close(fd);
return pdns;
} char * name2ip(const
char *node)
index += ntohs(res.resp.len) + 12;
} return inet_ntoa(res.resp.addr);
} void fillip(char* buffer, const
char* ip)
else
} buffer[j] = i - j;
}
#include #include #include #include #include #define oops(msg)
#includevoid fillip(char* buffer, const char* ip);
char* name2ip(const char* name);
/** * * head len: 12
* * query: ? + 4
* * total: strlen(query.buffer) + 16
* */
typedef structquery;
}dns_req;
/** length of resp: 12 */
typedef structresp;
}dns_res;
int hgetaddrinfo(const char *node, const char *service,
const struct addrinfo *hints,
struct addrinfo **res)
char *get_dns_name()
pdns = pstr;
while(isdigit(*pstr) || (*pstr == '.') )
*pstr = '\0';
close(fd);
return pdns;
}char * name2ip(const char *node)
index += ntohs(res.resp.len) + 12;
}return inet_ntoa(res.resp.addr);
}void fillip(char* buffer, const char* ip)
else
}buffer[j] = i - j;
}
另外如果是出現:
則需要檢視一下預設閘道器有沒有設定,可以通route命令檢視
# route
kernel ip routing table
destination gateway genmask flags metric ref use iface
192.168.1.0 * 255.255.255.0 u 0 0 0 rausb0
# route
kernel ip routing table
destination gateway genmask flags metric ref use iface
192.168.1.0 * 255.255.255.0 u 0 0 0 rausb0
default 192.168.1.1 0.0.0.0 ug 0 0 0 rausb0
docker容器無法ping網域名稱
現象 容器內ping 114.114.114.114 正常 ping baidu.com 超時原因 dns錯誤不能進行網域名稱解析。方法一 容器目錄下新建resolv.conf檔案。vi resolv.conf寫入 search donot nameserver 8.8.8.8 nameserver...
centos下ping不通外網網域名稱
問題描述 解決方法 1.首先確定已經連線上路由器,並且路由器能夠訪問外網,可以通過訪問閘道器進行確定 root localhost ping 192.168.1.1 ping 192.168.1.1 192.168.1.1 56 84 bytes of data.64 bytes from 192....
ping 網域名稱 具體能做什麼
注意 ping 後面有個空格 在加上您的網域名稱 如圖 第 一 這個網域名稱解析到哪個伺服器的ip上了 第二 可以看見這個網域名稱是不是在正常的工作 第三 可以大概我訪問這個 的速度怎麼樣 裡 點1 的地方,可以看見這個網域名稱解析到哪個ip上了 有時候我們就遇到過網域名稱沒有把網域名稱解析到我們的...