我想将 CIDR 表示法中的 IPv4 范围转换为 IPv6。除了在它们前面加上“::ffff:”前缀之外,是否只需在网络位数上添加 96 即可?例如
1.2.3.4/32 -> ::ffff:1.2.3.4/128
1.2.3.0/24 -> ::ffff:1.2.3.0/112
Run Code Online (Sandbox Code Playgroud)
还有比这更多的事情吗?我还没有找到可以检查的库方法或网络工具来执行此操作。
我正在尝试在 IPv6 上运行一个带有多个公开端口的 docker 容器。我不希望容器拥有自己的 IPv6 地址。我想要的只是让它们可以在主机的 IPv6 地址下访问(使用端口转发)。
\n我在 docker 守护进程中启用了 IPv6 ( http://docs.docker.oeynet.com/engine/userguide/networking/default_network/ipv6/ )。
\n我试过
\nports:\n # The HTTP port\n - ":::80:80"\nRun Code Online (Sandbox Code Playgroud)\n在容器的 docker-compose.yaml 中,但这似乎完全搞乱了配置:
\nCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES\n9774a1a6322c traefik:latest "/entrypoint.sh --ap\xe2\x80\xa6" 1 second ago Up Less than a second 80/tcp traefik\nRun Code Online (Sandbox Code Playgroud)\n使用另一个容器(不在我的控制之下,我似乎无法找出它是如何启动的),端口被正确转发:
\na04b40299a8f portainer/portainer-ce "/portainer" 7 days ago Up 3 minutes 0.0.0.0:8000->8000/tcp, :::8000->8000/tcp, 0.0.0.0:9000->9000/tcp, :::9000->9000/tcp portainer\nRun Code Online (Sandbox Code Playgroud)\n也可以使用主机的 IPv6 地址访问此容器(如预期)。\n如何为第一个容器实现此目的?
\n我正在使用python创建一个简单的服务器应用程序,我正在尝试将IP绑定到侦听套接字.我看过的一个例子使用了这个:
HOST = gethostbyaddr(gethostname())
Run Code Online (Sandbox Code Playgroud)
在此之后稍微处理一下,它应该只给出主机IP作为字符串.这应该返回IPv4地址.但是当我运行此代码时,它会返回我的IPv6地址.为什么这样做以及如何获取我的IPv4地址?
如果相关,我使用的是windows vista和python 2.5
我知道有一种方法可以做到这一点,
const struct in6_addr naddr6 = { {
0x3f, 0xfe, 0x05, 0x01,
0x00, 0x08, 0x00, 0x00,
0x02, 0x60, 0x97, 0xff,
0xfe, 0x40, 0xef, 0xab
}};
Run Code Online (Sandbox Code Playgroud)
但不能用这个,
const struct in6_addr naddr6 =
{ { { 0x3ffe0501, 0x00080000, 0x026097ff, 0xfe40efab } } };
Run Code Online (Sandbox Code Playgroud)
似乎我可以1/2/3巴黎的括号.为什么?
谢谢.
我正在尝试将ipv4服务器/客户端移植到ipv6,但编译器说SOCKADDR_IN6没有在范围内声明.SOCKADDR_IN是宣布但不是SOCKADDR_IN6.<Winsock2.h>已经包括了.
任何人都有任何想法,为什么它将是未宣布的?
为什么ipv6连接失败?
# python
>>> import socket
>>> s = socket.socket(socket.AF_INET6, socket.SOCK_DGRAM)
>>> sa = ('2000::1',2000,0,0)
>>> s.connect(sa)
>>> sa = ('fe80::21b:78ff:fe30:7c6', 2000, 0, 0)
>>> s.connect(sa)
Traceback (most recent call last):
File "<stdin>", line 1, in ?
File "<string>", line 1, in connect
socket.error: (22, 'Invalid argument')
Run Code Online (Sandbox Code Playgroud) 似乎流不会进入ipv6server.c中包含accept的"for"循环,因此无法接受并连接客户端.怎么回事?此代码适用于IPV4但在IPV6更改后出现此问题
ipv6server.c
#include <stdio.h>
#include <stdlib.h> /* needed for os x */
#include <string.h> /* for memset */
#include <sys/socket.h>
#include <netinet/in.h>
#include <sys/errno.h> /* defines ERESTART, EINTR */
#include <sys/wait.h> /* defines WNOHANG, for wait() */
#include "port.h" /* defines default port */
#ifndef ERESTART
#define ERESTART EINTR
#endif
extern int errno;
void serve(int port); /* main server function */
void disconn(void);
main(int argc, char **argv)
{
extern char *optarg;
extern int optind;
int c, err = 0;
int …Run Code Online (Sandbox Code Playgroud) 这个问题让我疯了.我有以下代码:
<html>
<body>
<%@ page import="java.util.*" %>
<%@ page import="javax.mail.*" %>
<%@ page import="javax.mail.internet.*" %>
<%@ page import="javax.activation.*" %>
<%
String host = "exchsrv2";
String to = "alan@domain.com";
String from = "apeince@domain.com";
String subject = "test";
String messageText = "body test";
Properties props = System.getProperties();
props.put("mail.host", host);
props.put("mail.transport.protocol", "smtp");
props.put("mail.smtp.port", "25");
Session mailSession = Session.getDefaultInstance(props, null);
Message msg = new MimeMessage(mailSession);
msg.setFrom(new InternetAddress(from));
InternetAddress[] address = {new InternetAddress(to)};
msg.setRecipients(Message.RecipientType.TO, address);
msg.setSubject(subject);
msg.setSentDate(new Date());
msg.setText(messageText);
Transport.send(msg);
out.println("Mail was sent to " …Run Code Online (Sandbox Code Playgroud) 如果我有一个像2001:4860:4860 :: 8888的IP地址
如何以foo.ip6.arpa格式获取完全限定的域?
编辑:到目前为止,这两个解决方案都给我google-public-dns-a.google.com - 可能反向DNS是错误的名称.为此,我希望输出类似于8.8.8.8.0 ... etc.ip6.arpa
我试图在浏览器上打开IPv6.
对于localhost,我试过:
http://::1
Run Code Online (Sandbox Code Playgroud)
- >不起作用
我尝试:
http://[::1]
Run Code Online (Sandbox Code Playgroud)
- >它的工作原理
然后,我尝试打开公共IP(google.com IP6,请参阅$ host google.com输出):

http://2a00:1450:4006:803::200e
Run Code Online (Sandbox Code Playgroud)
我也尝试:
http://[2a00:1450:4006:803::200e]
Run Code Online (Sandbox Code Playgroud)
- >所有尝试都失败了.
/etc/hosts配置文件的情况下,我们如何打开此版本的IP?