我正在尝试更改tcp数据包的源IP地址 . 代码片段如下所示
bzero(&clientaddr,sizeof(clientaddr));
clientaddr.sin_family = AF_INET;
clientaddr.sin_addr.s_addr=inet_addr("172.16.2.10");
clientaddr.sin_port=htons(8080);
if (bind(sockfd, (struct sockaddr *) &clientaddr,
sizeof(clientaddr)) < 0)
{
perror("bind");
}
绑定一个特定的端口工作正常,但当我尝试绑定不同的IP地址时,绑定失败,出现错误
bind: Cannot assign requested address
我也尝试通过如下设置套接字选项,]
setsockopt (sockfd, SOL_IP, IP_TRANSPARENT, &n1, sizeof(int));*
然后它也失败了同样的错误 .
我怎么能改变我的源IP地址来源于我的PC . 请帮助我,它的代理申请 .
OS :Linux 2.6.37-tproxy#1 SMP Wed Apr 3 23:34:00 IST 2013 x86_64 x86_64 x86_64 GNU / Linux
提前致谢 .
2 回答
您将需要使用原始套接字并创建ip和tcp标头(您可以在其中设置所需的IP地址(欺骗) .
你可以查看linux手册页
man 7 raw
您只能
bind()
到您的计算机本地的IP地址,即由您的某个网络接口实现 .