[Infra] 초기 네트워크 설정 - dhcp, 고정 아이피, ssh 설치

업데이트:

[Infra] 리눅스 초기 네트워크 설정 - dhcp, 고정 아이피, ssh 설치

참고링크

운영체제 프론트엔드 백엔드 데이터베이스 인프라
리눅스구조 js필터 아파치에러로그 행삭제 아파치스쿱
프로세스 헬로월드 웹서버개념 ES기초 로그분석
네임스페이스 프로젝트생성 아파치설치 MySQL기초 beeline
디렉토리 헤더생성 flask연동 큐브리드 하둡기초
리다이렉션 async-get 장고MsSQL연결 null공백 나이파이
쓰레드 async-post 장고MySQL연결 MySQL설치(win) 백본
라즈베리파이설치 로그인페이지 장고inpectdb MySQL테이블생성 제플린
OSI7계층소개   장고read   SSL인증
OSI1계층   장고insert   커버로스
OSI2계층   장고put   도커개념
OSI3계층   장고del   도커설치
OSI4계층   flask한글요청   도커기초
OSI5,6,7계층       도커이미지
DNS서버       컨테이너네트워크
DHCP       도커API
bashrc       도커컴포즈
bash       도커볼륨
ifconfig       장고이미지
소켓프로그래밍       도커postgre
리눅스유저생성       도커이미지삭제
netstat포트열기       도커Redis
컴파일러       k8s구조
운영체제vs커널       k8s설치
작업스케쥴링       k8s서비스배포
디스크추가       POD네트워크
aws유저추가       퍼시스턴트볼륨
기초명령어       k8s에러
포트번호        

본 작업은 우분투를 대상으로 초기 설치 이후의 IP 설정에 대한 내용입니다.

0. ip 확인

작업을 하기전에 ip 확인부터 합시다.

$ ip a

1. DHCP 서버로부터 자동으로 IP 받기

1-1. 우선 다음 커맨드를 입력해서 dhclient를 리뉴

$ sudo dhclient -r

1-2. 이제 ip를 받읍시다.

$ sudo dhclient

1-3. 이더넷에 ip를 받고 네트워크를 재시작

# ifdown eth0
# ifup eth0
# /etc/init.d/network restart
or
# /etc/init.d/network restart

2. 만약 1번이 안통하는 경우(dhcp 서버로부터 ip를 받을 수 없는 경우)

만약 dhcp 서버로부터 ip를 받을 수 없는 경우라면 수동으로 ip를 입력해야한다.

2-1. 네트워크 인터페이스 확인

일단 서버에 어떤 네트워크 인터페이스가 있는지 확인해 봅시다

$ ip link

2-2. netplan 설정 파일 생성

netplan 설정 파일은 /etc/netplan 폴더에 위치하고 있음. 혹시나 /etc/netplan 디렉토리가 없다면 다음 명령으로 생성합니다.

$ sudo netplan generate

2-3. 설정 파일 확인

# cat /etc/netplan/01-network-manager-all.yaml

# Let NetworkManager manage all devices on this system
network:
  version: 2
  renderer: NetworkManager

2-4. 설정 파일 수정.

# sudo vi /etc/netplan/01-network-manager-all.yaml

# This file describes the network interfaces available on your system
# For more information, see netplan(5).
network:
  version: 2
  renderer: networkd
  ethernets:
    eno1:
      dhcp4: no
      addresses: [192.168.200.100/23]
      gateway4: 192.168.200.1
      nameservers:
              addresses: [168.126.63.1]

위 코드에서 hdcp4: no 라고 쓰써야되는데, 이는 dhcp로부터 자동으로 ip를 받지 않겠다는 것을 의미합니다. addresses는 사용할 ip인데, 보통 마지막을 100번으로 부여해서 사용하는 것 같습니다. gateway4는 말그대로 게이트웨이(라우터)를 의미하며 nameservers는 dns 서버를 의미하는데 이는 kt냐 skt냐 lg냐에 따라 달라집니다. (아래 표를 보면 위 코드는 kt를 쓰는 곳이라는 것이라는 것을 알수있죠)

KT 기본(168.126.63.1), 보조(168.126.63.2)
SKT 기본(210.220.163.82), 보조(219.250.36.130)
LG 기본(164.124.101.2), 보조(203.248.252.2)

2-5. 설정 반영

바꿨으면 반영합니다.

# sudo netplan apply

2-6. 설정 반영 확인

$ ip addr
$ ip route

3. ssh 설치 및 권한 설정

3-1. open ssh server 설치

터미널에서 다음과 같이 open ssh server 설치

$ sudo apt update
$ sudo apt install openssh-server

3-2. SSH server 실행

만약 ssh가 실행 중이면 다음과 같이 나옵니다.

$ sudo systemctl status ssh

● ssh.service - OpenBSD Secure Shell server
   Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
   Active: active (running) since Mon 2022-02-07 11:37:00 KST; 1 weeks 1 days ago
  Process: 25236 ExecReload=/bin/kill -HUP $MAINPID (code=exited, status=0/SUCCESS)
  Process: 25229 ExecReload=/usr/sbin/sshd -t (code=exited, status=0/SUCCESS)
 Main PID: 1059 (sshd)
    Tasks: 1 (limit: 4915)
   CGroup: /system.slice/ssh.service
           └─1059 /usr/sbin/sshd -D

만약 실행중이 아니라면 다음과 같이 실행합니다.

$ sudo systemctl enable ssh
$ sudo systemctl start ssh

3-3. 방화벽에 ssh 허용

방화벽에 22번포트(ssh)를 허용해줍시다.

$ sudo ufw allow ssh

3-4. 방화벽에 ssh(22번 포트) 열린거 확인

$ sudo ufw status

4-5. 특정 ip 접속 허용

# vi /etc/hosts.allow

# /etc/hosts.allow: list of hosts that are allowed to access the system.
#                   See the manual pages hosts_access(5) and hosts_options(5).
#
# Example:    ALL: LOCAL @some_netgroup
#             ALL: .foobar.edu EXCEPT terminalserver.foobar.edu
#
# If you're going to protect the portmapper use the name "rpcbind" for the
# daemon name. See rpcbind(8) and rpc.mountd(8) for further information.
#

sshd: 211.57.136.82

허용을 했으면 재시작을 해줍니다

# systemctl restart sshd

5. 아이디, 패스워드를 이용한 원격 접속 허용

위 설정만하고 돌아간다면 아이디와 비밀번호를 이용한 원격 로그인이 안될수있다. 만약 올바르게 아이디와 비밀번호를 입력해서 ssh 접속을 하려고 하는데 permioon denied가 뜬다면 다음과 같이 파일을 수정하자.

$ sudo vim /etc/ssh/sshd_config
----파일 내용----
#PermitRootLogin prohibit-password
PermitRootLogin yes
...
PasswordAuthentication yes

파일을 수정했다면 재시작

$ sudo /etc/init.d/ssh restart

그리고 나서 ssh 접속을 해보자! 잘 될 것이다.

부록: ssh 비활성화

$ sudo systemctl stop ssh

만약 부팅 중에 실행되지 않도록 하려면 다음 커맨드를 입력

$ sudo systemctl disable ssh

만약 부팅 중에 실행되게끔 하려면 다음 커맨드를 입력

$ sudo systemctl stop ssh
$ sudo systemctl enable ssh