IPv4のポートからIPv6の別のポートへポートフォワーディングを設定する必要がある場合、socat
を使用します。
IPv6がすでに設定されており、正常に動作していると仮定します。Linuxでは
ping6 <domain>
コマンド、Windowsではping -6 <domain>
コマンドで確認できます。
まれに、pingは動作するが実際のトラフィックが流れない場合があります。LinuxおよびWindowsで
curl --ipv6 -k -I https://ipv6.google.com
コマンドを使用して、接続をさらに確認できます(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