728x90

[ 스위치 모드 변경하기 ]

① Switch>enable ☞ 유저모드(User Mode) ② Switch#config terminal ☞ 프리빌리지 모드(관리자모드)

③ Switch(config)#interface fastethernet 0/1 ☞ 구성모드(configuration mode)

④ Switch(config-if)# ☞ 인터페이스 구성모드

⑤ Switch(config-if)#exit -> 빠져나가기

⑥ Switch(config)#exit ⑦ Switch# exit ⑧ Switch> enable

⑨ Switch# show interface status -> 포트별 상태를 알아보기 ( 명령어는 반드시 관리자모드에서

입력해야한다.)

⑩ Switch# show ? -> show 다음 입력할 수 있는 명령어 모음 표시

⑪ Switch# show interface ?

⑫ Switch# show interfaces -> 각 포트의 설정보기 ⑬ Switch# show interface -> 각 포트의 설정보기

 

[ 포트설정 바꾸기 ]

① Switch>enable ② Switch# configure terminal

③ Switch(config)# interface fastethernet 0/1

④ Switch(config-if)# speed 100 -> 속도를 100M 로 설정

⑤ Switch(config-if)# duplex full -> 전송방식을 전이중으로 설정

⑥ Switch(config-if)# exit -> 구성모드로 가기 ⑦ Switch(config)# exit -> 관리자 모드로 가기

⑧ Switch# show interface status

⑨ Switch# show interface fastethernet 0/1 (speed {auto | 100 | 10 } duplex {auto | half | full} )

 

1 번 포트를 속도(대역폭)은 100Mbps, 통신방식은 Full-duplex ,2 번 포트를 속도(대역폭)은 10Mbps,

통신방식은 half-duplex 로 설정하시오.

 

[ hostname 설정하기]

① Switch#config terminal ② Switch(config)# hostname atom 또는 hostname 노무현

노무현# //atom 은 이름이므로 다른 이름을 마음대로 사용할수 있다.

 

[ secret 암호설정하기]

① Switch# config terminal

② Switch(config)# enable secret atom123 //암호는 자유롭게 지정할 수 있다.(암호는 구성모드에서

지정한다)

③ Switch(config)# exit ④ Switch# exit

Switch> enable

Password: ******

Switch# // 이제는 암호를 넣어야 관리자모드로 들어갈 수 있다.

 

[ 스위치에 IP 주소 설정하기 ]

① Switch> enable ② Switch# config terminal

③ Switch(config)# interface vlan 1 ④ Swtitch(config-if)# ip address 192.168.100.1 255.255.255.0

⑤ Switch(config-if)# exit ⑥ Switch(config)# exit

⑦ Switch# show interface vlan1 또는 vlan 1

 

[ 기본 게이트웨이 설정하기 ]

① Switch# config terminal ② Switch(config)# ip default-gateway 192.168.0.1

③ Switch(config)# exit ④ Switch# show running-config // 현재 스위치에 설정된 모든 내용 보여주기

 

[ 암호 삭제하기 ] ① Switch(config)# no enable secret password 지정한 암호

 

[ 라우터 명령어 집합 ]

Router>enable (사용자모드에서 관리자모드로 전환하기)

 

[현재 사용하고 있는 구성파일 보기-RAM]

Router# show running-config 또는 write terminal

 

[NVRAM 에 저장된 구성파일 보기]

Router# show startup-config

 

[현재 구성을 NVRAM 에 저장하기]

Router# write memory 또는

copy running-config startup config

 

[ 플래시 메모리 정보보기 ]

Router# show flash

 

[ 라우터의 현재정보 보기 ]

Router# show version

 

[ 인터페이스 정보보기 ]

Router# show interface

 

[ 이더넷 인터페이스 0 번 보기 ]

Router# show interface ethernet 0

 

[ 라우터 CPU 사용률 보기 ]

Router# show processes cpu

 

[ 라우터 메모리 상태 보기 ]

Router# show memory

 

[ 구성모드로 들어가기 ]

Router# configure terminal

Router(config)# CTRL + P -> 명령어 히스토리 단축키

 

[ 라우터의 이름과 enable secret , enble password 설정하기 ]

Router(config)# hostname CISCO-2500

CISCO-2500(config)# enable secret cisco

CISCO-2500(config)# enable password seoul

CISCO-2500(config)# exit

CISCO-2500# exit

CISCO-2500> enable

Password: secret 암호가 설정되어있으면 secret 를 넣는다. 암호는 대소문자 구분합니다.

CISCO-2500# show running-config (현재 설정된 구성정보보기)

secret 암호와 패스워드 암호가 보인다.

 

[ 텔넷 접속 패스워드 설정하기 ]

CISCO-2500> enable

Router#> configure terminal

Router(config)# line vty 0 4

Router(config-line)#login ( 라인구성모드 )

Router(config-line)#password korea

Router(config-line)# exit

Router(config)#

 

[ 인터페이스 구성모드 들어가서 이더넷에 IP 주소 할당하기 ]

Router# configure terminal

Router(config)# interface ethernet 0

Router(config-if)# no shutdown ( 인터페이스 살리기 )

Router(config-if)#ip address 211.23.156.30 255.255.255.224

Router(config-if)# exit

Router(config)# exit

 

[ 시리얼 인터페이스 설정하기 ]

Router# configure terminal ( 구성모드로 들어가기 )

Router(config)# interface serial 0

Router(config-if)# no shutdown

Router(config-if)# ip address 10.123.51.41 255.255.255.252

Router(config-if)# exit

Router(config)# exit

Router# show running-config (현재 구성설정보기 )

ethernet 0 에 할당된 IP 주소를 확인한다. 텔넷에 할당된 암호를 확인한다.

Router# show interface ( 현재 인터페이스 보기 )

이더넷 0 가 up 으로 설정되어 있는지 확인한다.

 

[ 라우팅 프로토콜 설정하기 ]

Router> enable

Router# config terminal

Router(config)# router igrp 100

Router(conifg-router)# network 211.23.156.0

Router(conifg-router)# network 10.0.0.0

Router(conifg-router)# Ctrl+Z(exit) ( 프리빌리지모드로 나가기)

Router# show running-config ( 구성파일 보기 )

 

[RAM 의 구성파일을 NVRAM 에 저장하기]

Router# copy running-config startup-config

 

[ 플래시 메모리 내용보기 ]

Router# show flash

 

[IOS 이미지 파일을 TFTP 서버로 백업하기]

Router# copy flash tftp

 

[ TFTP 서버에서 플래시메모리 IOS 파일 복원하기 ]

Router# copy tftp flash

 

[ 라우터의 구성파일 백업하기 ]

Router# copy startup-config tftp

 

[라우터의 구성파일 복원하기]

Router# copy tftp startup-config

 

[ 라우팅 테이블 보기 ]

Router# show ip route

 

[ 스태틱 라우팅 구현하기 ]

Router# configure terminal

Router(config)# ip route 210.162.65.0 255.255.255.0 203.155.10.2 1

Router(config)# exit

Router# show ip route

 

[ 디폴트 라우팅 설정하기 ]

Router>enable

Router# configure terminal

Router(config)# interface ethernet 0

Router(config-if)# ip address 211.23.123.1 255.255.255.0

Router(config-if)# exit

Router(config)# interface serial 0

Router(config-if)# ip address 61.105.112.41 255.255.255.252

Router(config-if)# exit

Router(config)# ip route 0.0.0.0 0.0.0.0 61.105.112.42

Router(config)# exit

Router# write

Router#

728x90

728x90

IP 및 서브넷 문제.

 

1. IP Address "128.10.2.3"을 바이너리 코드로 전환하면 어떤 값이 되는가?

가. 11000000 00001010 00000010 00000011

나. 10000000 00001010 00000010 00000011

다. 10000000 10001010 00000010 00000011

라. 10000000 00001010 10000010 00000011

 

2. 네트워크상에서 기본 서브넷 마스크가 구현될 때 IP Address가 203.240.155.32인 경우 아래 설명 중 올바른 것은?

가. Network ID는 203.240.155이다.

나. Network ID는 203.240 이다.

다. Host ID는 155.32가 된다.

라. Host ID가 255일때는 루프백(Loopback)용으로 사용된다.

 

3. B Class 네트워크에서 6개의 서브넷이 필요할 때, 가장 많은 호스트를 사용할 수 있는 서브넷 마스크 값은?

가. 255.255.192.0 나. 255.255.224.0

다. 255.255.240.0 라. 255.255.248.0

 

4. C Class의 IP Address에 대한 설명으로 옳지 않은 것은?

가. Network ID는 “192.0.0 ~ 223.255.255”이고, Host ID는 “1 ~ 254”이다.

나. IP Address가 203.240.155.32 인 경우, Network ID는 203.240, Host ID는 155.32가 된다.

다. 통신망의 관리자는 Host ID "0", "255"를 제외하고, 254개의 호스트를 구성할 수 있다.

라. Host ID가 255일 때는 메시지가 네트워크 전체로 브로드 캐스트 된다.

 

5. IPv4에서 처음 옥테트(Octet)의 상위 비트가 ‘10'으로 시작하는 Class는?

가. A Class 나. B Class

다. C Class 라. D Class

 

6. A회사에 호스트가 2,500대 존재한다. 이 경우 B Class 주소를 할당받게 되면 주소의 낭비가 심하므로 이에 대한 해결책으로 연속된 C Class를 13개 신청하여 이들을 하나의 네트워크로 구성하려고 한다. 서브넷의 올바른 설정은?

가. 255.255.240.0 나. 255.255.255.240

다. 255.255.128.0 라. 255.255.192.0

 

7. 가장 많은 Network 수를 제공하는 Class는?

가. A Class 나. B Class

다. C Class 라. D Class

 

8. C Class의 네트워크에서 호스트 수가 12개 일 때 분할할 수 있는 최대 서브넷 수는?

가. 2 나. 4

다. 8 라. 16

 

9. 인터넷에서 사용되는 네트워크 C Class에서 한 네트워크 내의 일반적인 최대 호스트 수는?

가. 65,534 나. 254 

다. 1,024  라. 128 

 

10. B Class에 대한 설명 중 옳지 않은 것은?

가. Network ID는 128.0 ~ 191.255 이고, Host ID는 0.1 ~ 255.254 가 된다.

나. IP Address가 150.32.25.3인 경우, Network ID는 150.32 Host ID는 25.3 이 된다.

다. Multicast 등과 같이 특수한 기능이나 실험을 위해 사용된다.

라. Host ID가 255.255일 때는 메시지가 네트워크 전체로 브로드 캐스트 된다.

 

11. B Class의 호스트 ID에 사용 가능한 Address 개수는?

가. 116,777,224개 나. 65,534개

다. 254개 라. 126개

 

12. 호스트의 IP Address가 “201.100.5.68/28” 일 때, Network ID로 올바른 것은?

가. 201.100.5.32 나. 201.100.5.0

다. 201.100.5.64 라. 201.100.5.31

 

** 다음의 각 IP 어드레스의 서브넷, 브로드케스트 어드레스, 그리고 유효한 호스트의 범위를 적으시오. 

 

13. 172.16.10.5 255.255.255.128

서브넷 : 

브로드케스트 어드레스 : 

유효한 호스트의 범위 :

 

14. 172.16.10.33 255.255.255.224

서브넷 : 

브로드케스트 어드레스 : 

유효한 호스트의 범위 : 

 

15. 172.16.10.65 255.255.255.192

서브넷 : 

브로드케스트 어드레스 : 

유효한 호스트의 범위 : 

 

16. 172.16.10.17 255.255.255.252

서브넷 : 

브로드케스트 어드레스 : 

유효한 호스트의 범위 : 

 

17. 172.16.10.33 255.255.255.240

서브넷 : 

브로드케스트 어드레스 : 

유효한 호스트의 범위 : 

 

18. 192.168.100.25 255.255.255.252

서브넷 : 

브로드케스트 어드레스 : 

유효한 호스트의 범위 : 

 

19. 192.168.100.17 서브넷팅을 위해 4비트 사용 

서브넷 : 

브로드케스트 어드레스 : 

유효한 호스트의 범위 : 

 

20. 192.168.100.62 서브넷팅을 위해 3비트 사용

서브넷 : 

브로드케스트 어드레스 : 

유효한 호스트의 범위 : 

 

21. 192.168.100.17 255.255.255.248

서브넷 : 

브로드케스트 어드레스 : 

유효한 호스트의 범위 : 

 

22.  RFC 1918에 정의된 IPv4 주소의 사설 대역의 영역을 각 클래스 별로 적으시오.

728x90

문제1)

회사에서 211.168.83.0 (클래스C)의 네트워크를 사용하고 있다. 내부적으로 5개의 서브넷을 사용하기 위해 서브넷 마스크를 255.255.255.224로 설정하였다. 이때, 211.168.83.34가 속한 서브넷의 브로드캐스트 주소는?

 

10000000 -> 128

11000000 -> 192

11100000 -> 224

 

서브넷마스크가 ~.224이니까 3개 비트를 쓴 것이므로 2^3=8, 8개로 분할해야 함

256개를 8개로 분할한 것이기 때문에 한개당 32가 됨

 

0~31

32~63 -> 34는 여기 속하므로 브로드캐스트 주소는 211.168.83.63

64~95

 

문제2)

어느회사 A가 공인 IP 주소가 210.100.1.0인 네트워크를 받았다. A사의 건물은 8층이며 각 층마다 네트워크를 달리했으면 한다. 각 층별로 컴퓨터 30대를 놓으려면 서브넷마스크는 어떻게 되는가?

 

30개라는 것은 256을 8로 분할했을 때 32개이므로 8개로 분할하겠다는 뜻임

8=2^3이므로 앞 세비트가 1이면 됨

11100000 = 224

 

따라서 서브넷마스크 255.255.255.0에서 255.255.255.224로 서브넷팅을 하면 각 8개층이 32개씩 사용할 수 있게됨 (여기서 브로드캐스트 주소를 빼고 하나더 뭐였는지 기억이 안나는데 -2를 하면 30개)

 

문제3)

IP주소 203.10.24.27의 서브넷마스크는 255.255.255.240이다. 이때 네트워크의 호스트 범위와 브로드캐스트 주소는?

 

10000000 -> 128

11000000 -> 192

11100000 -> 224

11110000 -> 240

 

서브넷마스크가 240이므로 11110000이고 2^4=16개로 분할하겠다는 의미임

256/16 = 16이기 떄문에 범위는

0~15

16~31 -> 27이므로 호스트 범위는 203.10.24.16 ~ 203.10.24.31이 되고 브로드캐스트 주소는 31이 됨

32~47

 

문제4)

C클래스 IP 대역을 사용중인 것을 각 사무실마다 51개의 IP를 각각 부여하려할때 사용할 수 있는 서브넷마스크의 비트수는?

 

10000000 -> 128 -> 2^1 = 2개로 분할 -> 256/2 = 128개

11000000 -> 192 -> 2^2 = 4개로 분할 -> 256/4 = 64개 -----> 51개의 IP 부여 가능

11100000 -> 224 -> 2^3 = 8개로 분할 -> 256/8 = 32개

11110000 -> 240

 

따라서 서브넷마스크는 255.255.255.192이고 비트수는 26비트(1*24 + 2)

'IT > 네트워크(Network)' 카테고리의 다른 글

Cisco SG350-10-K9  (0) 2021.07.04
IP 및 서브넷 문제(22문항)  (0) 2021.07.04
DNS IP 주소(Google, Cloudflare)  (0) 2021.07.04
OpenWRT에서 IPv6 비활성화 하기  (0) 2021.07.04
OpenWRT 보안 강화하기  (0) 2021.07.04
728x90

Google DNS IP addresses

(IPv4)

8.8.8.8

8.8.4.4

 

(IPv6)

2001:4860:4860::8888

2001:4860:4860::8844

 

Cloudflare DNS IP addresses

(IPv4)

1.1.1.1

1.0.0.1

 

(IPv6)

2606:4700:4700::1111

2606:4700:4700::1001

728x90

uci set 'network.lan.ipv6=off'

uci set 'network.wan.ipv6=off'

uci set 'dhcp.lan.dhcpv6=disabled'

/etc/init.d/odhcpd disable

uci commit #설정저장

'IT > 네트워크(Network)' 카테고리의 다른 글

서브넷마스크 계산문제(4문항)  (1) 2021.07.04
DNS IP 주소(Google, Cloudflare)  (0) 2021.07.04
OpenWRT 보안 강화하기  (0) 2021.07.04
OpenWRT 안전하게 종료하기  (0) 2021.07.04
OpenWRT 패키지 설치하는 방법  (0) 2021.07.04
728x90

Recommended security settings

 

The following settings are highly recommended to complete before connecting to the Internet。

 

Set a secure password

Only allow access to ssh from lan, change the port

Only allow local devices to access luci

 

Edit /etc/config/uhttpd,Change the original 0.0.0.0 and [::] addresses to the local lan address, for example:

 

# HTTP listen addresses, multiple allowed

list listen_http 192.168.2.1:80

list listen_http [fd00:ab:cd::1]:80

 

# HTTPS listen addresses, multiple allowed

list listen_https 192.168.2.1:443

list listen_https [fd00:ab:cd::1]:443

 

Restart the service:

/etc/init.d/uhttpd restart

728x90

Safe shutdown operation

 

Enter the ttyd terminal, enter the poweroff command and hit enter, wait until the led light is off, and then unplug the power supply.

(ttyd 터미널에 들어가서 poweroff 명령을 입력하고 enter를 누른 다음, led light가 꺼질 때까지 기다렸다가 전원 공급기의 플러그를 뺍니다.)

728x90

Install Software Packages

 

1. Update Package List

Before install software packages update the package list:

$ opkg update

 

2. List Available Packages

$ opkg list

 

3. List Installed Packages

$ opkg list-installed

 

4. Install Packages

$ opkg install <package names>

 

5. Remove Packages

$ opkg remove <package names>

728x90

2기가바이트 가량의 파일을 다운로드 받았을때, 정말 이 큰 용량의 파일이 단 1byte의 오류도 없이 전

송된게 맞을까? 하는 의구심이 들 때가 있습니다. 영화파일은 오류가 조금 나더라도 재 인코딩이나 복원, 스킵하면 큰 지장이 없지만 운영체제의 이미지 파일인 경우는 문제가 매우 심각해집니다. 이럴때 이 파일이 원본과 동일한지의 여부를 체크하는것이 바로 해쉬값 체크입니다.

 

원본의 해쉬값을 이미 알고있을때, 내가 다운로드 완료한 파일의 해쉬값을 다시 측정해 값이 일치하다면 100% 동일한 바이너리를 가지고 있는 것입니다.

 

CRC와 SHA1값이 동일한지를 아주 간단한 프로그램으로 측정하면 됩니다.

fasthash039b_kr.zip
0.21MB

728x90

CPU Governor 종류

 

* OnDemand : 현재 사용량에 따라 CPU frequnecy를 설정. CPU는 주파수를 빠르게 변경할 능력이 필요

* OnDemandX : 배터리 친화적인 OnDemand이며 I/O 스케줄러에 따라 성능이 크게 좌우.

* Conservative : 느린 OnDemand. 가능한 최저 속도에서 동작하도록 구현

  예) OnDemand는 min -> max로 바로 변경 / Conservative는 min -> lower -> mid -> hig -> max 변경

* Interactive : OnDemand처럼 CPU에 위치한 부하에 따라 주파수를 변경하나 훨씬 빠르게 반응

* Performance : CPU를 최고 주파수로 설정

* Powersave : CPU를 최저 주파수로 설정

* Userspace : 테스트를 위해 사용. CPU를 사용자가 지정한 주파수로 동작

 

현재 설정된 governors 확인

# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

 

사용가능한 설정

# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors

 

governors 변경

# echo performance > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

 

* /sys/devices/system/cpu/ -> cpu[n] n 수만큼 다 변경

 

예)

# echo performance > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

# echo performance > /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor

# echo performance > /sys/devices/system/cpu/cpu2/cpufreq/scaling_governor

# echo performance > /sys/devices/system/cpu/cpu3/cpufreq/scaling_governor

# echo performance > /sys/devices/system/cpu/cpu4/cpufreq/scaling_governor

# echo performance > /sys/devices/system/cpu/cpu5/cpufreq/scaling_governor

# echo performance > /sys/devices/system/cpu/cpu6/cpufreq/scaling_governor

# echo performance > /sys/devices/system/cpu/cpu7/cpufreq/scaling_governor

# echo performance > /sys/devices/system/cpu/cpu8/cpufreq/scaling_governor

# echo performance > /sys/devices/system/cpu/cpu9/cpufreq/scaling_governor

# echo performance > /sys/devices/system/cpu/cpu10/cpufreq/scaling_governor

# echo performance > /sys/devices/system/cpu/cpu11/cpufreq/scaling_governor

728x90

사이트 운영이든 프로그램이나 앱 사용 시 보안 업데이트는 반드시 적용해야합니다.

우분투 서버 운영 시 우분투 서버 보안 자동 업데이트 및 업그레이드 방법 및 이 결과 메일 통보 방법에 대해 살펴봅니다.

 

서버 및 프로그램 보안 업데이트의 필요성

인터넷이 발전하면서 인터넷 사용자가 증가하고, 인터넷을 이용한 비지니스가 크게 융성해지고 있기 때문에 이에 편승한 해킹 위험이 크게 증가하고 있습니다.

 

테스트 또는 교육용으로 해킹하는 경우도 있겠지만 대부분은 무엇인가 이득을 노리는경우가 많죠. 그리고 이는 사용자가 많아질수록, 관련된 비지니스가 커질수록 시도는 증가하기 마련입니다.

 

이렇게 해킹 위험이 증가하고 프로그램등이 빠르게 변하면서 그동안 생각하지 못했던 위약점들이 나타나고 예전에 몰랐던 취약점을 새롭게 발견하기도 합니다.

 

그렇기 때문에 이러한 취약점들은 보완하는 보안 업데이트는 굉장히 자주 이루어집니다. 서버나 사이트를 안전하게 지키려면 이런 보안 업데이트를 바로바로 실행해 주는 것이 필요합니다.

 

실제로 해킹등은 이러한 업데이트를 무시하고 방치된 서버나 사이트에서 주로 일어나고 있다는 것도 보안 업데이트 및 업그레이드의 중요성을 웅변해 준다고 할 수 있습니다.

 

그리고 이런 업데이트 및 업그레이드 시 반드시 사전 백업이 필수적이죠. 어떤 일이 일어날지 모르기 때문이죠.

 

그런데 전업으로 서버 운영을 하는 담당자가 있다면 매일 일정 시간에 안정적을 상황을 파악해 업데이트 및 업그레이드를 진행 후 문제가 없는지 확인할 수 있지만  대부분의 경우는 그렇지 않고 서버에 접속할 여유가 적습니다.

 

그렇기 때문에 최소한 보안 업데이트 및 업그레이드는 자동으로 이루어지고 이를 메일로 통보 받는 것이 필요합니다. 그리고 이러한 업데이트는 가능하면 사용하지 않는 새벽 시간에 이루어 지도록 설정하는 것이 필요할 것입니다.

 

보안 업데이트 전에 사전 백업

보안 업데이트는 자동 실행

보안 업데이트로 시스템 부팅이 필요한 경우, 시스템 부팅은 사용자가 적은 새벽 시간에 진행

보안 업데이트 내용은 메일로 송부

 

우분투(Ubuntu) 서버 보안 자동 업데이트 방법

여기서는 우분투(Ubuntu) 서버 운영 시 보안 자동 업데이트 방법에 대해서 살펴봅니다.

 

어느 운영체제나 마찬가지겠지만 리눅스도 필요가 있으면 이를 지원하는 다양한 방법들을 제공되고 있습니다.

 

우분투 리눅스에서는 보안 업데이트가 발생 시 관련 내용만 업데이트하도록 하는 unattended-upgrades라는 프로그램이 있습니다. 오늘은 이를 이용해 우분투 서버 자동 업데이트 방법에 대해서 알아보도록 하겠습니다.

 

unattended-upgrades 프로그램 설치

먼저 서버 업데이트 및 업그레이드를 통해서 최신 상태로 만듭니다.

sudo apt update && sudo apt upgrade 

 

다음으로는 위에서 이야기한 unattended-upgrades 프로그램을 설치합니다. 이는 아래 명령을 사용합니다. 별다른 메일 프로그램이 설치되어 있지 않으면 postfix를 설치합니다.

sudo apt install unattended-upgrades apt-listchanges bsd-mailx 

 

지메일 릴레이 서버를 이용해 우분투 서버에서 메일 발송 시스템 구축에 대해서는 아래 글을 참조하시기 바랍니다.

 

구글 지메일 이용 우분투 메일 서버 구축하기

설치를 시작하다가 중간에 이 프로그램이 서버 용량을 사용할 것인데 설치를 진행할 것인지 질문합니다. 사용하겠다는 용량은 기껏 588K 정도 되기 때문에 부담없이 Y를 누릅니다.

 

# sudo apt install unattended-upgrades apt-listchanges bsd-mailx

Reading package lists... Done

Building dependency tree       

Reading state information... Done

unattended-upgrades is already the newest version (2.3).

The following packages were automatically installed and are no longer required:

  lockfile-progs sendmail-base sendmail-cf sensible-mda

Use 'sudo apt autoremove' to remove them.

Suggested packages:

  www-browser x-terminal-emulator

The following NEW packages will be installed:

  apt-listchanges bsd-mailx

0 upgraded, 2 newly installed, 0 to remove and 31 not upgraded.

Need to get 150 kB of archives.

After this operation, 588 kB of additional disk space will be used.

Do you want to continue? [Y/n] Y

 

설정 보안 업데이트 허용

다음으로는 강제 보안 업데이트를 허용합니다. 아래와 같은 명령을 사용하면 중간에 unattended-upgrades를 사용하도록 설정할지 질문하는 팝업이 뜹니다.

sudo dpkg-reconfigure -plow unattended-upgrades 

Applying updates on a frequent basis is an important part of keeping systems secure. By default, updates need to be applied manually using package management tools. Alternatively, you can choose to have this system automatically download and install important updates.Automatically download and install stable updates?

 

오늘 목적이 바로 그것이므로 키보드를 옮겨 Yes를 선택합니다.

 

우분투 보안 자동 업데이트 설치 옵션, unattended-upgrades 사용 허용

 

unattended-upgrades 세부 옵션

이제 unattended-upgrades 세부 옵션을 정합니다. 이는 아래 파일을 편집합니다. 저는 아래 몇 가지를 조정했습니다.

 

① 업데이트 결과를 받을 이메일 주소 설정(73번째 줄)

② 보안 업데이는 종종 우분투 서버 리부팅이 필요할 경우가 있습니다. 이 경우 관리자 확인없이 리부팅 허용(93번째 줄)

③ 서버 리부팅이 필요한 경우 리부팅 시간을 위험이 적은 새벽 시간으로 설정(102번째 줄)

 

아래는 제가 설정한 내용입니다. 설명 등 군더더기 내용을 그대로 두었습니다.

 

// Automatically upgrade packages from these (origin:archive) pairs

//

// Note that in Ubuntu security updates may pull in new dependencies

// from non-security sources (e.g. chromium). By allowing the release

// pocket these get automatically pulled in.

Unattended-Upgrade::Allowed-Origins {

        "${distro_id}:${distro_codename}";

        "${distro_id}:${distro_codename}-security";

        // Extended Security Maintenance; doesn't necessarily exist for

        // every release and this system may not have it installed, but if

        // available, the policy for updates is such that unattended-upgrades

        // should also install from here by default.

        "${distro_id}ESMApps:${distro_codename}-apps-security";

        "${distro_id}ESM:${distro_codename}-infra-security";

//      "${distro_id}:${distro_codename}-updates";

//      "${distro_id}:${distro_codename}-proposed";

//      "${distro_id}:${distro_codename}-backports";

};

 

// Python regular expressions, matching packages to exclude from upgrading

Unattended-Upgrade::Package-Blacklist {

    // The following matches all packages starting with linux-

//  "linux-";

 

    // Use $ to explicitely define the end of a package name. Without

    // the $, "libc6" would match all of them.

//  "libc6$";

//  "libc6-dev$";

//  "libc6-i686$";

 

    // Special characters need escaping

//  "libstdc\+\+6$";

 

    // The following matches packages like xen-system-amd64, xen-utils-4.1,

    // xenstore-utils and libxenstore3.0

//  "(lib)?xen(store)?";

 

    // For more information about Python regular expressions, see

    // https://docs.python.org/3/howto/regex.html

};

 

// This option controls whether the development release of Ubuntu will be

// upgraded automatically. Valid values are "true", "false", and "auto".

Unattended-Upgrade::DevRelease "auto";

 

// This option allows you to control if on a unclean dpkg exit

// unattended-upgrades will automatically run

//   dpkg --force-confold --configure -a

// The default is true, to ensure updates keep getting installed

//Unattended-Upgrade::AutoFixInterruptedDpkg "true";

 

// Split the upgrade into the smallest possible chunks so that

// they can be interrupted with SIGTERM. This makes the upgrade

// a bit slower but it has the benefit that shutdown while a upgrade

// is running is possible (with a small delay)

//Unattended-Upgrade::MinimalSteps "true";

 

// Install all updates when the machine is shutting down

// instead of doing it in the background while the machine is running.

// This will (obviously) make shutdown slower.

// Unattended-upgrades increases logind's InhibitDelayMaxSec to 30s.

// This allows more time for unattended-upgrades to shut down gracefully

// or even install a few packages in InstallOnShutdown mode, but is still a

// big step back from the 30 minutes allowed for InstallOnShutdown previously.

// Users enabling InstallOnShutdown mode are advised to increase

// InhibitDelayMaxSec even further, possibly to 30 minutes.

//Unattended-Upgrade::InstallOnShutdown "false";

 

// Send email to this address for problems or packages upgrades

// If empty or unset then no email is sent, make sure that you

// have a working mail setup on your system. A package that provides

// 'mailx' must be installed. E.g. "user@example.com"

Unattended-Upgrade::Mail "업데이트 상황을 받아 볼 이메일 주소";

 

// Set this value to one of:

//    "always", "only-on-error" or "on-change"

// If this is not set, then any legacy MailOnlyOnError (boolean) value

// is used to chose between "only-on-error" and "on-change"

 

// Remove unused automatically installed kernel-related packages

// (kernel images, kernel headers and kernel version locked tools).

//Unattended-Upgrade::Remove-Unused-Kernel-Packages "true";

 

// Do automatic removal of newly unused dependencies after the upgrade

//Unattended-Upgrade::Remove-New-Unused-Dependencies "true";

 

// Do automatic removal of unused packages after the upgrade

// (equivalent to apt-get autoremove)

//Unattended-Upgrade::Remove-Unused-Dependencies "false";

 

// Automatically reboot *WITHOUT CONFIRMATION* if

//  the file /var/run/reboot-required is found after the upgrade

Unattended-Upgrade::Automatic-Reboot "true";

 

// Automatically reboot even if there are users currently logged in

// when Unattended-Upgrade::Automatic-Reboot is set to true

//Unattended-Upgrade::Automatic-Reboot-WithUsers "true";

 

// If automatic reboot is enabled and needed, reboot at the specific

// time instead of immediately

//  Default: "now"

Unattended-Upgrade::Automatic-Reboot-Time "03:00";

 

// Use apt bandwidth limit feature, this example limits the download

// speed to 70kb/sec

//Acquire::http::Dl-Limit "70";

 

// Enable logging to syslog. Default is False

// Unattended-Upgrade::SyslogEnable "false";

 

// Specify syslog facility. Default is daemon

// Unattended-Upgrade::SyslogFacility "daemon";

 

// Download and install upgrades only on AC power

// (i.e. skip or gracefully stop updates on battery)

// Unattended-Upgrade::OnlyOnACPower "true";

 

// Download and install upgrades only on non-metered connection

// (i.e. skip or gracefully stop updates on a metered connection)

// Unattended-Upgrade::Skip-Updates-On-Metered-Connections "true";

 

// Verbose logging

// Unattended-Upgrade::Verbose "false";

 

// Print debugging information both in unattended-upgrades and

// in unattended-upgrade-shutdown

// Unattended-Upgrade::Debug "false";

 

// Allow package downgrade if Pin-Priority exceeds 1000

// Unattended-Upgrade::Allow-downgrade "false";

 

APT 변경 사항 발생 시 받을 메일 주소 변경

다음으로는 listchanges.conf를 편집해 APT 변경 사항 발생 시 받아볼 이메일 주소를 root에서 설정합니다.

# vi /etc/apt/listchanges.conf 

 

여기 설정은 매우 간단한데요. 아래와 같은 항목으로 구성되어 있고 이중 메일 주소를 설정하면 됩니다.

 

[apt]

frontend=pager

which=news

email_address=업데이트

email_format=text

confirm=false

headers=false

reverse=false

save_seen=/var/lib/apt/listchanges.db

 

테스트

아래와 같은 명령을 사용해 제대로 작동하는지 확인해 봅니다.

sudo unattended-upgrades --dry-run

 

그러면 아래와 같은 형식으로 변경된 내용을 출력해 줍니다.

# sudo unattended-upgrades --dry-run 

apt-listchanges: Reading changelogs...

apt-listchanges: Reading changelogs...

/usr/bin/dpkg --status-fd 10 --no-triggers --unpack --auto-deconfigure /var/cache/apt/archives/snmp_5.8+dfsg-2ubuntu2.1_amd64.deb /var/cache/apt/archives/libsnmp35_5.8+dfsg-2ubuntu2.1_amd64.deb 

/usr/bin/dpkg --status-fd 10 --configure --pending 

apt-listchanges: Reading changelogs...

apt-listchanges: Reading changelogs...

/usr/bin/dpkg --status-fd 10 --no-triggers --unpack --auto-deconfigure /var/cache/apt/archives/glib-networking-common_2.64.2-1ubuntu0.1_all.deb /var/cache/apt/archives/glib-networking_2.64.2-1ubuntu0.1_amd64.deb /var/cache/apt/archives/glib-networking-services_2.64.2-1ubuntu0.1_amd64.deb 

/usr/bin/dpkg --status-fd 10 --configure --pending 

apt-listchanges: Reading changelogs...

apt-listchanges: Reading changelogs...

/usr/bin/dpkg --status-fd 10 --no-triggers --unpack --auto-deconfigure /var/cache/apt/archives/libsnmp-base_5.8+dfsg-2ubuntu2.1_all.deb 

/usr/bin/dpkg --status-fd 10 --configure --pending 

apt-listchanges: Reading changelogs...

apt-listchanges: Reading changelogs...

/usr/bin/dpkg --status-fd 10 --no-triggers --unpack --auto-deconfigure /var/cache/apt/archives/libseccomp2_2.4.3-1ubuntu3.20.04.2_amd64.deb 

/usr/bin/dpkg --status-fd 10 --no-triggers --configure libseccomp2:amd64 

/usr/bin/dpkg --status-fd 10 --configure --pending 

apt-listchanges: Reading changelogs...

apt-listchanges: Reading changelogs...

/usr/bin/dpkg --status-fd 10 --no-triggers --unpack --auto-deconfigure --recursive /tmp/apt-dpkg-install-m8fgGO 

/usr/bin/dpkg --status-fd 10 --configure --pending 

apt-listchanges: Reading changelogs...

apt-listchanges: Reading changelogs...

/usr/bin/dpkg --status-fd 10 --no-triggers --unpack --auto-deconfigure /var/cache/apt/archives/linux-libc-dev_5.4.0-40.44_amd64.deb 

/usr/bin/dpkg --status-fd 10 --configure --pending 

 

참고

이는 우분투 서버 보안 자동 업데이트 방법은 아래 글을 참조해 테스트 결과를 기반으로 재정리 했습니다.

 

아래 참고글은 우분투 18.04를 기준으로 했지만 저는 우분투 20.04에서 테스트해 보았습니다.

 

How to set up automatic updates for Ubuntu Linux 18.04

 

그리고 메일을 실행시마다 보내는 것은 아니고 문제가 발생하거나 패키지 업그레이드(problems or packages upgrades)가 발생시에만 보내게 됩니다.

728x90

우분투(Ubuntu)에서 시스템 및 패키지를 업데이트하고 사용하지 않는 패키지를 자동으로 삭제하는 방법

 

#!/bin/sh

sudo apt-get clean

sudo apt-get autoclean

 

sudo apt-get update

sudo apt-get -y upgrade

sudo apt-get -y dist-upgrade

 

sudo apt-get autoremove

 

sudo apt-get autoclean

sudo apt-get clean

 

sudo apt-get check

728x90

패키지 업데이트

$ sudo apt-get update

 

크롬 다운로드

$ sudo wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb

 

크롬 설치

$ sudo apt install ./google-chrome-stable_current_amd64.deb

728x90

Docker 설치

Docker를 사용하면 운영체제와 독립적인 이미지를 인스턴스로 올려 컨테이너로 작동시킬 수 있다. 아키텍쳐의 구성 및 확정, 배포 방법이 비약적으로 간소화됩니다. CentOS 7에서의 설치 및 실행 방법은 아래와 같습니다.

 

# Docker 저장소 설치

$ curl -fsSL https://get.docker.com/ | sh

 

# Docker 서비스 시작

$ sudo systemctl start docker

 

# Docker 서비스 작동 상태 확인

$ sudo systemctl status docker

 

# Docker 서비스를 운영체제 부팅시 자동 시작하도록 설정

$ sudo systemctl enable docker

 

# docker 명령어를 sudo 없이 사용하기 위해 계정을 docker 그룹에 소속 (계정 재접속 필요)

$ sudo usermod -aG docker $USER 

 

# 설치된 docker 버전 확인

$ docker --version

Docker version 1.13.1, build 7d71120/1.13.1

 

# hello-world 컨테이너 실행 확인

$ docker run hello-world

Hello from Docker!

This message shows that your installation appears to be working correctly.

 

Docker Compose 설치

Docker의 단점은 애플리케이션마다 각각의 컨테이너로 독립적으로 실행된다는 것입니다.

엔터프라이즈 레벨의 아키텍쳐에서는 여러 애플리케이션이 함께 실행되어 영향을 주고 받는 것이 흔합니다.

이 것을 가능하게 하기 위해 docker-compose가 제공됩니다.

CentOS 7에서의 설치 및 실행 방법은 아래와 같습니다.

 

# docker-compose 설치

$ sudo curl -L "https://github.com/docker/compose/releases/download/1.29.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

 

# docker-compose 실행 권한 부여

$ sudo chmod +x /usr/local/bin/docker-compose

 

# 설치된 docker-compose 실행 확인

$ docker-compose --version

docker-compose version 1.29.1, build c34c88b2

728x90

CentOS 에서 httpd 등의 데몬 프로그램들을 설치하면 디폴트로 자동시작이 안 되어 있는 경우가 많습니다.

이 때는 수동으로 데몬 프로그램을 서버 부팅시 자동으로 시작하도록 설정해 둬야 합니다.

이 때 사용하는 명령어가 chkconfig 입니다.

 

서비스 리스트 조회

# chkconfig --list

 

서비스 자동시작 설정

# chkconfig httpd on

 

서비스 자동시작 해제

# chkconfig httpd off

 

데몬 프로그램의 서비스명은 chkconfig --list 에서 확인하시면 됩니다.

728x90

YUM 명령어 도움말 보기

yum -h

 

패키지를 최신 버전으로 업데이트 하기

yum update

 

패키지 설치하기

yum install <패키지명>

 

패키지 삭제하기

yum erase <패키지명>

 

모든 패키지 목록을 보기

yum list

 

모든 패키지 그룹 목록을 보기

yum grouplist

 

http과 관련된 패키지를 검색하기

yum search http

 

패키지 이름에 http를 포함하고 있는 것을 검색하기

yum list *http*

 

httpd 패키지의 정보 보기

yum info httpd

 

X Window System 패키지 그룹의 정보 보기

yum groupinfo "X Window System"

 

httpd 패키지 설치하기

yum install httpd

 

httpd와 php 설치하기

yum install httpd php

 

X Window System 패키지 그룹 설치하기

yum groupinstall "X Window System"

 

X Window System와 KDE Desktop 설치하기

yum groupinstall "X Window System" "KDE Desktop"

 

httpd와 php 삭제하기

yum erase httpd php

 

X Window System 삭제하기

yum groupremove "X Window System"

728x90

유저명 및 홈경로 변경(root 계정에서 실행)

# usermod  -l <newname> <oldname>

# usermod -m -d /home/<newname> <newname>

 

그룹명 변경(root 계정에서 실행)

# groupmod -n <newname> <oldname>

728x90

지역시간 설정

$ sudo dpkg-reconfigure tzdata

 

로케일 설정

$ sudo dpkg-reconfigure locales

728x90

은폰트 – unfonts

$ sudo apt-get install fonts-unfonts-core fonts-unfonts-extra

 

백묵폰트 – baekmuk

$ sudo apt-get install fonts-baekmuk

 

나눔폰트 – nanum

$ sudo apt-get install fonts-nanum fonts-nanum-coding fonts-nanum-extra

728x90

Nginx Proxy Manager (이하 NPM)에서 설정한 Proxy Host의 SSL의 인증 기간이 지나가서 문제가 발생하지 않도록 자동 갱신하는 방법에 대해 알아보도록 하겠습니다.

 

프록시를 설정하면서 SSL 인증을 설정하였는데요

이 인증서를 제때 갱신해주지 않으면 도메인으로 접속을 못하는 상당히 불편한 일을 겪게 될 수도 있습니다.

 

저희가 인증받은 Let’sencrypt는 무료 SSL 인증서로 갱신 주기가 90일입니다.

갱신 주기 : 90일 (만료 30일 이전부터 갱신 가능)

이렇게 90일마다 꼬박꼬박 갱신을 하지 않으면 어느날 갑자기 접속이 불가능해지는 상황이 발생한다는 것이죠

 

이제 본론으로 들어가서 명령어를 통해서 인증서를 갱신하는 방법을 설명하겠습니다.

 

갱신이 필요한 SSL 인증서

 

1. 명령어로 SSL 인증 하는 방법

1) docker 컨테이너명 확인

docker ps -a 

 

  CONTAINER ID        IMAGE                             COMMAND                  CREATED             STATUS                 PORTS                                                                        NAMES

  c510bbe77858        jc21/mariadb-aria:10.4            "/scripts/run.sh"        6 hours ago         Up 6 hours             3306/tcp                                                                     npm_db

  b51361627e5b        jc21/nginx-proxy-manager:latest   "/init"                 6 hours ago         Up 6 hours (healthy)   0.0.0.0:80->80/tcp, 0.0.0.0:81->81/tcp, 0.0.0.0:443->443/tcp  npm

 

가장 우측의 NAMES를 보시면 npm이라는 컨테이너가 있죠. 이걸 잘 확인해두시면 됩니다.

 

2) 컨테이너 쉘로 명령어 실행하기

docker exec -it npm /usr/bin/certbot renew

  Saving debug log to /var/log/letsencrypt/letsencrypt.log

 

  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

  Processing /etc/letsencrypt/renewal/npm-1.conf

  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

  Cert not yet due for renewal

 

  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

  Processing /etc/letsencrypt/renewal/npm-3.conf

  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

  Cert not yet due for renewal

 

  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

  Processing /etc/letsencrypt/renewal/npm-5.conf

  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

  Cert not yet due for renewal

 

  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

  Processing /etc/letsencrypt/renewal/npm-6.conf

  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

  Cert not yet due for renewal

 

  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

 

  The following certs are not due for renewal yet:

    /etc/letsencrypt/live/npm-1/fullchain.pem expires on 2020-09-01 (skipped)

    /etc/letsencrypt/live/npm-3/fullchain.pem expires on 2020-09-01 (skipped)

    /etc/letsencrypt/live/npm-5/fullchain.pem expires on 2020-09-01 (skipped)

    /etc/letsencrypt/live/npm-6/fullchain.pem expires on 2020-09-01 (skipped)

  No renewals were attempted.

  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

“docker exec -it [컨테이너명] /usr/bin/certbot renew” 명령어를 입력하면 생성되어 있는 SSL 전체가 갱신됩니다.

 

2. crontab 사용하기

1) crontab 사용방법 (리눅스)

## crontab 설정

crontab -e

 

## crontab 목록 확인

crontab -l

 

## crontab 삭제

crontab -r

 

2) crontab 사용방법 (시놀로지)

시놀로지에서는 crontab -e 가 작동하지 않습니다.

## crontab 설정

nano /etc/crontab

 

3) crontab 주기 설정 방법

## crontab 주기

*      *      *      *      *

분(0-59)  시간(0-23) 일(1-31)   월(1-12)   요일(0-7)

 

## 매분마다 example.sh 실행 예제

* * * * * /home/example.sh

 

## 매주 일요일 10시 45분에 example.sh 실행 예제

45 10 * * 7 /home/example.sh

 

## 매일 매시간 0분, 30분에 example.sh 실행 예제

0,30 * * * * /home/example.sh

 

## 매일 7시 0분~30분까지 매분 example.sh 실행 예제

0-30 7 * * * /home/example.sh

 

## 매 10분마다 example.sh 실행 예제

*/10 * * * * /home/example.sh

 

## 매월 11일에서 15일까지 2시, 4시, 6시, 8시에 매 15분마다 example.sh 실행 예제

*/15 2,4,6,8 11-15 * * /home/example.sh

 

4) crontab 로그 기록하기 (cron logging)

## 로그 기록하기

* * * * * /home/example.sh > /home/example.log 2>&1

 

## 로그 누적시켜 기록하기

* * * * * /home/example.sh >> /home/example.log 2>&1

 

## 로그 없이 실행하기

* * * * * /home/example.sh > /dev/null 2>&1

 

여기까지 crontab 사용 방법을 알아보았는데요.

이제 crontab설정을 통해서 SSL 인증을 자동 갱신하는 방법에 대해 설명드리겠습니다.

 

3. crontab으로 SSL인증 자동 갱신하기

## root 권한 얻기

sudo -i

 

## crontab 열기

nano /etc/crontab

 

## 스크립트 파일 작성

nano /homes/script/auto_renew.sh

docker exec -it npm /usr/bin/certbot renew

 

## SSL인증을 위한 명령 추가하기 (매월 1일 0시 0분)

0       0       1       *       *       root    /volume1/homes/user/script/npm/auto_renew.sh

 

위와 같이 1달 단위로 갱신을 설정해두면 Let’sencrypt의 갱신주기 범위를 지나지 않고 갱신이 가능하겠죠?

불안하시면 보름 단위로 설정해두셔도 상관없습니다.

이상으로  crontab으로 SSL 자동 갱신하는 방법에 대한 포스팅을 마치도록 하겠습니다.

728x90

데비안 계열에서는 apt를, 레드햇 계열은 yum을 사용하듯이 아치리눅스는 pacman이라는 패키지 관리자를 통해 시스템의 패키지들을 관리합니다.

pacman 에서는 여러 옵션들을 제공하지만 실제로 사용하는 옵션은 그리 많지 않습니다. 업그레이드, 검색, 설치, 삭제 정도만 알아두면 사용에 큰 어려움이 없습니다.

 

1. 시스템 전체 업그레이드

pacman에서 시스템의 모든 패키지들을 업그레이드하는 것은 아치리눅스를 사용하면서 가장 많이 사용하게될 명령입니다. 명령은 아래와 같습니다.

$ sudo pacman -Syu

 

이를 실행하면 pacman은 패키지 데이터베이스를 업데이트하고 업데이트가 필요한 패키지를 찾아서 사용자가 업그레이드를 할지 말지 물어봅니다.

 

2. 패키지 검색

아치리눅스를 사용하다보면 추가적으로 패키지를 설치해야 할 필요가 있습니다. 그러기 위해서 패키지 이름을 알아야 하는데 pacman에서 패키지 명과 설명에 대해 검색할 수 있는 기능을 제공합니다. 설치되었거나 설치가능한 패키지를 검색하기 위해서는 -Ss 옵션을 사용하면 됩니다. 사실 이 검색을 사용하여도 원하던 패키지를 찾기 어렵기 때문에 인터넷에 검색하여 패키지 명을 알아내는게 대부분입니다.

$ sudo pacman -Ss [검색할 단어]

 

이미 설치가 되어있다면 패키지 명 마지막 부분에 [installed]가 표시됩니다.

-Ss 옵션에서 검색할 단어를 입력하지 않는다면 모든 패키지가 출력됩니다.

 

만약 설치된 패키지 중에서 검색을 하고싶다면 -Qs 옵션을 사용하면 됩니다.

$ sudo pacman -Qs [검색할 단어]

 

이 옵션도 검색할 단어를 입력하지 않는다면 설치된 모든 패키지를 출력합니다.

 

추가적으로 패키지의 자세한 정보(버전, 의존성, 용량, 만들어진 날짜 등등)를 알고싶다면 -Qi 옵션을 사용하면 됩니다.

$ sudo pacman -Qi 패키지명

 

3. 패키지 설치

패키지 설치를 위한 옵션은 -S 입니다. 옵션 뒤에 패키지를 여러 개 나열하면 한번에 설치가 가능합니다.

$ sudo pacman -S <패키지명> <패키지명> ...

 

4. 패키지 삭제

패키지 삭제를 위한 옵션은 -R입니다. 다만 이 옵션만으로는 입력한 패키지만 삭제하기 때문에 -s 옵션을 추가로 사용하여 다른 패키지에서 필요로하지 않는 의존성이 있는 패키지들도 함께 삭제하는 것이 일반적입니다.

$ sudo pacman -Rs <패키지명> ...

728x90

#만자로 미러서버 변경, 업데이트

sudo pacman-mirrors --country Japan Taiwan China Hong_Kong Indonesia Philippines South_Korea

sudo pacman -Syyu

sudo reboot

#zsh사용

chsh -s /usr/bin/zsh

 

#로그아웃 후 재로그인

curl -L https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh | sh

 

#vim 설치

sudo pacman -S vim

sudo rm /usr/bin/vi

sudo ln -s /usr/bin/vim /usr/bin/vi

#yaourt 설치(aur)

pamac-manager

preference -> AUR -> enable aur support 체크, check for update from aur 체크

yaourt 검색, 체크, apply,commit

또는

git clone https://aur.archlinux.org/yaourt.git

cd yaourt

makepkg -si

 

#한글 입력기 설치(uim)

sudo pacman -S uim

uim-pref-gtk

 

#글로벌 세팅 -> default IM 체크, Default input method 벼루, enalbe input method 벼루only

enable im switching… 체크해제, enable input method toggle… 체크해제

 

#벼루 key bindings 1 -> 벼루 on-off에 한영키 추가

 

#나눔 글꼴, 구글 noto글꼴 설치

sudo pacman -S noto-fonts-cjk

yaourt -S ttf-nanum

yaourt -S ttf-nanumgothic_coding

 

#uim 자동 실행

vi ~/.xprofile

-> IM=”uim”

export GTK_IM_MODULE=$IM

export XMODIFIERS=@im=$IM

export QT_IM_MODULE=$IM

export XIM=$IM

 

#Plank Dockbar 설치

sudo pacman -S plank

 

#전체설정 -> 세션 및 시동 -> 프로그램 자동 시작 -> 오른쪽마우스-프로그램 추가

-> 이름: plank, 설명: plank, 명령: plank

sudo reboot

 

#plank 설정

plank –preferences

728x90

Samba는 리눅스의 파일이나 프린터를 윈도우에서 사용할 수 있게 해줍니다.

우분투에 Samba를 설치하고 디렉토리를 공유하면 윈도우에서 연결이 가능합니다.

우분투에 Samba을 설치하고 초기 설정을 진행하는 방법은 다음과 같습니다.

 

1. Samba 설치

아래 명령어를 순차로 입력해서 Samba를 설치합니다.

sudo apt-get -y update 

sudo apt-get -y install samba

 

기존에 사용하고 있는 리눅스 계정을 Samba에 추가하기 위해 아래 명령어를 입력합니다.

sudo smbpasswd -a <계정명>

 

명령어의 <계정명> 부분은 실제 계정 이름을 입력하면 됩니다.

계정은 리눅스에 존재하는 계정이면 Samba에 계속 추가할 수 있습니다.

 

2. 다음으로 원본을 보존하기 위해 Samba 설정 파일을 백업합니다.

sudo cp /etc/samba/smb.conf /etc/samba/smb.conf_temp

 

이제 Samba 설정 파일을 수정합니다.

sudo nano /etc/samba/smb.conf

 

공유할 디렉토리를 설정하기 위해서 설정 파일의 가장 하단에 아래와 같은 형태로 입력합니다.

 

[multimedia]

comment = multimedia directory

path = /data/Multimedia

valid users = id1,id2

writeable = yes

read only = no

create mode = 0777

directory mode = 0777

 

해당 부분은 실제 필요한 상황에 맞춰서 다양하게 변경할 수 있습니다.

 

create mode와 directory mode는 실제 필요한 권한만 주는 것도 가능합니다.

 

Read는 4, Write는 2, Execute는 1이며 모든 권한을 주기 위해 777을 사용했습니다.

 

읽기 전용으로 변경하려면 writeble과 read only 값을 각각 no, yes로 변경하면 됩니다.

 

파일 수정이 완료되면 저장하고 Samba를 재시작해주면 됩니다.

sudo service smbd restart

 

이제 윈도우에서 네트워크 드라이브 연결을 통해 우분투의 공유 디렉토리를 사용할 수 있게 됩니다.

728x90

Nginx는 서버 블록 (Apache의 가상 호스트)을 수행 할 수 있는 기능이 있지만 프록시 헤더 내에서 IP 주소를 전달해야 할 때 문제가 발생합니다.

프록시 서버 뒤에 위치한 서버들에서는 실제 방문자의 IP가 아닌 프록시 서버의 IP만 보인다는 점입니다.

하지만 해결책이 있습니다.

 

※ 프록시 서버 구성 편집

(Docker 사용 경우 - <path to nginx-proxy-manager>/data/nginx/default_host/site.conf)

 

먼저 프록시 서버(프론트엔드)에 있는 프록시 서버 블록을 편집합니다. 기본적으로 내 모습은 다음과 같습니다.

 

## redirect uname.in to https

server {

  listen      80 default_server;

  server_name uname.in;

  return 301 https://uname.in;

}

 

## redirect www prefix to https

server {

  listen      80;

  server_name www.uname.in;

  return 301 https://www.uname.in;

}

 

server {

  #listen 80;

  listen 443 ssl default_server;

  server_name uname.in;

  ssl_certificate /etc/nginx/ssl/uname.in.crt;

  ssl_certificate_key /etc/nginx/ssl/uname.in.key;

 

  location / {

    proxy_set_header  Host $host;

    proxy_set_header  X-Real-IP $remote_addr;

    proxy_set_header  X-Forwarded-Proto https;

    proxy_set_header  X-Forwarded-For $remote_addr;

    proxy_set_header  X-Forwarded-Host $remote_addr;

    proxy_pass        http://wp.uname.in;

  }

}

 

다음 세 줄을 포함하는 것이 매우 중요합니다.

Host : 프록시 서버의 이름과 포트.

X-Real-IP : 방문자의 IP 주소를 가상 호스트로 보냅니다.

X-Forwarded-For : 방문자의 IP 주소를 가상 호스트로 보냅니다.

 

※ 프록시 되는 서버 구성 편집

(/etc/nginx/sites-available/default)

 

이제 프록시 서버(백엔드)의 구성에서 서버 블록 내에 아래 3개의 중요한 행을 포함해야 하지만 위치 블록 외부에 있어야 합니다.

 

server {

    #other junk here blah blah

    set_real_ip_from 10.0.0.0/8;

    real_ip_header X-Real-IP;

    real_ip_recursive on;

 

    location / {

       #some junk here

    }

}

 

세 줄은 다음과 같습니다.

 

set real ip_from : nginx가 이 범위 내의 프록시 서버에서 실제 방문자의 IP를 가져 오도록 지시합니다. 10.0.9.2와 같은 고정 IP 주소 일 수도 있습니다.

real_ip_header : nginx는 주어진 주소에서 클라이언트의 IP 주소를 선택합니다.

real_ip_recursive : 프록시 서버의 IP가 방문자의 IP 주소로 대체됩니다.

728x90

참고 사이트 - https://hub.docker.com/r/linuxserver/piwigo

 

아래 코드로 docker-compose.yml 파일 생성 후 'docker-compose up -d'로 실행하세요.

PS : MariaDB 를 Docker 로 설치하여 연동하세요. (ghcr.io/linuxserver/mariadb 이미지 사용)

 

---

version: "2.1"

services:

  piwigo:

    image: ghcr.io/linuxserver/piwigo

    container_name: piwigo

    environment:

      - PUID=1000

      - PGID=1000

      - TZ=Asia/Seoul

    volumes:

      - ./:/config

    ports:

      - 80:80

    restart: always

728x90

참고 사이트 - https://hub.docker.com/r/linuxserver/syncthing

 

아래 코드로 docker-compose.yml 파일 생성 후 'docker-compose up -d'로 실행하세요.

PS : 아래 코드에서 optional 이라고 되어 있는 부분은 여기(클릭)로 이동해서 내용 참고하세요.

 

---

version: "2.1"

services:

  syncthing:

    image: ghcr.io/linuxserver/syncthing

    container_name: syncthing

    hostname: syncthing #optional

    environment:

      - PUID=1000

      - PGID=1000

      - TZ=Asia/Seoul

    volumes:

      - ./config:/config

      - ./data1:/data1

      - ./data2:/data2

    ports:

      - 8384:8384

      - 22000:22000/tcp

      - 22000:22000/udp

      - 21027:21027/udp

    sysctls:

      - net.core.rmem_max=2097152

    restart: always

728x90

https://nginxproxymanager.com/ 에 있는 내용대로 설치했을때 bad gateway 오류가 납니다.

아래 방법으로 설치하면 오류없이 구동가능합니다.

docker-compose.yml 파일을 아래 코드를 이용해 생성 후 'docker-compose up -d'로 실행하세요.

 

version: "2"

services:

  app:

    image: 'jc21/nginx-proxy-manager:latest'

    restart: always

    ports:

      # Public HTTP Port:

      - '80:80'

      # Public HTTPS Port:

      - '443:443'

      # Admin Web Port:

      - '81:81'

    environment:

      # These are the settings to access your db

      DB_MYSQL_HOST: "db"

      DB_MYSQL_PORT: 3306

      DB_MYSQL_USER: "npm"

      DB_MYSQL_PASSWORD: "npm"

      DB_MYSQL_NAME: "npm"

      DISABLE_IPV6: 'true'

    volumes:

      - ./data:/data

      - ./letsencrypt:/etc/letsencrypt

    depends_on:

      - db

  db:

    image: yobasystems/alpine-mariadb:latest

    restart: always

    environment:

      MYSQL_ROOT_PASSWORD: 'npm'

      MYSQL_DATABASE: 'npm'

      MYSQL_USER: 'npm'

      MYSQL_PASSWORD: 'npm'

    volumes:

      - ./data/mysql:/var/lib/mysql

 

PS : jc21/nginx-proxy-manager 은 MariaDB를 따로 설치해야 하지만 jlesage/nginx-proxy-manager 은 NPM과 DB가 같이 있는 올인원 이미지이므로 이걸 활용해서 설치하는게 좀 더 간편한 방법입니다.

아래는 jlesage/nginx-proxy-manager 이미지를 활용한 설치방법입니다.

 

version: '3'

services:

  nginx-proxy-manager:

    image: jlesage/nginx-proxy-manager

    ports:

      - 8181:8181

      - 8080:8080

      - 4443:4443

    volumes:

      - ./:/config:rw

    restart: always

728x90

참고 사이트 - https://hub.docker.com/r/linuxserver/nextcloud

 

아래 코드로 docker-compose.yml 파일 생성 후 'docker-compose up -d'로 실행하세요.

 

---

version: "2.1"

services:

  nextcloud:

    image: ghcr.io/linuxserver/nextcloud

    container_name: nextcloud

    environment:

      - PUID=1000

      - PGID=1000

      - TZ=Asia/Seoul

    volumes:

      - ./config:/config

      - ./data:/data

    ports:

      - 443:443

    restart: always

728x90

참고 사이트 - https://hub.docker.com/r/linuxserver/nginx

 

아래 코드로 docker-compose.yml 파일 생성 후 'docker-compose up -d'로 실행하세요.

 

---

version: "2.1"

services:

  nginx:

    image: ghcr.io/linuxserver/nginx

    container_name: nginx

    environment:

      - PUID=1000

      - PGID=1000

      - TZ=Asia/Seoul

    volumes:

      - ./config:/config

    ports:

      - 80:80

      - 443:443

    restart: always

+ Recent posts