标签: ip-address

在 POSIX C 中获取自己的外部 IP 地址

我希望获得我自己的 IP 地址,以便将该信息发布到对等网络中。在 POSIX/C 中,我们有getaddrinfo(NULL, ...),但这似乎总是返回INADDR_ANYor INADDR_LOOPBACK,这对我来说没用。

有什么建议?

c networking posix ip-address

3
推荐指数
1
解决办法
3783
查看次数

将子网的特定 IPv6 地址分配给 cURL

我已经通过/etc/network/interfaces(分发是 Debian Squeeze)为我的专用主机分配了一个 /64 IPv6 子网

iface eth0 inet6 static
  address 2a01:4f8:XXXX:YYYY::2
  netmask 64
  gateway fe80::1
Run Code Online (Sandbox Code Playgroud)

现在,我想让 cURL (PHP 5.3.22-1~dotdeb.0) 使用该子网的一个特定 IP 地址 pe,2a01:4f8:XXXX:YYYY::3因此我的代码如下所示:

curl_setopt($this->_curl, CURLOPT_INTERFACE, '2a01:4f8:XXXX:YYYY::3');
curl_setopt($this->_curl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V6);
Run Code Online (Sandbox Code Playgroud)

跑步时curl_exec我得到bind failed with errno 99: Cannot assign requested address. 为什么会发生这种情况?在将每个 IPv6 地址定义为 /128 时/etc/network/interfaces,例如:

iface eth0 inet6 static
  address 2a01:4f8:XXXX:YYYY::2
  netmask 128
  up ip -6 addr add 2a01:4f8:XXXX:YYYY::3/128 dev eth0 preferred_lft 0
  gateway fe80::1
Run Code Online (Sandbox Code Playgroud)

那么一切都很好,cURL 使用::3IP。但是我的意图是使用我子网中的大量 IP(真的很多 IP),因此这是不切实际的。有谁知道为什么 …

php curl ip-address ipv6 subnet

3
推荐指数
1
解决办法
2735
查看次数

从Java中的特定IP生成HttpRequest

我正在使用Apache HttpClient生成Post请求并提交数据.由于远程应用程序在提交数据的用户的IP地址上进行中继,因此我想发送用户指定IP地址的发布请求.

我该如何配置?

public static void loginUser(String username, String password, String ip) throws Exception{
      try {
            HttpClient client = new DefaultHttpClient();
            HttpPost httppost = new HttpPost("http://login.myapp.com/");

            // Request parameters and other properties.
            List<NameValuePair> params = new ArrayList<NameValuePair>(2);
            params.add(new BasicNameValuePair("username",username));
            params.add(new BasicNameValuePair("password", password));
            httppost.setEntity(new UrlEncodedFormEntity(params, "UTF-8"));

            // Execute and get the response.
            HttpResponse response = client.execute(httppost);
            HttpEntity entity = response.getEntity();

            if (entity != null) {
                //etc....
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
Run Code Online (Sandbox Code Playgroud)

编辑:为避免混淆,

我想在httprequest标头中包含自定义IP地址,以便最终应用程序知道,[来自我的应用程序]的此请求来自自定义IP地址,但不是来自我的应用程序运行的IP地址

假设我的应用程序在服务器上运行,IP地址为"1.1.1.0".现在我的用户正在使用"test","test","199.199.199.0"执行loginUser方法.现在,从应用程序到目标URL的HTTP请求应该是从"199.199.199.0"发送的

java http ip-address spoofing apache-httpclient-4.x

3
推荐指数
1
解决办法
8993
查看次数

在 Python 中将 IPv4 地址转换为十六进制 IPv6 地址

问:编写一个程序,提示用户输入 IP 地址,然后将其转换为以 10 为基数的二进制和十六进制值。然后程序将十六进制值转换为 RFC3056 IPv6 6to4 地址。

我有基本的 10 和二进制部分工作,但我似乎无法理解十六进制部分。可以以某种方式使用格式字符串方法来完成同样的事情吗?或者在这种情况下我需要导入 ipaddress 模块吗?

#!/usr/bin/python3

ip_address = input("Please enter a dot decimal IP Address: ")

"""This part converts to base 10"""
ListA = ip_address.split(".")
ListA = list(map(int, ListA))
ListA = ListA[0]*(256**3) + ListA[1]*(256**2) + ListA[2]*(256**1) + ListA[3]
print("The IP Address in base 10 is: " , ListA)

"""This part converts to base 2"""
base2 = [format(int(x), '08b') for x in ip_address.split('.')]
print("The IP Address in base 2 is: ", base2) …
Run Code Online (Sandbox Code Playgroud)

python hex ip-address type-conversion ipv6

3
推荐指数
1
解决办法
8270
查看次数

PHP:如果使用Heroku托管,则获取REAL客户端IP

在过去我用过

$ip = $_SERVER["REMOTE_ADDR"];
Run Code Online (Sandbox Code Playgroud)

哪个会返回客户端的IP.我最近开始使用Heroku托管我的网站,我发现上面的代码不再返回客户端IP.

有人遇到过这个吗?如果我的网站使用Heroku托管,我将如何使用PHP获取客户端的真实IP地址?

php ip-address heroku

3
推荐指数
1
解决办法
752
查看次数

检索设备的IP地址

我正在使用Xamarin.Android并编写以下代码:

public TextView text;
text = FindViewById<TextView>(Resource.Id.viewIP);
foreach (IPAddress adress in Dns.GetHostAddresses(Dns.GetHostName()))
{
    text.Text = "IP Adress: " + adress;
}
Run Code Online (Sandbox Code Playgroud)

但是,当我打开应用程序时,它会立即关闭.我使用正确的方法来获取设备的IP地址吗?

c# ip-address xamarin.android xamarin

3
推荐指数
1
解决办法
7353
查看次数

IP地址v4/v6等价测试

是否可以在同时使用 IPv4 和 IPv6 的双栈环境中测试 IP 地址的等效性?如果是这样,如何?

我的应用程序在 Boost ASIO 之上使用websocket++

例如,在我的 LAN 上,一个应用程序连接到另一个侦听192.168.1.2,但使用此答案的 IP 地址获取器

std::string s = socket.remote_endpoint().address().to_string();
Run Code Online (Sandbox Code Playgroud)

::ffff:192.168.1.3作为客户的地址。

问题是.2它将拥有自己的节点列表,其中包含原始 v4 地址 for .3,因此通过上面的 getter 与磁盘上保存的 v4 版本的简单字符串比较,.3即使已经连接,它也会寻找冗余连接。

我进一步读到事情可能会变得更加复杂,因为通过这个点分四元表示法::ffff:192.0.2.128也是::ffff:c000:0280.

我正在构建一个接受来自不受信任来源的地址的 p2p 应用程序,因此为了防止冗余连接,我需要能够绝对测试等效性。

我的意图可以实现吗?如果是这样,如何?如果没有,我应该只使用 v4 吗?我宁愿现在就包含未来的功能,而不是担心以后的集成。

c++ ip-address equivalence boost-asio websocket++

3
推荐指数
1
解决办法
1422
查看次数

安全地限制API速率,防止IP地址欺骗

我正在使用PHP,MySQL和Redis开发API,并希望对特定的调用进行速率限制.API位于CloudFlare后面.为了实现这一点,我将增加每个IP地址每小时对Redis中特定呼叫的计数,如果超过限制则会出现错误.

但是,我相信我遇到了IP地址欺骗问题.我知道真正的客户端如果欺骗他们的IP地址将永远不会收到回复,但这对于诸如创建帐户呼叫之类的呼叫可能不是必需的.客户端可以通过注册许多具有不同IP的帐户来有效地创建DoS攻击,同时避免速率限制.这会导致我的系统发送大量欢迎电子邮件(导致我的服务器被标记为垃圾邮件),如果他们的电子邮件帐户被恶意注册,可能会阻止用户注册.如何避免这种情况?

我的想法:

  • SSL是否会阻止这种形式的IP欺骗?
  • 有没有办法确保客户端收到服务器的响应,从而确保它不是一个欺骗性的IP地址?
  • cloudflare是否以某种方式验证IP地址在传递HTTP_CF_CONNECTING_IP标题时是不是被欺骗了?

感谢您的帮助和建议.

php security api ip-address cloudflare

3
推荐指数
1
解决办法
2438
查看次数

以编程方式更改 mac osx 上的代理

如何以编程方式更改 mac osx 上的代理设置。我精通ios,由于mac os 编程类似,所以应该不会有太大问题。但是,我缺乏以编程方式创建代理更改所需的逻辑。手动调整非常容易。这是我所追求的系统偏好设置中的网络选项卡:

在此处输入图片说明

我尝试过的:

let dynamicStore: SCDynamicStoreRef = SCDynamicStoreCreate(nil, "setProxy" as CFString, nil, nil)!
let updated = SCDynamicStoreSetValue(dynamicStore, "HTTPProxy" as CFStringRef, "111.222.333.1") // updated is false, indicating unsuccessful operation 
Run Code Online (Sandbox Code Playgroud)

也试过这个,但返回的字典是只读的

let dynamicStore: SCDynamicStoreRef = SCDynamicStoreCreate(nil, "myFunc" as 

    CFString, nil, nil)!

    let proxyDict = SCDynamicStoreCopyProxies(dynamicStore)

    if let proxyDict = SCDynamicStoreCopyProxies(dynamicStore) as NSDictionary? {
        if let port = proxyDict["HTTPPort"] as? Int {
            print("HTTPPort:", port)
            proxyDict["HTTPPort"] = 8088; // can't do that
        }
    }
Run Code Online (Sandbox Code Playgroud)

我的想法不多了。

macos proxy cocoa ip-address

3
推荐指数
1
解决办法
2404
查看次数

如何在AWS中确定子网IPv4 CIDR地址?

如何在AWS中确定子网IPv4 CIDR地址.假设我的VPC CIDR块是172.31.0.0/16并且我想创建一个172.31.1.0/16的子网,但它说"***不在****/*的范围内.请解释我如何确定CIDR?

ip-address subnet vpc amazon-web-services amazon-vpc

3
推荐指数
1
解决办法
2178
查看次数