sysctl, modprobe 커널 파라미터 적용 차이 (cf. NFSv3 포트 고정)

Jeongho Jang·2022년 1월 3일
0

NFS 포트 고정 설정 중 2개의 방식 차이가 있어 궁금해서 찾아보게되었다.

TL;DR

시스템 런타임 중, NFS 포트 고정을 하고 싶었고, 커널 파라미터를 변경하고 NFS를 재시작하여 포트 고정하였다.

modprobe에 등록 시, 런타임으로 적용은 안된다. 부팅 시, 모듈을 로딩하고 /etc/modprobe.d/*.conf 의 파일들을 읽어 모듈을 로딩하고 파라미터를 커널에 등록한다.

시스템 runtime 중에는 sysctl을 통해서 커널 파라미터를 바로 수정 할 수 있다.

  • sysctl -p로 sysctl.conf의 설정을 읽어 적용한다.

modprobe

modprobe는 리눅스 커널 확장 모듈을 쉽게 추가/제거 할 수 있도록하는 프로그램이다.

sysctl

시스템 커널 파라미터를 CRUD가능하게 해주는 프로그램이다.

런타임 중 커널 파라미터(/proc/sys 밑의 변수)를 변경 할 수 있다.

cf) Ubuntu / Debian 계열 NFSv3 포트 고정

NFSv3에서는 mountd statd lockd quota 포트가 랜덤으로 열려있다. 방화벽 포트를 열기 위해선 포트가 특정되어야하기 때문에 포트를 고정시켜야 한다.

### MOUNTD
$ vi /etc/default/nfs-kernel-server
RPCMOUNTDOPTS="--manage-gids -p <portnumber>"

### STATD
$ vi /etc/default/nfs-common
STATDOPTS="--port <portnumber>"

### QUOTA
$ vi /etc/default/quotas
RPCRQUOTADOPTS="-p <portnumber>"

### LOCKD
$ vi /etc/sysctl.conf
fs.nfs.nlm_tcpport = <portnumber>
fs.nfs.nlm_udpport = <portnumber>
### OR
$ vi /etc/modprobe.d/local.conf
fs.nfs.nlm_tcpport = 32803
fs.nfs.nlm_udpport = 32769
### modprobe 방식으로 했을경우 리부팅 후 적용
# sudo reboot

### sysctl을 변경했을경우 
# sysctl -p

# service nfs-kernel-server restart

### 적용 확인
# rpcbind -p

참고

https://unix.stackexchange.com/questions/410811/difference-between-modprobe-and-sysctl-w-in-terms-of-setting-system-parameters

NFS v3

https://www.suse.com/support/kb/doc/?id=000016649

Redhat 공식 NFS 포트 변경

https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/security_guide/sec-securing_services

Debian / Ubuntu NFS 포트 고정

https://wiki.debian.org/SecuringNFS

https://askubuntu.com/questions/1313682/set-static-ports-for-nfs-v3-on-ubuntu-20-x-server

profile
어제보다 더 나은 사람이 되자

0개의 댓글