如果需要将一个IPv4端口的流量转发到另一个IPv6端口,我们将使用socat
。
假设您的IPv6已经配置好并正常工作。您可以通过Linux中的
ping6 <domain>
命令或Windows中的ping -6 <domain>
命令进行检查。
在极少数情况下,ping可能正常工作,但实际流量无法通过。您可以通过使用命令
curl --ipv6 -k -I https://ipv6.google.com
进一步检查Linux和Windows的连接(如果在Windows的cmd中没有curl
,请打开PowerShell)。
假设我们的任务是将IPv4的443端口转发到IPv6的4445端口。
1. 安装socat
apt install socat
2. 端口转发
socat TCP6-LISTEN:4445,fork,reuseaddr TCP4:127.0.0.1:443
确保443端口在本地可访问,或者更改为外部IP。
telnet 127.0.0.1 443
2.1 验证
telnet <ipv6> 4445
3. 创建服务
现在,我们创建一个服务文件,以便在系统重启后自动恢复转发,无需手动运行。同时,我们确保nginx
服务在我们的命令之前启动。
nano /etc/systemd/system/socat-portforward.service
[Unit]
Description=Socat IPv6到IPv4端口转发
After=network.target
After=nginx.service
Requires=nginx.service
[Service]
ExecStart=/usr/bin/socat TCP6-LISTEN:4445,fork,reuseaddr TCP4:127.0.0.1:443
Restart=always
RestartSec=3
User=root
Group=root
KillMode=process
[Install]
WantedBy=multi-user.target
3.1 停止服务
按Ctrl + C
终止,或如果您使用&
运行:
killall socat
3.2 以服务方式启动
systemctl daemon-reload
systemctl enable --now socat-portforward
systemctl status socat-portforward
3.3 启动顺序
我们在[Unit]
部分添加了以下行,以确保正确的启动顺序:
After=nginx.service
Requires=nginx.service
完成!此命令可用于在各种配置中设置端口转发。
No Comments Yet