포트 80에서 포트 8080으로의 리다이렉션 설정
느낀점
이번 작업을 통해 여러 가지 중요한 교훈을 얻을 수 있었습니다.
1. 네트워크 인터페이스 확인의 중요성:
- 서버 환경에 따라 네트워크 인터페이스 이름이 다를 수 있으므로, 작업 전에 항상 활성화된 인터페이스를 확인해야 합니다. 이를 통해 불필요한 오류를 피하고, 설정 작업을 더 효율적으로 수행할 수 있습니다.
2. 정확한 정보의 필요성:
- 인터넷 블로그나 튜토리얼에서 제공하는 정보는 일반적인 환경을 기반으로 하기 때문에, 이를 맹목적으로 따르기보다는 자신의 환경에 맞게 수정하는 것이 필요합니다. 특히 네트워크 인터페이스와 관련된 정보는 서버마다 다를 수 있으므로, 정확한 정보를 바탕으로 설정을 진행해야 합니다.
3. AWS 보안 그룹 설정의 중요성:
- AWS EC2 인스턴스의 보안 그룹에서 올바른 인바운드 규칙을 설정하는 것이 매우 중요합니다. 이를 통해 외부에서의 접근이 가능해지고, 필요한 포트에 대해 적절한 접근 권한을 부여할 수 있습니다.
4. 방화벽 설정의 중요성:
- 방화벽 설정이 올바르게 되어 있는지 확인하는 것은 네트워크 작업에서 매우 중요합니다. 방화벽 설정이 잘못되어 있으면 외부에서의 접근이 차단될 수 있기 때문에, UFW나 iptables와 같은 방화벽 설정을 항상 확인하고 필요한 경우 수정해야 합니다. 이번 작업에서는 UFW 방화벽을 비활성화하여 SSH 연결 문제를 해결했습니다.
5. 문제 해결 과정의 체계화:
- 문제를 해결하기 위해 체계적으로 접근하는 것이 중요합니다. 발생한 문제를 분석하고, 원인을 파악하며, 단계별로 해결해 나가는 과정을 통해 더욱 효율적으로 문제를 해결할 수 있었습니다. 이 과정에서 다양한 도구와 명령어를 활용하여 문제의 원인을 찾아내고 해결하는 경험은 매우 유익했습니다.
---
개요
리눅스 서버에서 포트 80으로 들어오는 HTTP 요청을 포트 8080으로 리다이렉트하는 작업의 일련의 과정을 다루고 있습니다. 작업의 목적, 시도한 방법, 발생한 오류 및 해결 과정, 잘못된 접근, 최종 교훈, 그리고 결과를 포함합니다.
목적
리눅스 서버에서 포트 80으로 들어오는 HTTP 요청을 포트 8080에서 실행 중인 애플리케이션으로 리다이렉트하여, 외부 사용자가 포트 80을 통해 웹 애플리케이션에 접근할 수 있도록 설정합니다.
시도한 것
1. 네트워크 인터페이스 확인
- 서버에서 활성화된 네트워크 인터페이스를 확인하기 위해
ip addr
명령어를 사용했습니다.
2. iptables 규칙 추가
- 포트 80으로 들어오는 요청을 포트 8080으로 리다이렉트하기 위해 iptables 규칙을 설정했습니다.
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080
3. 규칙 확인
- 설정한 iptables 규칙이 적용되었는지 확인하기 위해 다음 명령어를 사용했습니다.
sudo iptables -t nat -L PREROUTING -v -n
4. AWS 보안 그룹 인바운드 규칙 설정
5. UFW 방화벽 설정 확인 및 수정
- 초기에는 UFW 방화벽이 비활성화되어 있었으나, 포트 80과 8080을 허용하는 설정을 추가했습니다. 하지만 이로 인해 포트 22 (SSH)가 차단되어 로컬 PC에서 SSH 연결이 불가능했습니다.
sudo ufw allow 80/tcp sudo ufw allow 8080/tcp
6. SSH 연결 문제 해결
- 로컬 PC에서 EC2 서버로의 SSH 연결이 불가능한 문제를 해결하기 위해, VPC 설정을 확인하고 문제 없음을 확인한 후 UFW 방화벽 설정을 비활성화했습니다.운영 서버에 방화벽을 적절히 설정하지 않고 비활성화하는 것은 매우 권장되지 않습니다.
개발 목적과 학습 목적으로 사용하는 것을 당부합니다.
sudo ufw disable
발생한 오류 및 해결 과정
1. 잘못된 인터페이스 사용
- 초기 설정에서 잘못된 인터페이스(
eth0
)를 사용했습니다. 서버에서 실제 활성화된 인터페이스는ens5
였습니다. ip addr
명령어를 사용하여 올바른 인터페이스를 확인하고, iptables 규칙을 수정했습니다.sudo iptables -t nat -D PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080 sudo iptables -t nat -A PREROUTING -i ens5 -p tcp --dport 80 -j REDIRECT --to-port 8080
2. SSH 연결 문제
- UFW 방화벽 설정에서 포트 22 (SSH)를 허용하지 않아 로컬 PC에서 EC2 서버로의 SSH 연결이 불가능했습니다.
- 이를 해결하기 위해 UFW 방화벽 설정을 비활성화했습니다.
sudo ufw disable
3. AWS 보안 그룹 인바운드 규칙 설정 확인
- AWS EC2 인스턴스의 보안 그룹에서 포트 80과 8080에 대한 인바운드 규칙이 올바르게 설정되었는지 확인했습니다. 이를 통해 외부에서의 접근이 가능하도록 설정했습니다.
잘못된 접근
- 잘못된 네트워크 인터페이스(
eth0
)를 사용한 초기 접근. - 초기에는 방화벽이 비활성화되어 리다이렉션 설정이 문제가 있다고 잘못 판단.
- UFW 방화벽 설정에서 포트 22를 허용하지 않아 SSH 연결이 불가능했던 문제.
결과
- 올바른 인터페이스(
ens5
)를 사용하여 iptables 규칙을 설정한 후, 포트 80에서 포트 8080으로의 리다이렉션이 성공적으로 작동했습니다. - AWS 보안 그룹에서 포트 80과 8080에 대한 인바운드 규칙을 설정하여 외부에서의 접근을 허용했습니다.
- 방화벽 설정을 비활성화하여 SSH 연결 문제를 해결하고, 외부에서 포트 80을 통해 웹 애플리케이션에 접근할 수 있게 되었습니다.
- 리눅스 서버에서 iptables를 사용하여 포트 리다이렉션을 설정하는 과정에서 발생할 수 있는 문제와 해결 방법에 대한 실질적인 예시를 제공합니다. 이를 통해 향후 유사한 작업을 수행할 때 참고할 수 있는 유용한 자료가 될 것입니다.
'여러가지 > 오류' 카테고리의 다른 글
[트러블슈팅] EC2 재시동 후 iptable 맵핑 정보 사라지는 현상 해결 (0) | 2024.06.16 |
---|---|
[트러블슈팅] Github Action을 이용한 CICD (0) | 2024.06.16 |
pyenv 실행 오류 (0) | 2024.03.10 |