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