巧用socat 将局域网IPv4请求转发给IPv6服务器

最近使用软路由遇到了一个麻烦,开启IPv6,netflix会优先解析并使用IPv6,导致使用IPv6看电视直播时,无法观看netflix。咨询了一大圈,都建议我放弃IPv6,但是我不想啊,我还想看电视直播呢。弄smartdns、openclash等都太复杂了,我还不会。今天发现了一个曲折的办法,来实现看电视直播的目的。

一、将openwrt的LAN口 dns设置成不解析AAAA地址,这样就防止netflix走IPv6了,其实线路是支持IPv6的,只不过dns不给解析了,直接访问IPv6地址还是能通的。

禁止解析 IPv6 DNS 记录 打开

二、找一台机器,由于我用了nas,就开了一台linux机器。安装socat

yum install -y socat
nohup socat TCP4-LISTEN:80,reuseaddr,fork TCP6:[ipv6地址]:80 >> /root/socat.log 2>&1 &

三、在Apple tv上用iplaytv app 直接使用内网地址就可以看电视直播了。

原理:Apple tv把直播的IPv4请求,发送给了A,A监听IPv4的80端口,通过socat转发给B直播服务器的IPv6上。

鱼和熊掌,终于可以兼得了!