标签: ipv6

如何确定两个IPv6地址之间的相等性?

我有一个应用程序,允许管理员指定可以从中发出Web服务请求的有效IP地址.我只需获取配置的IP地址,并将它们与传入的请求进行比较.比较两个IPv4地址是微不足道的,我认为比较两个IPv6地址也是如此.

但是,当我注意到IPv6地址稍微复杂一点时,我的网络无知开始出现.我注意到的一个问题是,如果我查看机器上的IP地址(正在查看VMWare控制台显示的IP地址)与Web请求中的IP地址(HttpContext.Current.Request.UserHostAddress在.NET中),我注意到其中一个结束于%10和%11中的另一个:

  • ipconfig显示:fe80:8179:5576:c6d0:8b16%11
  • UserHostAddress显示:fe80 :: 8179:5576:c6d0:8b16%10

唯一的区别是%10和%11 - 给出了什么?

我还看到IPv6地址以"/"结尾,后跟2位数.在进行比较时,我应该忽略这些最后的3位数(如果存在)吗?如果是这样,我需要寻找的有效替代结局是什么?

-----------编辑-------------

以下是基于所提供答案的解决方案......

我只是存储一个"擦除"的IP地址,并将其与"擦除"的IP地址进行比较.在这里使用.NET是我擦除IP地址的方法.从性能角度来看并不是最好的,但它确实有效.我宁愿做一个比较,GetAddressBytes()但我正在使用一个Dictionary,我决定反对创建我自己的额外步骤ByteComparer.

IPAddress incomingIp = null;
bool ipAddressParsePassed = IPAddress.TryParse(userHostAddress, out incomingIp);
if (ipAddressParsePassed)
{
    IPAddress scrubbedIp = new IPAddress(incomingIp.GetAddressBytes());
    string scrubbedIpStr = scrubbedIp.ToString()
}
Run Code Online (Sandbox Code Playgroud)

ipv6

16
推荐指数
1
解决办法
1万
查看次数

重定位ip6tables中的端口

如何使用ip6tables将一个端口重定向到另一个本地端口?例如:ip6tables -t nat -A PREROUTING -j REDIRECT -p tcp --dport 443 --to-ports 8443

iptables ipv6

16
推荐指数
2
解决办法
1万
查看次数

如何在Java上支持IPv4和IPv6

我们的Java程序之一启动时,它只监听IPv6(8080)

例如

# netstat -ntpl

Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      -               
tcp6       0      0 :::8080                 :::*                    LISTEN      -               
tcp6       0      0 :::22                   :::*                    LISTEN      -               
Run Code Online (Sandbox Code Playgroud)

问题是它无法从外部访问(localhost除外),为了解决这个问题,我手动添加了这个

-Djava.net.preferIPv4Stack=true
Run Code Online (Sandbox Code Playgroud)

但这使得该程序仅适用于IPv4网络.

是否有可能像上面的sshd那样,支持IPv4和IPv6?

java linux networking network-programming ipv6

16
推荐指数
1
解决办法
2万
查看次数

将IPv6存储在数据库中

在MySQL数据库中用PHP存储IP的最佳实践是什么?有一个名为ip2long的函数 - 但这仅适用于IPv4.但是IPv6呢?

我知道一个用于IPv6 IP的PHP函数,但它在使用PHP <Version 5.3的Windows上不起作用

php mysql ip ipv6

15
推荐指数
3
解决办法
8890
查看次数

在Oracle中表示IPv4/IPv6地址

在Oracle中,用于表示网络地址的适当数据类型或技术是什么,哪些地址可能是IPv4或IPv6?

背景:我正在转换一个表记录网络活动,使用PostgreSQL inet数据类型构建,以在同一个表中保存v4和v6地址.

但是,没有行包含v4和v6地址.(也就是说,记录来自机器的v4堆栈或机器的v6堆栈.)

oracle ipv4 ipv6

15
推荐指数
2
解决办法
1万
查看次数

IPv6链路本地地址格式

我正在开展一个与网络/压缩相关的项目.其中一台机器是Windows Vista,已经配置了IPv6.

当我尝试时ipconfig,我会看到以下格式的地址:fe80::9dc8:72fa:aacd:76e2%10

但是当我尝试从另一台机器ping这台机器时ping fe80::9dc8:72fa:aacd:76e2%10,我收到以下错误:

Ping request could not find host fe80::9dc8:72fa:e327:76e2%10.
Please check the name and try again.

任何想法/评论都非常有帮助.

windows networking tcp ping ipv6

14
推荐指数
2
解决办法
2万
查看次数

在IPv6中它是什么意思/ 64

我有ipv​​6的vps,比如

2605:6f00:XXX::XXXX:XXXX/64
Run Code Online (Sandbox Code Playgroud)

我不明白/ 64的含义.这是否意味着我的vps有多个ipv6地址?

ipv6

14
推荐指数
2
解决办法
3万
查看次数

我是否需要更换NSURLConnection以实现对仅IPv6服务的强制支持?

由于Apple要求提交审核的应用程序必须从2016年6月1日起支持仅支持IPv6的网络,因此我正在检查是否需要替换我的应用中的某些API /库.但是我对网络和一些相关方面知之甚少,因此我无法对此有明确的答案,并希望寻求帮助.

关于Apple提供的支持IPv6 DNS64/NAT64网络的文档,它指出应用程序应该没问题,如果符合以下情况则无需执行更新:

您正在使用的高级网络API比如写一个客户端应用程序NSURLSessionCFNetwork的框架,你的名字连接

通过这个我把它作为2个标准:

  1. 使用NSURLSession或CFNetwork
  2. 按名称连接

所以这里的问题是:

  1. 据我所知,NSURLConnection基于CFNetwork,这是否意味着如果我的应用程序使用NSURLConnection,我也会没事的?(我在上面的文档中看到NSURLConnection在这张图片中也有提及,但是我不太确定这一点,因为NSURLConnection有点老了?似乎我找不到提及IPv4和IPv6支持的文件.)

  2. 根据标准"按名称调用",这是否意味着无论我使用的是NSURLSession还是NSURLConnection,如果我碰巧通过IPv4地址调用或访问某些资源/ API,会发生什么不好的事情?(我已经做了一些研究,根据我的理解,像iOS 9+的iOS设备这样的客户端将始终使用合成的IPv6地址访问IPv4服务器,因此如果我通过IPv4地址调用,客户端将无法访问资源?)

谢谢你的帮助!

ipv6 nsurlconnection ios ios9

14
推荐指数
1
解决办法
4360
查看次数

如何测试支持IPv6的iOS应用?

有应用程序,建立2015年和2014年.我如何测试它们的IPv6?如果我的应用不支持IPv6,我该怎么办?

我的应用程序正在使用AFNetworking和Alamofire.我主要连接到域(例如api.example.com/v1/...).只有1个应用程序使用IP :(例如:12.12.12.12:3000/api/v1/...). 在此输入图像描述

ipv4 ipv6 appstore-approval ios network-connection

14
推荐指数
2
解决办法
2万
查看次数

IPv6 - Apple拒绝应用iOS

错误在哪里?

Apple拒绝app并发送消息:

表现 - 2.1

我们在连接到IPv6网络的Wi-Fi上运行iOS 9.3.5的iPad和iPhone上查看了应用中的一个或多个错误.

具体而言,在进行投票和支持IPv6 DNS64/NAT64网络时会显示错误

"如果您使用NSURLSession和CFNetwork框架等高级网络API编写客户端应用程序并按名称连接,则不需要为应用程序更改任何内容以使用IPv6地址."

Apple Developer Forums上的下一篇文章说:

N 3 - 我需要更新我的服务器吗?这取决于服务器的运行位置:如果您在更广泛的Internet上运行服务器,答案是否定的.只有IPv6设备才能通过DNS64/NAT64访问您的服务器.您应该更新服务器以支持IPv6,但这是您可以在自己的时间内完成的事情.如果您的iOS应用程序中嵌入了服务器(例如,允许用户与应用程序之间传输文件的Web服务器),则应确保它在仅限IPv6的环境中正常运行.

我的主人说:

我们没有看到任何问题,因为服务器的IPv6服务器是IPv4,将通过DNAT/SNAT提供

我的网站(服务器):http: //badroads.info

我在App中的代码(此代码在一周前在另一个应用程序中得到批准):

func sendToServer(dataFromDictionary: Dictionary<NSString, AnyObject>) {
    let url: NSURL = NSURL(string: "http://badroads.info/t-or-c/****.php")!
    let request:NSMutableURLRequest = NSMutableURLRequest(URL:url)
    let session = NSURLSession.sharedSession()
    request.HTTPMethod = "POST"
    do {
        request.HTTPBody = try NSJSONSerialization.dataWithJSONObject(dataFromDictionary, options: [])
    } catch let parseError as NSError {
        request.HTTPBody = nil
        dispatch_async(dispatch_get_main_queue()) …
Run Code Online (Sandbox Code Playgroud)

itunesconnect ipv6 app-store ios swift

14
推荐指数
1
解决办法
2590
查看次数