使用Socat进行简单的IPv4/IPv6端口转发

Posted on

Socat是一个简单且高效能的端口转发软件,支持IPv4和IPv6、TCP和UDP。对于家庭宽带仅有公网IPv6的情况很有帮助,并且Openwrt下可以直接通过opkg install socat来安装Socat。

  • 监听IPv4的80端口的TCP协议,并转发到192.168.1.100的8080端口
socat TCP4-LISTEN:80,reuseaddr,fork TCP4:192.168.1.100:8080

但在使用的过程中,遇到了一个问题,按照网上的教程,转发IPv6的同时,会占用IPv4的相同端口,导致IPv4和IPv6的相同端口不能用于不同的用途。经过翻看Socat源码后,终于找到了监听IPv6的同时不占用IPv4相同端口的附加参数ipv6-v6only=1

  • 监听IPv6的80端口(会同时占用IPv4的80端口)的TCP协议,并转发到192.168.1.100的8080端口
socat TCP6-LISTEN:80,reuseaddr,fork TCP4:192.168.1.100:8080
  • 仅监听IPv6的80端口(不占用IPv4的80端口)的TCP协议,并转发到192.168.1.100的8080端口
socat TCP6-LISTEN:80,ipv6-v6only=1,reuseaddr,fork TCP4:192.168.1.100:8080

添加新评论