새소식

인기 검색어

TL

21/02/14 TL. Linux에서 DHCP, 프록시 서버, 방화벽 컴퓨터, pxe 서버+킥스타트 구축.

  • -

오늘 할 일

이것이 리눅스다 끝내기

산타토익

데브옵스 영상 시청


강의

www.inflearn.com/course/%EC%9D%B4%EA%B2%83%EC%9D%B4-%EB%A6%AC%EB%88%85%EC%8A%A4%EB%8B%A4/dashboard

 

'이것이 리눅스다' 저자의 Red Hat CentOS7 리눅스 서버&네트워크 강좌 - 인프런

한빛미디어에서 발간한 '이것이 리눅스다' 의 저자가 직접 강의하는 강좌 입니다. 초급 서버 개발 Linux 온라인 강의 이것이 리눅스다

www.inflearn.com

교재

www.hanbit.co.kr/store/books/look.php?p_code=B2195555382

 

이것이 리눅스다 - 리눅스 마스터를 위한 마지막 기회

리눅스 설치도 어려운 독자에게 이 책을 권한다. 이것이 리눅스다는 초보자도 막힘 없도록 실습환경을 제공한다. 특히 FTP 서버는 물론, NFS, Samba, DHCP, 프록시 등 네트워크 실습 과정도 초보의 눈

www.hanbit.co.kr

DHCP : DHCP 서버가 있어서, 자신의 네트워크 안에 있는 클라이언트 컴퓨터가 부팅될 때 자동으로 IP주소, 서브넷 마스크, 게이트웨이 주소, DNS 서버 주소를 할당해 준다.

 

적은 IP 주소를 가지고 있더라도, ip를 할당해주고 해제하고 하기 때문에 다수의 컴퓨터를 관리할 수 있다.

우선 dhcp 설정을 꺼서, 컴퓨터를 부팅했을 때 자동으로 ip를 할당받지 못하게 하자.

 

현재 상태에서 client 등에서 네트워크를 활용한 무언가를 하려고 하면 제대로 동작하지 못한다. ip를 할당받지 못했기 때문.

 

이제 server에 dhcp를 설치하자. dnsmasq라는 프로세스를 종료하자. dhcp와 겹치기 때문.

ps -ef | grep dnsmasq로 프로세스 번호를 보고, kill -9를 하자. 그런 다음 disable시키자.

 

이제 /etc/dhcp/dhcpd.conf 마지막 줄에

ddns-update-style interim;

subnet 192.168.111.0 netmask 255.255.255.0 {

option routers 192.168.111.2;

oprtion subnet-mask 255.255.255.0;

range dynamic-bootp 192.168.111.30 192.168.111.50;

 

option domain-name-servers 168.126.63.1; //kt에서 주는 서버

default-lease-time 10000;

max-lease-time 50000;

}

를 추가해주면 된다.

 

bootp는 클라이언트에게 할당할 ip주소의 범위이다.

default-lease-time은 클라이언트에게 ip주소를 임대해 줄 기본적인 초단위 시간이다. 그럼 max-lease는 알겠지???

 

ip를 빌려간 내역은 /var/lib/dhcpd를 확인하면 된다.

 

이제 dhcpd를 재시작, enable(상시가동), 방화벽 설정을 해주고 client에서 확인해 보면 잘 되는걸 확인할 수 있다.

 

server(B)에서 핑이 제대로 간다!


프록시 서버를 구축해 놓으면, 같은 네트워크 망 내에서 중복 접속할 때 굉장히 속도가 빨라진다!

server에 squid를 설치해서 프록시 서버를 운영해 본다.

 

/etc/squid/squid.conf를 수정하자. 26줄, 54줄, 62줄, 맨 아래

26 -> acl centos7 src 192.168.111.0/25.255.255.0

54 -> http_access allow centos7

62 -> 주석 제거, 100을 1000으로 바꿔 용량을 늘려줌

74 -> visible_hostname      centos7

 

이제 방화벽 설정을 해준다.

squid는 3128 포트를 이용한다.

이제 방화벽을 stop하고, client에서 firefow 환경 설정에 들어가서 프록시를 수동 설정 해준다.

 

이제 현재는 프록시를 가동 안 하므로, client에서 무언갈 하려고 하면 접근할 수 없다.

이제 server에서 squid를 재시작, enable하려고 했는데 진행되지 않았다! 찾아보니 openssl을 설치해야 한다고 한다. 그 이유는 squid가 자체적으로 openssl 기반으로 암호화를 진행하기 때문에 openssl을 필수적으로 필요로 한다고 한다.

openssl을 설치하기 전
이젠 client에서도 잘 된다! data가 cache에 잘 저장됐다는 뜻.

windows에서는 인터넷 옵션 - LAN 설정에서 firefox와 같이 설정해주면 된다.


보편적인 회사 네트워크 구성도 이와 같다. 여기서는 192.168.*은 공인 IP라고 생각하자. 10.1.1.*은 사설 IP라고 생각하자.

linux에서 windows에 접근한다면, ens32(192.168.111.100)를 통해 접근한 것으로 본다.

 

마스커레이딩 : 만약 Client에서 Windows로 접속한다면, Windows에서는 ens33에서 접속한 것이 아니라, ens32(192.168.111.100)에서 접속한 것으로 안다.

 

SNAT : Client에서 ens33 -> ens32 -> ens34 -> ens32(192.168.111.100) -> Windows 서버에 접속하면, 패킷을 전송하면 Windows에선 ens32(192.168.111.100)으로 돌려준다. 그러면 Server에선 Client로 해당 패킷을 되돌려주는 작업을 필요로 한다.

 

DNAT : windows에서 Server(B)의 웹서버에 접속할 때, ens32(192.168.111.100)으로 접속해서 Server에서 Server(B)로 패킷을 전송하는 기능이다.

 

Server(B), client 네트워크 설정을 NAT이 아니라 brigged로 두고, ip를 수정하자.

Server는 brigged 1개, NAT 1개를 가진다.

Server의 주소는 DNS, 라우팅은 끄고 수동으로 설정하자. IPv6도 끄자. 그리고 재부팅한다.

ifcfg-ens34에서 GATEWAY와 DEFROUTE 줄을 지우고 네트워크를 재실행하자.

 

이제 마스커레이드(사설망에서 방화벽 컴퓨터로 나갈 수 있게 하는 정책)를 설정하자. /etc/sysctl.conf 파일을 열고 맨 아래에 net.ipv4.ip_forward=1을 추가하고 저장하자.

 

이제 적용될 수 있게 echo 1 > /proc/sys/net/ipv4/ip_forward를 입력해보고 아무런 메세지가 없으면 잘 설정된 것이다.

cat /proc/sys/net/ipv4/ip_forward 했을 때 1이 나오면 잘 된 것이다.

 

iptables --policy FORWARD DROP

iptables --policy INPUT DROP

iptables --policy OUTPUT DROP

을 입력해서 초기화 하자.

 

다음으로 ens34와 ens32 간 패킷이 통과할 수 있게 설정해 준다.

1~4는 패킷을 통과하도록 해준 것이고, 5는 ens32에 마스커레이드를 허가. 6은 설정한 내용을 저장한 것이다.

이제 방화벽에 들어가서 마스커레이딩 영역에 체크를 해 허가해주자.

 

이제 사설 네트워크 내 컴퓨터들은 게이트웨이(방화벽 컴퓨터)의 ens34(10.1.1.1)를 거쳐, ens32(192.168.111.100)을 통해 외부 인터넷으로 연결되도록 설정한 것이다.

 

이제 FileZila를 이용해 client에서 외부의 호스트 os로 접속할 수 있도록 한다.

 

filezila를 설치하고 다음과 같이 유저를 추가하자.

 

이제 centos 사용자가 ftp 서버에 접근 가능하다.

이제 cmd에서 21번 포트를 열어주자.

netsh advfirewall firewall add rule name="FTP서버" dir=in action=allow protocol=tcp localport=21

 

이제 간단한 ftp 서버를 만든 것이다.

 

client에서 ftp 클라이언트를 설치한 뒤, winclient의 ip로 접속해보자.

 

이제 접속해본 뒤, winClient에서 netstat /an을 입력하면 누가 접속했는지를 확인할 수 있다. 그러면 192.168.111.100으로 접속한 기록을 볼 수 있다.

client(10.1.1.10)으로 접속했지만 192.168.111.100으로 접속했다고 기록이 남아있다.

이제, 호스트 os에서 192.168.111.100에 요청하면, Server(B)로 찾아가게끔 웹서버로 운영하기 위한 정책을 세워주자. server(B)

 

server(B)에서 httpd를 입력해 웹 서버를 설치하고, firewall-cmd -add-service=http를 입력해 웹 서비스를 허용하자.

확인용 파일을 추가로 만들자.

적당히 만든 파일. 내용은 centos7 - Web Server이다.

이제 웹서버를 restart, enable한다.

 

이제 Server에서 80번 포트로 오면 server(B)로 연결하도록 다음과 같이 입력하자.

이제 접속해보면 server(b)의 내용이 잘 나온다. 이 접속은 호스트 OS -> 192.168.111.100 -> 10.1.1.1 -> 10.1.1.20 순으로 이루어진 것이다.

잘 나온다.


설정만 하고 전원만 켜면 끝나는 구조.

 

우선 syslinux(부팅파일) dhcp(ip자동할당) tftp-server(처음에 필요한 파일 제공) vsftpd(rpm파일 전송)를 설치한다.

즉, pxe는 여러 애플리케이션을 조합한 것.

 

우선 방화벽을 끄고 disable하자.

 

이제 dhcp를 설정하자.

/etc/dhcp/dhcpd.conf를 수정한다.

이 내용을 추가한다.

이제 tftp를 설정한다.

/etc/xinetd.d/tftp를 수정한다.

 

내려가보면 disable이 yes로 돼있는데, no로 수정해 준다.

 

이제 iso 파일을 /pub에 마운트 하자.

나중에 클라이언트들이 dvd장치에 동시에 접근할 것이므로, dvd 마운트는 다른 디렉터리에 하고, dvd의 전체 파일을 /pub에 복사해 놓고 사용해야할 것이다.

이제 부팅에 필요한 파일을 준비하고, tfpboot 디렉터리에 부팅 관련 디렉터리와 설정 파일을 생성한다.

default의 내용은 이렇게

dnsmasq가 충돌을 일으키므로, 프로세스를 종료시키자.

 

이제 dhcpd, vsftpd, xinetd를 restart, enable하자. 

 

그 후 dhcp를 종료하고, 가상머신을 새로 만들어 본다. 그러면 스스로 tftp에 접속해서 파일을 설치한다. 그리고 이제 설정까지 자동으로 해버리는 킥스타트까지 해보자.

 

system-config-kickstart, system-config-keyboard를 설치해서 옵션 설정들을 진행할 수 있다. 기본적인 설정을 모두 마치고, 저장 위치로 저장한 /var/ftp/centos.ks 파일을 열어, 다음과 같은 내용을 추가하자.

 

@는 패키지 그룹임을 뜻한다.

이제는 /var/lib/tftpboot/pxelinux.cfg.default 파일을 열고, 마지막 행을 수정해 준다.

빨간 줄 부분이 추가된 부분이다. 킥스타트 설정 파일을 지정한다는 의미이다.

이제 부팅하면 자동으로 설정까지 진행된다.


완강!!!!!

 

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.