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

업데이트:

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

본 작업은 우분투를 대상으로 초기 설치 이후의 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