如何在CentOS 7上使用IPv4连接连接到IPv6服务?

尼克·威尔顿(Nick Wilton)

我正在尝试找出如何将入站IPv4连接连接到侦听CentOS盒子上IPv6端口的端口。

要在普通CentOS 7服务器上演示:

  1. 确认bindV6only已禁用
   $ cat /proc/sys/net/ipv6/bindv6only
   0
  1. 在IPv6端口上运行netcat侦听
   nc -lvn6p 80
  1. 在另一个外壳上,尝试通过IPv4远程登录到端口
   telnet 127.0.0.1 80

尝试127.0.0.1 ... telnet:连接到地址127.0.0.1:连接被拒绝

更多的信息

  • 尝试通过IPv6连接可以正常工作。例如telnet :: 1 80
  • 但是,我正在阅读的所有内容都表明,如果在sysctl中禁用了net.ipv6.bindv6only,则基于Linux的IPv6套接字也应接受IPv4连接。
  • 我已经尝试过Socket CAT,它可以工作,但不是一个优雅的解决方案,并且需要配置单独的服务。例如
socat TCP4-LISTEN:80,reuseaddr,fork TCP6:[::1]:80

参考:https : //sysctl-explorer.net/net/ipv6/bindv6only/

参考:https : //stackoverflow.com/questions/6343747/ipv6-socket-creation

满天星

我不知道这是否是您的问题,但是yum install nc在centos 7上运行将安装nmap-ncat,它会SOL_IPV6/IPV6_V6ONLY在ipv6套接字上设置套接字选项本身:

# strace -e trace=setsockopt nc -lvn6p 80
Ncat: Version 7.50 ( https://nmap.org/ncat )
setsockopt(3, SOL_SOCKET, SO_REUSEADDR, [1], 4) = 0
setsockopt(3, SOL_IPV6, IPV6_V6ONLY, [1], 4) = 0
Ncat: Listening on :::80

如果省略-6-4选项,它将绑定两个不同的ipv6ipv4套接字:

# strace -e trace=bind,setsockopt nc -lvnp 80
Ncat: Version 7.50 ( https://nmap.org/ncat )
setsockopt(3, SOL_SOCKET, SO_REUSEADDR, [1], 4) = 0
setsockopt(3, SOL_IPV6, IPV6_V6ONLY, [1], 4) = 0
bind(3, {sa_family=AF_INET6, sin6_port=htons(80), inet_pton(AF_INET6, "::", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, 28) = 0
Ncat: Listening on :::80
setsockopt(4, SOL_SOCKET, SO_REUSEADDR, [1], 4) = 0
bind(4, {sa_family=AF_INET, sin_port=htons(80), sin_addr=inet_addr("0.0.0.0")}, 16) = 0
Ncat: Listening on 0.0.0.0:80

显然,nmap人们不是Linux双堆栈套接字功能的忠实拥护者;-)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在SSH中使用ipv6连接到服务器

Debian如何选择或确定IPv4和IPv6连接的优先级?

如何使用连接器/ C ++连接到远程ipv6 mysql服务器

如何从任何进程关闭 Windows 上的套接字(ipv4 和 ipv6)连接?

如何在Xamarin中获取IP网络连接版本(是IPv4还是IPv6)?

我的程序如何建立IPv6连接?

如何共享与整个LAN的IPv6连接?

debian 8:我的机器开始仅将 IPv6 用于 *outgoing* 连接。如何回到 IPv4?

如何在JRE上为IPv4 IP禁用IPv6堆栈使用?

如何在Java上同时支持IPv4和IPv6

如何在Android中使用mDNS从“ .local”解析ipv4和ipv6

如何在centos上设置ipv6?

Linux网络:如何通过第二个IPv4接口将来自Internet的传入IPv6连接转发到本地网络中的其他计算机?

CentOS 6.2上的静态IPv4和IPv6配置

如何获得公共 ipv4 而不是 ipv6

客户端应用程序如何知道使用IPv4或IPv6?

如何使用PHP代码获取IPv4和IPv6地址?

如何强制Java使用IPv4代替IPv6?

如何使用AFNetworking将ipv4地址转换为ipv6?

如何在Swift中验证IPv4和IPv6地址?

如何将ftp连接到本地ipv6地址

如何使用RStudio上的新连接连接到posgresql

如何使用Java确定正在运行的计算机是使用ipv4还是ipv6?

如何配置dnsmasq以使用Dualstack ipv4和ipv6解析本地主机名?

与仅IPv6主机的IPv4连接

通过ipv6连接时SSH超时,但可与ipv4一起使用

如何将地址从IPv4转换为IPv6

如何检查如果字符串的IPv4 / IPv6或域名?(JAVA)

如何过滤IPv4和IPv6地址?