728x90

LVM 을 알아보자... 사진을 찍을 힘이없어서 못찍었다.. 미안..

 

✨ 일단 다음과 같은 명령어로 나의 환경을 본다

lsblk 또는 df -h

 


✨ /dev/sdb 디스크에서 각각 2기가 크기의 /dev/sdb1, /dev/sdb2  파티션 생성 (2번 생성하니까)
명령어 패턴 (n > p > +2GB,  n > p > +2GB , w)

fdisk /dev/sdb





✨ 위에서 생성한 파티션을 pv로 생성하기

pvcreate /dev/sdb1 /dev/sdb2
pvscan




✨ my_lvm 이라는 이름으로 vg 생성한다, 이때 /dev/sdb1 /dev/sdb2 를 그륩원으로 넣는다

vgcreate my_lvm /dev/sdb1 /dev/sdb2
vgscan
vgdisplay -v my_lvm



✨ my_lvm 라는 VG로 부터 크기가 1GB이고, 이름이 my_lvm_1G인 lvm 생성

lvcreate -L 1G -n my_lvm_1G my_lvm
lvscan
lvdisplay -v my_lvm
vgdisplay -v my_lvm




✨ 해당 lvm을 파일 시스템을 xfs 로 생성하고, (자동)마운트 한다

ext3 나 ext4로 하고싶다면 mkfs.ext3 또는 mkfs.ext4 로 적으면 된다

mkfs.xfs /dev/my_lvm/my_lvm_1G
mkdir /lvm_1G
mount -t xfs /dev/my_lvm/my_lvm_1G /lvm_1G
mount | grep lvm
cat /etc/fstab
echo /dev/my_lvm/my_lvm_1G /lvm_1G xfs defaults 0 0 >> /etc/fstab
mount -av




✨ vg로 부터 남는 용량을 이용해서 lvm 용량을 1GB 증가, 리사이즈 적용
1기가 증설 -> 2기가 됨

lvextend -L +1G /dev/my_lvm/my_lvm_1G
fsadm resize /dev/my_lvm/my_lvm_1G
lsblk 또는 df -h

 

728x90
728x90

우분투 버전 : 24

 

웬걸 오랜만에 우분투에 오니

 

netplan 이라는걸 쓰더라? 그래서 좀 알아보고 사용했던것을 정리하려한다

 

(참고로 ifconfig 도 기본적으로 명령어가 없고 ip a 로 사용해야한다, 물론 다운받으면 쓸수있다)

 

 

 

시작하기전에 내 아이피 확인이나 하자

 

ip a 또는 ifconfig

 

 

환경 설정 파일 위치는 다음과 같다 

 

/etc/netplan 내에 있는 yaml 파일

 

 

 

필자의 경우는 다음 처럼 존재한다

/etc/netplan/50-cloud-init.yaml

 

참고로 back 은 내가 백업으로 추가한것이다

 

 

 

vi 에디터로 열고 다음처럼 수정하자

 

예를들어 필자의 경우는 이렇게 설정했다

 

주의할께 ethernets 아래에 인터페이스 이름을 주의 해야한다 

사람마다 다를 수 있으니 ip a 또는 ifconfig 를 사용해서 자신의 인터페이스 이름을 알아야한다

 

사람마다 이름이 다를 수 있다 필자의 경우에는 지금 enp0s3 이다 

 

 

 

 

이제 설정파일의 내용을 바꿔보자

 

1
2
3
4
5
6
7
8
network:
  ethernets:
    ens33:
      addresses: [192.168.35.50/24]
      gateway4: 192.168.35.1
      nameservers:
        addresses: [168.126.63.18.8.8.8]
  version: 2
cs

 

 

yaml 파일이니 들여쓰기에 주의하자.

 

 

이후 

 

적용하는 명령어는 다음과 같다

netplan apply

 

 

다시 아이피를 확인하자

ip a 또는 ifconfig
728x90
728x90

docker 컨테이너에서 certbot이 설치가 잘안되서 직접 설치하는 방법으로 진행했다

 

 

 

https://github.com/certbot/certbot/releases

 

Releases · certbot/certbot

Certbot is EFF's tool to obtain certs from Let's Encrypt and (optionally) auto-enable HTTPS on your server. It can also act as a client for any other CA that uses the ACME protocol. - cert...

github.com

 

 

sudo apt update

 

sudo apt install python3 python3-venv libaugeas0

 

tar -xzf certbot-2.11.0.tar.gz

 

cd certbot-2.11.0

 

python3 -m venv venv

 

source venv/bin/activate

 

+ 환경변수 추가

 

pip install .

 

# 명령어 확인

certbot --help


certbot certonly --standalone

728x90
728x90

systemctl nginx status 이 명령어가 안될시 

system을 설정하는 방법도 있지만

 

nginx 명령어도 쓸수있다.

 

1. Nginx 시작

#nginx

 

 

2. confg 파일을 직접 지정하여 시작

#nginx -c /경로/nginx.conf

 

3. Nginx 중지

#nginx -s stop

 

 

4. Nginx 현재 요청을 처리한 후 중지

#nginx -s quit

 

5. Nginx 재 시작

#nginx -s reload

 

6. Nginx 설정 파일 문법 검사

#nginx -t

 

 

7. Nginx 버전 확인

#nginx -v

 

 

8. Nginx 프로세스 Id 확인

#ps aux | grep nginx

 

9. Nginx 로그 파일 실시간 모니터링

#tail -f /var/log/nginx/access.log

 

- 도커 사용시

#docker logs -f [컨테이너명]

 

10. Nginx 를 포어그라운드로 실행 (off 뒤에 ; 가 있다 주의)

#nginx -g "daemon off;"   

 

- 도커 사용시  (off 뒤에 ; 가 있다 주의)

#docker run -d -p 외부포트:내부포트 --name 컨테이너명 nginx nginx -g "daemon off;"

=> 포어그라운드로 돌려서 nginx가 종료되면 컨테이너도 종료되게 일관성 있게 만들 수 있다

 

이때 재시작 하려면 다음과 같이 하면 다시 실행된다

#docker start 컨테이너명

 

 

 

추가로 systemctl 을 사용하고싶다면

우분투나 로키 리눅스 기반 이미지를 가지고 nginx가 설치된 이미지를 설치하거나

직접 Dockerfile로 만들어서 사용하면 편하다

728x90

'리눅스 > linux' 카테고리의 다른 글

우분투 - 네트워크 설정 24버전  (0) 2025.01.30
certbot 개인 기록  (0) 2024.07.26
하드디스크를 추가하고 파티션을 나누어보자  (2) 2024.02.02
iptables 저장 방법  (0) 2024.01.29
iptables 사용법  (1) 2024.01.29
728x90

이번에 포스팅 할 주제는.

리눅스에서 하드디스크를 나누는 법이다.

 

가난하기 떄문에 실습은 가상머신을 쓴다.

vmware나 virtual-box 둘중 아무거나 써도 되고, 돈이 많다면 클라우드에서 진행하자 ...

 

 

우선 다음 처럼 물리적으로 50GB의 장비를 서버에 꽂앗다 생각하자.

 

 

 

하지만 리눅스는 윈도우에서 USB 마냥 꽂았다해서 알잘딱 하지 못한다.

 

약간의 절차가 있는데

 

1. 장착한 하드 디스크를 파티션을 나눈다

2. 나눈 파티션을 우리가 사용할 수 있게 포맷한다(파일시스템)

3. 특정 디렉터리에 매핑한다

 

여기서 3번은 리눅스에서 디스크 뿐만 아니라 usb 등에서도 이런식이다

물리장치를 특정 타겟에 연결해서 쓰는거다 마치 차원의 문이라 생각하자.

 

 

 

일단 다음 명령어를 입력해서 현재 상태를 볼 수 있다.

# -h: 용량을 단위로 표시한다
df -h

# sda 라는 문자는 보이지만, sdb 라는 문자는 안 보일 것 이다

 

 

 

 

우선 다음 명령어에 sda, sdb 가 보일탠데

ls /dev | grep sda
ls /dev | grep sdb

 

 

보통

 

첫번째 하드 디스크는 /dev/sda

두번째 하드 디스크는 /dev/sdb

세번째 하드 디스크는 /dev/sdc

...

( sd는 SATA를 나타냄, 장비마다 조금씩 문자열은 다르다)

 

이런식으로 /dev (장치) 디렉터리 밑에 생긴다

 

따라서 하드 디스크를 추가한(두번째로) 상황이여서 /dev/sdb 가 추가된것이다

 

그러므로, 위의 df -h 명령어에는 아직 마운트하지 않아서(매핑) 찾을 수 가 없는것이다

 

그리고 /dev/sda1, /dev/sda2, /dev/sda3, ... 이런식의 넘버링은 파티션의 순서이다

 

해석하면

 

SATA 하드 디스크를 사용하는데 첫번째 하드디스크(a)에 첫번째 파티션, 두번째 파티션, 세번째 파티션 이라는 것이다.

 

파티션은 주 파티션, 확장 파티션, 논리 파티션이 존재하는데 이건 다음 포스팅때 알아보자

 

 

# /dev/sdb 하드디스크의 설정모드로 진입한다
fdisk /dev/sdb

 

이후 커맨더에 m 을 입력하면 도움말을 볼 수있

 

 

p 를 입력하면 파티션을 테이블로 조회할 수 있다, 아직 아무것도 없다.

 

 

 

 

파티션을 생성해보자

다음 입력은

파티션을 생성(n) 하는데 첫번째(1) 파티션이고 

시작 섹션과 끝 섹션은 기본값에서 총 10기가 로 했고

조회(p) 후 저장(w) 했다.

 

 

 

 

다시 장치쪽을 조회 해보면

sdb1 파티션이 생성된 것 을 볼 수 있다.

 

 

파티션을 나누었으니, 사용할 수 있게 포맷하자

파일 시스템은 ext4 라는걸 사용 했는데 일반적으로 읽고 쓰고 수정하는데 자주 쓴다 (xfs도 있다)

 

 

마운트할 디렉터리를 생성하고

연결해보자

 

 

이번에는 조회되는 것 을 볼 수 있으며, 

마운트 명령어로 조회해도 나오는 것을 볼 수 있다

 

 

이제 남은건 부팅시 자동 마운트가 되게 하는 것 이다.

그렇지 않으면 매번 mount 명령어를 사용해야한다.

 

 

 

nano /etc/fstab
# 또는
vi /etc/fstab

 

에디터로 킨다음 하단처럼 작성한다

 

# 문법 검사를한다 이때 아무런 메세지가 안나와야 정상이다!
# 오류가 날시, 재부팅시 정상적으로 부팅되지 않을 것 이다
mount -a

 

 

테스트를 위해 재부팅 후 

df -h 명령어로 확인해 보고 사용하면 되겠다.

 

728x90

'리눅스 > linux' 카테고리의 다른 글

certbot 개인 기록  (0) 2024.07.26
[Nginx] nginx 명령어 (systemctl 사용 안하고)  (0) 2024.07.25
iptables 저장 방법  (0) 2024.01.29
iptables 사용법  (1) 2024.01.29
Samba Server 를 구축해보자 (우분투, Ubuntu)  (0) 2024.01.28
728x90

iptables 명령어는 휘발성이다...

 

기껏 잘 등록했던게 날라가면 억까아니겠는가?

물론 텍스트에 저장할수도있지만.

 

   # 먼저 명령어 두개를 소개하려한다
   # 바로 쓰지말고 일단 보자 
   
   # 규칙을 저장할 디렉터리를 만든다. 별거는 아니다
   mkdir /rule
   
   # iptables에 작성한 규칙을 /rule 디렉터리 밑에 rules 파일로 만든다
   iptables-save > /rule/rules
   
   # rules 파일을 iptables에 불러온다
   # 이 명령어는 바로 쓰지말고 시스템 파일에 등록할 것이다
   iptables-restore < /rule/rules

 

 

✨ 위의 저 커맨드 라인 명령어에서 리스토어 부분을 시스템 파일에 등록해서 대신 쳐줫으면한다

 

mkdir /rule

# iptables에 작성한 규칙을 /rule 디렉터리 밑에 rules 파일로 만든다
iptables-save > /rule/rules


# 일단 가서 탐색하라
cd /etc/systemd/system

# 온갓 서비스가 보일거다
ls

# iptables-restore.service 파일을 작성한다
nano iptables-restore.service
# 또는
vi iptables-restore.service


# 다음을 입력한다
[Unit]
Description=Restore iptables rules
After=network.target

[Service]
Type=oneshot
ExecStart=/sbin/iptables-restore /rule/rules

[Install]
WantedBy=multi-user.target


# 저장하고 닫는다


# 시스템 데몬 리로드
systemctl daemon-reload

# 우리가 만든 시스템 시작
systemctl start iptables-restore.service

# 시스템 상태 확인
systemctl status iptables-restore.service

# 부팅시 자동 실행 설정
systemctl enable iptables-restore.service

 

 

참고로 ExecStart 부분은 명령어 절대경로와 

명령어의 인자이다

 

# 재부팅 전 iptables 규칙 확인
iptables -nL

# 서버 재시작
reboot

# 재부팅 후 iptables 규칙 확인
iptables -nL
728x90
728x90

서버의 포트 설정, 트래픽 설정, 방화벽 설정 등 할때 사용되는 몇가지 방법이 존재하는데

1.firewalld

2. ufw (iptables을 좀더 간단한 인터페이스로 바꾸었찌만 기능은 더쭘)

3. iptables  가 있다.

 

여기서 가장 막강한 능력을 가진 iptables을 알아보자

 

실무에서 예를 들면 다음과 같은 상황에서 생각해 볼법하다

 

- ssh, nginx, tomcat 등 포트를 오픈한다

- 포트 포워딩을 한다

- 특정 ip에 대한 모든것을 허용/거부 한다 

등 이있다

 

그러기 떄문에 명령어도 위의 스타일 형태를 가질거라 추측 할 수있다 (출발지 어디 포트 , 도착지 어디 포트 허용 / 거부 )

 

iptables 는 "tables" 이라는 단어가 있듯이

 

5개의 테이블이 존재한다

filter, nat, mangle, raw, security

 

각 테이블에는 여러 체인이 있다 

체인이란 단어 느낌처럼 서로 연결되어있고

패킷이 -----> ----->  -----> 서버 방향으로 들어갈 것아닌가?

그때 구간( -----> )을 각각 체인이라 부른다고 가볍게 생각하자

구간별 체인마다 이름을 달리하여 부른다.

 

전체 체인을 나열하면

1. prerouting( 들어오기전 )

2. forward( 통과할때 ) 

3. input( 들어올때 ) 

4. output( 나갈때 

5. postrouting( 나간후)

(마치 웹개발자 감성으로는 인터셉터나 필터같다)

 

각 테이블마다 모든 체인을 사용하는 것은 아니고

아래에 표로 정리했다.

 

 

 

자주 사용되는 3개의 정도만 알아보자 

테이블 테이블에 속한 체인 설명
filter forward, input, output 기본으로 사용하는 테이블
nat prerouting, input, output, postrouting 네트워크 주소 변환이 필요할때
사용하는 테이블
mangle prerouting, forward, input, output, postrouting nat와 패킷필터링과는 상관없는
네트워크 패킷 내용을
바꾸거나 수정하는 테이블

 

 

 

여러 명령어 옵션이 있어서 햇갈리는데

중요한것 몇개만 추려봤다

-t 테이블 옵션
-j 행위에 대한 옵션이다(jump)
SNAT, DNAT
-s 출발지 ip
-d 목적지 ip
--sport 출발지 port
--dport 목적지 port
-p 프로토콜
--to-destination 도착지 ip:port
-A 규칙 추가 Append

 

// 규칙 조회
iptables -nL

// 규칙 초기화
iptables -F

// 특정 IP 허용
iptables -A INPUT -s 192.168.10.100 -j ACCEPT

// 특정 IP 거부
iptables -A INPUT -s 192.168.10.100 -j DROP (또는 REJECT)

// 프로토콜 : TCP  
// 포트 : 22, 80, 8080, 443, 3306 포트 허용
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 8080 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -p tcp --dport 3306 -j ACCEPT



////////////////////////////////////////////////////////////////////////////////////////
// 포트 포워딩

// 초기설정
sysctl -w net.ipv4.ip_forward=1

// 80번 포트로 들어오는 tcp 패킷을
// 192.168.10.200:8080 으로 포트포워딩하기
iptables -A PREROUTING -t nat -p tcp --dport 80 -j DNAT --to-destination 192.168.10.200:8080


// 192.168.10.200:8080 의 응답을 패킷 수정하기
// -d : 목적지 아이피
// --dport : 목적지 포트
iptables -t nat -A POSTROUTING -p tcp -d 192.168.10.200 --dport 8080 -j SNAT --to-source 내아이피

////////////////////////////////////////////////////////////////////////////////////////

 

참고로 여기서 작성한 iptables 규칙은 재부팅시 삭제된다

다음 포스팅에서 이를 해결해보자

 

 

 

728x90
728x90

Samba Server 란 ?

 

NFT 와 비교되는데, 구글링에 쳐보면 다음과 같다

 

nfs는 같은 운영체제에서만 동작하는 반면에

samba(삼바) 서버는 서로 다른 운영체제에서도 동작한다

 

예를 들면,

공유 파일서버를 리눅스에 삼바서버를 설치하고

윈도우 클라이언트들이 사용할 수 있다.

 

 

우선 설치부터 하자

sudo apt update
sudo apt install samba

 

 

 

nano 나 vi를 통해 삼바서버 설정 파일을 연다

sudo nano /etc/samba/smb.conf

 

 

 

 

공유할 이름을 my_share 라 지정하고

서버의 지정할 공유 폴더를 /share 로 설정한다 ( 아래에서 생성할 것이다)

이외에 옵션이 다양한데 구글링해서 테스트해보시길

[my_share]
    path = /share
    read only = no
    guest ok = yes

 

 

 

공유할 폴더를 생성하고 

편하게 777 권한 준다

sudo mkdir /share
sudo chmod 777 /share

 

 

 

삼바 사용자를 생성하면서 패스워드를 지정한다

여기서 smb_user는 생성할 계정명 이다

sudo smbpasswd -a smb_user

 

 

재시작 및 확인 서버 항상 실행하게 설정한다

sudo systemctl restart smbd
sudo systemctl status smbd
sudo systemctl enable smbd

 

 

 

[클라이언트]  - 리눅스

 

공유폴더를 자신의 폴더에 마운트하기위해서 의존성 패키지를 설치한다

이 패키지는 smbclient를 또 의존한다 (cli로 다루는 방법이라 다루지 않는다, 폴더 마운트가 더 편하다)

sudo apt install cifs-utils

 

자기가 원하는 위치에 디렉터리를 만들자

여기선 똑같이 /share 라는 경로에 만들겠다 (같을 필요 없다)

sudo mkdir /share

 

 

마운트 하기위해서 다음과 같이 명령어를 사용한다

그럼 패스워드 입력란이 나오고 입력하면 정상적으로 마운트 될것이다

추가로 password=xxxx 이런식으로 붙이면 패스워드를 묻지않을것이다

sudo mount.cifs //서버주소/공유객체이름 /마운트위치 -o username=삼바계정명

// ex
// 서버: 192.186.10.100
// 서버 공유객체이름 : my_share
// 서버 삼바 계정 : smb_user
// 클라이언트 마운트 위치 : /share
sudo mount.cifs //192.168.10.100/share /share -o username=smb_user

 

 

✨ 한걸음더

 

재부팅할때마다 저 명령어를 다시 써야하는데, 시스템에 자동 마운트를 설정하자

 

fstab 파일은 스왑, 마운트 등 관련된 설정하는 파일이다,

잘못하면 부팅시 에러가 발생하므로, 주의하며 다뤄야한다.

sudo nano /etc/fstab

 

 

맨아래줄에 다음과 같이 추가하고 저장한다

// ex
// 서버: 192.186.10.100
// 서버 공유객체이름 : my_share
// 서버 삼바 계정 : smb_user
// 서버 삼바 패스워드 : 1234
// 클라이언트 마운트 위치 : /share

//192.168.10.100/share /share cifs username=smb_user,password=1234 0 0

 

 

그리고 설정 파일을 올바르게 작성했는지 

다음 명령어를 입력한다 이때 아무것도 안나와야 정상인것이다

sudo mount -a

 

 

이제 재부팅할때마다 자동 마운트 되어있다.

 

 

 

 

[클라이언트]  - 윈도우

 

윈도우야 말로 매우 간단하고, 삼바서버를 nas 처럼 사용한다면

제일 필요할 할 것이다

 

 

원하는 드라이브 알파벳 골라주고 

폴더 경로에 다음 처럼 입력해주고, 커서에서 엔터 쳐서 삼바 계정으로 로그인하면된다

\\아이피\공유객체이름

 

그후 체크할 수 있는 편의 기능 체크하면 자동 마운트 될 것이다

 

 

 

 

728x90

'리눅스 > linux' 카테고리의 다른 글

iptables 저장 방법  (0) 2024.01.29
iptables 사용법  (1) 2024.01.29
Docker 명령어  (1) 2023.12.05
JSON 방식으로 리눅스에서 컨트롤러 호출하는 방법  (0) 2021.04.19
CentOS7 - JDK 1.8설치  (0) 2021.04.12

+ Recent posts