본문 바로가기

OS/Linux

[Linux] 집 컴퓨터를 웹서버로 만들기 (CentOS 6.4)


집에 있는 컴퓨터를 외부에서 접속할 수 있는 서버로 만들어 봅시다.

서버로 사용할 컴퓨터엔 CentOS 6.4가 이미 깔려 있음을 가정 합니다.

사용 공유기는 ipTime n6004r 입니다.


접속 경로[?]를 보자면 다음과 같습니다.

 

            외부   ----------------------------    공유기   --------------------------   집 컴퓨터

                                                      (SK, KT등이 할당해준 ip)                           (CentOS Server)


공유기 설정으로 들어가면 (ipTime 기준 브라우저에서 192.168.0.1) 외부아이피 라는게 있을 겁니다.

외부에서 해당 ip로 접속 하면 공유기가 포트포워딩을 통하여 집에 설치된 서버로 포워딩을 해주고 해당 서버에서 웹페이지를 보여준다는 시나리오 입니다.



1. 우선 서버의 내부 ip를 고정시킵니다.

공유기 설정에서

고급설정 - 네트워크 관리 - 내부 네트워크 설정 으로 들어가서 수동 IP 할당 설정을 합니다.



여기서는 192.168.22.22 로 하였습니다.

수정합니다. 

192.168.0.222 로 하였습니다. 스샷대로 하지 마세요


공유기 설정이 끝났으면 서버의 ip 설정을 해줍니다


#] vi /etc/sysconfig/network-scripts/ifcfg-eth0

위의 명령어로 편집 창을 엽니다.

열어보면 CentOS 설치시 설정이나 퓨터의 환경 등등에 따라 조금씩 다르게 써있을 수 있습니다.

나오지 않은 부분은 패스 하고 다음과 같이 설정합니다.


BOOTPROTO="static"              //보통 dhcp로 되어있습니다. 고정 IP할당을 위해 static으로 바꿉시다"

IPADDR="192.168.0.222"           //공유기 설정에서 할당한 ip 입니다.

NETMASK="255.255.255.0"       

GATEWAY="192.168.0.1"          //공유기 주소

DNS1="8.8.8.8"                                

DNS2="8.8.4.4"


위 설정 중 DNS설정은 공유기 설정에서

고급 설정 - 네트워크 관리 -인터넷 연결정보

에 나오는 기본 DNS를 DNS1에 보조 DNS를 DNS2에 입력해 줍니다.

귀찮으면 위처럼 그냥 구글이 제공하는 DNS를 넣습니다.


설정 완료 후 저장.

그리고 service network restart 로 네트워크 서비스를 재시작 해줍니다.

그 후 ping 8.8.8.8 등으로 핑이 제대로 들어가는지 확인!

제대로 들어가면 완료 된 겁니다.


확실하게 하기위해 putty 등을 이용해서 접속도 해 봅시다.

ip는 내부 아이피인 192.168.0.222 포트는 22 입니다.


ps. 세팅하던 중 매우 멍청한 짓을 했습니다 -_-;;;;

192.168.22.22 로 설정 해놓고 보니 계속 network is unreachable 뜨고 기본 게이트웨이도 안잡히는 겁니다.

원인은 공유기에서 동적 ip 주소 범위가 192.168.0.2 ~ 192.168.0.254로 잡혀있는데... 그 범위를 넘어가는 ip를 설정해놓고 왜 안되나 하고 삽질한 것 -_-...

혹시나 제 멍청한 짓이 타산지석이 되도록 스크린샷은 바꾸지 않았습니다 ㅠㅠ



2. jdk와 tomcat 설치

이부분은 구글링하면 워낙 많기도 하고, 프로그래밍좀 해봤다 하면 워낙 많이 하는 부분이니 그냥 슝슝 넘어가겠습니다.

환경변수 설정 정도나 작성해 두겠습니다.


vi /etc/profile 을 하여 맨 밑에 다음과 같이 작성해 주세요.

JAVA_HOME=/usr/java/jdk1.7.0_25

CATALINA_HOME=/usr/local/apache-tomcat-7.0.42

PATH=$PATH:$JAVA_HOME/bin

그후 커맨드에서 source /etc/profile



3. 방화벽 열기.

2번까지만 한 후 톰캣이 설치된 폴더의 bin ($CATALINA_HOME/bin) 에 가서 톰캣을 실행 시켜주면 실행이 됩니다.

다만 지금 상황에선 외부에서도 내부망에서도 접속을 할 수 없습니다.

톰캣이 사용하는 8080포트가 centos의 기본 방화벽에 막혀있기 때문입니다.

iptables를 편집하여 포트를 열어줍시다


vi /etc/sysconfig/iptables  로 파일을 연 후

-A INPUT -m state -state NEW -m tcp -p tcp --dport 8080 -j ACCEPT

를 추가해 줍니다.

그리고

service iptables restart 로 재실행하면 완료 됩니다.


이제 내부망에서 http://192.168.0.222:8080 을 브라우저 주소에 입력하면 톰캣 시작 페이지가 뜨는걸 볼 수 있습니다.



4. 포트포워딩 및 ddns 등록

이제 마지막으로 외부에서 접속이 가능하도록 포트포워딩을 해주고 ddns서비스를 신청해야 합니다.


보통 가정에서 쓰는 인터넷은 유동ip가 할당이 되기 때문에 지금 할당된 ip로는 현재 접속이 된다고 해도 언제 접속이 안될지 알 수 없습니다.

이를 해결하기위해 주기적으로 변경된 ip와 사용자가 설정한 인터넷주소를 매칭시켜주는 서비스가 ddns서비스 입니다. 

많이 알려진 무료 ddns서비스로는 DNSever 등이 있는데요? 

저는 ipTime 공유기를 쓰다보니 공유기 1개당 ipTime에서 ddns서비스를 제공해 주더군요.


고급설정 - 특수기능 - DDNS 설정 으로 들어갑니다.

위 화면에서 호스트이름 abcdefd.iptime.org 이런 형태로 지어주시고 계정과 암호 할당 한 뒤 추가를 누릅니다.


그럼 화면에서와 같이 밑에 등록이 되는데요? 등록확인중 어쩌구 뜨면 접속상태 다시보기를 눌러줍시다.

그럼 정상등록이 되었다고 나올 겁니다.


이제 포트포워딩을 할 차례 입니다.


고급설정 - Nat/라우터관리 - 포트포워드 설정

으로 들어간 후

규칙이름 뭐 아무렇게 나 정해 주시고 

내부 IP는 192.168.0.222

프로토콜은 TCP

외부포트는 저는 :8080 을 생략하기 위해 80-80으로 하였습니다.

내부 포트는 톰캣이 실행되는 포트가 8080 이므로 8080해주셔야 합니다.


이렇게 완료 한후 이제 위에서 DDNS설정에서 설정해준

설정한이름.iptime.org 로 접속하면 이제 외부에서도 동일한 톰캣 화면을 볼 수 있습니다.