리눅스 서버- 11

박형준·2024년 3월 26일

쿨러 좀 비쌈 , ssd 삼성

마이크론
파워 바꾸기


웹페이지 작성

*윈도우 / 제어판 / NET Framework 3.5 체크 ⇒ 다시 시작 /

*Visual Studio 실행해서 아래와 같은 화면을 모니터에 출력시키기 위해서 설정

*시작 / VS 2022 실행 / 새 프로젝트 만들기 / 모든 언어 에서 C# 선택 하고 ,

  • 선택하고 다음 화면에서
    나머지는 기본값 두고, 맨아래 프레임워크를 3.0 으로 변경 하고 만들기 클릭
  • 쿼리 테스트하고 결과물 확인하고 마침
  • Web Forms 사이트 체크
  • 도구 상자에서 SqlDataSource를 끌어다 놓기
  • SqlDataSource의 데이터 소스 연결
  • ODBC를 연결시켜준다 (사용자: winuser)
  • 리눅스 서버 A의 shopping-DB와 연결된 것을 확인
  • customer 테이블 지정
  • select로 보여주는 명령어 입력

*다시 도구상자 / 데이터 / 데이터 소스 클릭 후 sqldatasource 선택

  • 파일 / 모두 저장하고 / 파일 클릭 / 브라우저에서 보기 클릭 하면 아래와 같이 보이며,
    • 이전 작업반복해서 구매테이블도 작업 가능.
  • gridview 끌어다 놓기 (보여주는 것)
  • 데이터 소스를 미리 만들어둔 것을 선택
  • 웹 페이지를 통해 확인

◆ 방화벽 만들기 구성도

*ServerA 와 .B 에 방화벽 패키지 설치

  • #dnf -y install iptables-services

*Server-A 에 랜카드 하나더 추가하고 브릿지로 설정

*설정 창에서 두번째 랜카드에 IP수동 설정 (10.1.1.1/24 10.1.1.1 , DNS와 라우팅끄기 )

*nmtui => 연결 편집 창에서 랜카드 이름 ens224로 변경 하고 저장

  • #gedit /etc/NetworkManager/system-connections/유선[탭키]

    • 12번행 IP변경 확인 및 14번째 행 주석처리 / 저장
  • [root@localhost ~]# nmcli con down ens224
    • [root@localhost ~]# nmcli con up ens224
  • *Serve rB Bridged 변경 과 IP설정

  • *Server C 브릿지 변경,IP설정 (Client)

  • 저장 후
    [root@localhost ~]# nmcli con down ens160
    [root@localhost ~]# nmcli con up ens160
    ip add 로 변경된것 확인
  • 방화벽 ip 서비스 다운로드(iptables-services)
  • 커널에 전달되는 옵션 관리(grubby)
  • 서버 B 아이피 수정
  • 클라이언트 C 아이피 수정

*Server-A 에 방화벽 정책을 설정( 마커스 레이디 )

  • 사설: 10.x.x.x IP 와 공인: 192.168.0.x 두개의 IP를 연결해주는 작업
    • #gedit /etc/sysctl.conf
    • 맨 아래줄에 추가
      • net.ipv4.ip forward = 1
  • 서버 A 브릿지로 네트워크 어댑터 추가
  • 서버 A 아이피 수정
  • 네트워크 어댑터 껏다 키기 (nmcli)

*설정 파일 확인

  • #echo 1 > /proc/sys/net/ipv4/ip_forward
    #cat /proc/sys/net/ipv4/ip_forward
  • [root@localhost ~]# iptables --policy FORWARD DROP
    [root@localhost ~]# iptables --policy INPUT DROP
    [root@localhost ~]# iptables --policy OUTPUT DROP
  • #iptables-save > /etc/sysconfig/iptables
  • 어댑터 연결한것 확인
  • 충돌나는 것을 방지하기 위해 13번과 14번 중 하나 주석 처리
  • ipv4의 아이피를 나갈 수 있게 설정: forward (설정파일을 통해)
  • 설정된 것 확인

*방화벽에 마스커레이딩 적용 firewall-config

  • #iptables --append INPUT --in-interface ens224 --source 10.1.1.0/24 --match state --state NEW,ESTABLISHED --jump ACCEPT

    • #iptables --append OUTPUT --out-interface ens224 --destination 10.1.1.0/24 --match state --state NEW,ESTABLISHED --jump ACCEPT
  • #iptables --append FORWARD --in-interface ens224 --source 0.0.0.0/0 --match state --state NEW,ESTABLISHED --jump ACCEPT

    • #iptables --append FORWARD --in-interface ens160 --destination 10.1.1.0/24 --match state --state NEW,ESTABLISHED --jump ACCEPT
  • #iptables --table nat --append POSTROUTING --out-interface ens160 --jump MASQUERADE

  • [root@localhost ~]# nmcli con down ens224
    [root@localhost ~]# nmcli con up ens224
    [root@localhost ~]# nmcli con down ens160
    [root@localhost ~]# nmcli con up ens160
    reboot

*외부 웹 사이트 접속 .
10.1.1.x IP 가 구글로 나가기 위해서는 GW: 10.1.1.1 ⇒ 192.168.0.100 ⇒ 구글이나 외부 웹사이트

  • ip 방화벽 설치한 것을 정책을 등록시켜준다
  • INPUT 세부 등록
  • OUTPUT 세부 등록
  • ens224 나가는 IP 세부 등록
  • ens160 외부로 나가는 IP 세부 등록
  • 마커스레이드 라우팅 테이블 등록
  • IP 테이블 저장
  • GUI 방화벽을 이용해서 마커스레이딩 허용
  • ens224와 ens160을 껏다 켜주기(설정 후 재시작)
  • 클라이언트C에서 서버 A 방화벽을 통과해서 외부 망으로 인터넷에 접속 확인

  • 실습 환경

*앤서블

*-관리도구로서 활용을 많이 함.

  • 기존에 관리방식은 각각의 호스트에 에이전트를 설치하고 메인PC와 연결을 해서 관리 진행 (ex:PC방 )
  • 앤서블은 에이전트 없이 SSH로 / 플레이북을 통해서 관리 : YAML 파일로 작성 / 실행

*기술문서 : https://docs.ansible.com/ansible/latest/command_guide/intro_adhoc.html

*V-Box 실행 / 파일 / 환경설정 / 입력 / 가상머신탭 / 호스트키 조합 지우개 클릭 후 [ Ctrl + Alt ]

  • 자동으로 키보드 잡기 체크 해제 / 확인 ⇒ 가상머신에서 마우스 꺼낼때 Ctrl+Alt로 변경됨.
  • 가상 시스템 가져오기
  • MAC 어드레스 충돌 방지하기: 모든 네트워크 새 MAC 주소 생성으로 변경
  • work 실행
  • ctrl alt로 마우스 빠져나오기 설정

*V-Box 실행 / 가져오기 / work 불러오기 / 다음 / MAC 주소 정책 : ~~~새 MAC 주소 생성 선택 / 완료 / 시작

*부팅 후 사용자 : guru / work, root / redhat ⇒ 1234 변경해도됨.

*복제 : servera, serverb, serverc, serverd 로 이름 각각 설정 과 새 MAC 주소 생성은 매~우 중요함.

  • 사용자 guru/work
  • 이더넷 껏다/키기(nmtui)
  • 호스트 네임 변경(nmtui)
  • work 복제하기 이름과 충돌 방지하기 위해 MAC 주소 정책 변경
  • 복제해서 serverA, B, C, D 생성

*복제가 끝나면 servera, b ,c ,d 에 대해서 guru 또는 root 로그인 후 nmtui 에서 IP변경, 활성화 , hostname 변경 후

  • exit / 다시 root 로그인 후 IP 변경 및 호스트 이름 변경 확인
    • ⇒ IP 변경 확인이 안되면 오전에 했던 네트워크 nmcli~up 명령어 실행 후 다시 ip add로 확인 해보면 확인됨.
    • work(192.168.137.10) 으로 핑 해보면 성공됨.

*SSH 접속 가능하도록 설정

  • 로컬 PC 네트워크 어댑터 ( ncpa.cpl ) 이더넷(실제 랜카드) 속성 / 공유 탭 /
  • 서버 PC중에서 한곳에서 pi ng -c 2 8.8.8.8 로 테스트 / 확인
  • 버추얼 박스 네트워크가 안될 때 여기서 확인
  • 실제 컴퓨터 이더넷을 변경
  • SSH로 접속

*work PC hosts 파일에 servera. b. c . d 등록

  • 등록 후 work 에서 호스트이름 으로 핑테스트 ⇒ ex: ping -c 2 servera.test.com

    • [root@work ~]# dnf search bash
    • [root@work ~]# dnf search vim

*저장소 ( OS 별 저장소 url은 https://docs.fedoraproject.org/en-US/epel/ )

*work, servera, b , c , d 모두 종료 후 스냅샷.

  • hosts 파일에 도메인 입력
  • dnf로 bash 찾기 (search) : 나중에 ansible 설치하기 위한 사전 설치
  • dnf로 vim 찾기
  • 웹 사이트를 통해 저장소 설치
  • ansible 설치 전 사전 설치
  • ansible과 파이썬 설치
  • 설치된 버전 확인
  • 스냅샷

오라클 버추얼 박스에서는 네트워크를 호스트 전용으로 설정

*스냅샷 후 모두 부팅 하고 화면 내려놔도됨. work 에서 실습 /

*작업 디렉토리 생성 진입 mkdir 1day , cd 1day

*인벤토리 생성 ⇒ 저장소 [ 관리할 호스트를 저장해놓는곳 ]

  • [root@work 1day]# ansible --help ⇒ 사용법
    • [root@work 1day]# ansible -i inventory --list-hosts web
    • [root@work 1day]# ansible -i inventory --list-hosts db
    • [root@work 1day]# ansible -i inventory --list-hosts time
    • [root@work 1day]# ansible -i inventory --list-hosts all
    • [root@work 1day]# ansible -i inventory --list-hosts ungrouped ⇒ 그룹으로 미지정된것 확인
      • [root@work 1day]# ansible -doc -l ⇒ 앤서블에서 기술문서 확인 ⇒ q
      • #ansible-doc -l | grep comm | more ⇒ 기술문서에서 명령어와 관련된것만 페이지 단위로 출력
  • 인벤토리를 통해 서버 A, B, C, D를 web과 db와 time 그룹에 저장(n을 통해 그룹의 그룹으로 묶을 수도 있다)
  • ansible 명령어 찾게 도와주는 것(--help)

*호스트를 관리 방법 - 1 ⇒ 애드혹 방법 / 단계별 명령을 실행 해서 관리하는 방법

  • [root@work 1day]# ansible time -i inventory -m command -a 'timedatectl' -u root -k

    • \SSH password: 1234
    • 결과 : serverd.test.com | FAILED | rc=-1 >>
  • [root@work 1day]# ssh root@servera.test.com 또는 # ssh -root@192.168.137.11 ⇒ yes

  • [root@servera ~]#exit 나머지 serverb, serverc, serverd 도 접속

    • [root@work 1day]# ansible time -i inventory -m command -a 'timedatectl' -u root -k ⇒ 다시 실행
  • web 그룹의 정보 알려주는 것(information)
  • 저장소 모든 정보 알려주는 것(all)
  • 그룹에 속하지 않는 서버 보는 것(ungrouped)
  • ansible 문서 정보 알려주는 것(doc)
  • 문서를 페이지로 보는 법(more)
  • add-hoc : 단계별 명령 실행, 한번 하고 한번 실행
  • 인벤토리 내에서 time 그룹의 서버D 에게 명령어 timedatectl 실행하라는 것(실패: 서버 A, B, C, D는 ssh에 한번도 접속한 적이 없어서 접속해서 정보를 등록해야 함)
  • ssh를 통해 서버 A, B, C, D를 로그인 시켜주기
  • 서버 D 에게 명령어 timedatectl 실행: 정상 동작(경로 중요)
  • web과 db를 동시에 명령어 실행

  • root@work 1day]# touch ~/.ansible.cfg ⇒ 홈디렉토리에 생성
    • [root@work 1day]# ansible --versioncfg 파일의 우선 위선.
    • ansible [core 2.14.9]
    • config file = /root/.ansible.cfg
  • [root@work 1day]# touch ansible.cfg ⇒ 1day 디렉토리에 생성
  • [root@work 1day]# ansible --version
    • ansible [core 2.14.9]
    • config file = /root/1day/ansible.cfg

*ansible.cfg 파일을 환경변수를 설정해서 계속 그 파일만 동작 시키고 싶을 때

  • [root@work 1day]# env | grep ANSI
  • [root@work 1day]# export ANSIBLE_CONFIG=/tmp/ansible.cfg
  • [root@work 1day]# env | grep ANSI
    • ANSIBLE_CONFIG=/tmp/ansible.cfg
      • [root@work 1day]# unset ANSIBLE_CONFIG ⇒ 환경변수 삭제
      • [root@work 1day]# env | grep ANSI
  • ansible.cfg 파일 생성 후 version을 확인해서 경로를 확인한다
  • ansible.cfg 파일 위치에 따라 경로 달라짐 주의
  • export 명령어를 통해 ansible.cfg 경로 설정 가능
  • 경로 설정한 것 해제하는 법

명령어 입력 안될 때는 sudo를 통해 명령어 입력

0개의 댓글