iptables 간단하게 정리하고 자주쓰이는 기능에 대해서 정리하고자 한다

크게 2가지 filter, nat table이 존재함

각 table에는 아래와 같은 Chain 룰셋이 있다

1) input

2) forward - filter table에만 존재

3) output 

4) nat(PREROUTING, POSTROUTING) - nat table에만 존재


옵션은 2가지만 알자 

-A (Add) - rule 추가

-D (Del) - rule 삭제


[사용법]

1) iptables 읽기

# iptables -L : 리눅스 iptable은 기본으로 filter table을 읽음

# iptables -t nat -L : nat table 읽음 

2) iptables 삭제

# iptables -F


[예제]

1) Linux OS에서 출처 input chain 제어

# iptables -A input -j DROP - 모든 input 패킷 드랍

# iptables -A input -s 192.168.100.100 -j DROP - 출발지가 192.168.100.100인 패킷 드랍

iptables -A input -d 192.168.100.100 -j DROP - 목적지가 192.168.100.100 패킷 드랍

# iptables -A input -p TCP -j ACCEPT - TCP 프로토콜 쓰는 패킷 허용

# iptables -A input -p TCP --dport 80 -j DROP - TCP 80포트로 목적지로 사용하는 패킷 DROP

# iptables -A input -i eth0 -p TCP --dport 80 -j DROP - eth0 TCP 80포트로 목적지를 사용하는 패킷 DROP 

여기서 참고로 인터페이스 옵션은 input chain은 -i 만 output chain은 -o 만 옵션만 사용 가능함 


Masqurade 

iptables -A POSTROUTING -t nat -o eth0 -j MASQUERADE 

sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"


사용법 : iptables

테이블(filter, nat, mangle, raw)

체인(INPUT, OUTPUT, FORWARD, PREROUTING, POSTROUTING)

룰설정 : -A : append , -l : insert , -D : 삭제 , -F : 해당 Chain 모든 삭제, -R: replace 치환

           -p : 프로토콜(tcp,udp,icmp), -s 출발지 , -d 목적지 , --sport 출발지 포트, -dport 목적지 포트 -i 입력인터페이스, -o 출력 인터페이스

정책지정 : -j 옵션을 통해서 타겟 체인 설정(ACCEPT, DROP(차단), REJECT(차단하면서 ICMP 응답 전송), LOG)

 

iptables -t nat -A PREROUTING -p tcp -d 10.13.31.91 --dport 80 -j DNAT --to 10.244.0.34:80

iptables -t nat -A PREROUTING -p tcp -d 10.13.31.91 --dport 443 -j DNAT –to 10.244.0.34:443

iptables -t nat -A PREROUTING -p tcp -d $INTERNAL_IP --dport 4443 -j DNAT –to 10.244.0.34:4443

 

iptables -t nat -A PREROUTING -p tcp -d 10.13.31.91 --dport 8022 -j DNAT --to 10.244.0.34:22

 

iptables -t nat -A PREROUTING -i eth1 -p tcp -d 10.13.31.91 --dport 8022 -j DNAT --to 10.244.0.34:22

iptables -A FORWARD -p tcp -i eth1 -d 10.13.31.91 --dport 8022 -j ACCEPT

 

 

iptables -A POSTROUTING -t nat -o eth0 -j MASQUERADE

 

 

sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"

Posted by 뭉탁거림
,

리눅스 user라면 반드시 사용하는 find, grep 

매번 해당 명령어의 옵션이 기억이 가물가물 ...


o find 

find 경로 옵션 조건 action

여기서 옵션은  -name , -user, -perm, -type 등이 사용

action 에서는 -exec 사용, 예제에서 보듯 결과값이 {}으로 들어감, "\;" <-- 요건 관례적으로 사용하는 필수 구문

example)

# find ./ -name *.py

# find ./ -name *.py -exec rm -f {} \;

# find ./ -type f


o grep

요약해서 파일내의 패턴 검색 후 일치하는 패턴 출력

grep linux /etc/*

'리눅스-Linux' 카테고리의 다른 글

DNS 서버 bind9 설정 관련  (0) 2015.10.11
[Linux] iptables 사용  (0) 2015.10.11
[Linux] iscsi.conf timeout 관련  (0) 2015.06.10
[리눅스] 파일 무결성 검증  (1) 2014.11.18
[리눅스] parted  (0) 2014.11.18
Posted by 뭉탁거림
,

ISCSI initiator ISCIS Connection I/O 혹은 특별한 활동이 없을 경우에 ping check 주기적으로

이때 ping check하는 파라미터 값임

# Time interval to wait for on connection before sending a ping.
node.conn[0].timeo.noop_out_interval = 5

 

그리고 나서 미리 정해진 ping timeout 시간의 응답을 대기하다가 어떤 문제로 인해 timeout 값을 초과하게 되면 어플리케이션이나 multipath S/W I/O error connection fail 선언

이때 ping to timeout 값이 timeo.noop_out_timeout 값이다

# To specify the time to wait for a Nop-out response before failing
# the connection, edit this line. Failing the connection will
# cause IO to be failed back to the SCSI layer. If using dm-multipath
# this will cause the IO to be failed to the multipath layer.
node.conn[0].timeo.noop_out_timeout = 5

 

 

Ping timeout으로 인한 connection fail 발생하는 경우(iscsi target 문제나 network issue 문제가 있을 )

아래 파라미터 replacement_timeout 의해서 시스템이 다시 path session 맺기 위해 대기한다.

replacement_timeout은 반드시 noop_out time보다는 높은 수치로 설정이 되어야됨..!

node.session.timeo.replacement_timeout = replacement_timeout

 

#iscsi session online 상태에서 파라미터 적용하는 방법

iscsiadm -m node -T target_name -p target_IP:port -o update -n node.session.timeo.replacement_timeout -v $timeout_value

'리눅스-Linux' 카테고리의 다른 글

[Linux] iptables 사용  (0) 2015.10.11
[리눅스] 유용한 find , grep 사용법  (1) 2015.10.11
[리눅스] 파일 무결성 검증  (1) 2014.11.18
[리눅스] parted  (0) 2014.11.18
[리눅스] kdump  (0) 2014.11.07
Posted by 뭉탁거림
,

[리눅스] kdump

리눅스-Linux 2014. 11. 7. 11:27

kdump는 kernel 패닉또는 crash가 발생했을 때 메모리 덤프를 생성하는 역할

kexec는 부팅 시 메모리에 상주하고 패닉발생시 현재 커널을 정지시키고 dump용 커널을 동작시킴


# yum install kexec-tools


kdump 설정 파일

# vi /etc/kdump.conf

#raw /dev/sda5

#ext4 /dev/sda3

#ext4 LABEL=/boot

#ext4 UUID=03138356-5e61-4ab3-b58e-27507ac41937

#net my.server.com:/export/tmp

#net user@my.server.com

path /var/crash

core_collector makedumpfile -c --message-level 1 -d 31

#core_collector scp

#core_collector cp --sparse=always

#extra_bins /bin/cp

#link_delay 60

#kdump_post /var/crash/scripts/kdump-post.sh

#extra_bins /usr/bin/lftp

#disk_timeout 30

#extra_modules gfs2

#options modulename options

#default shell

#debug_mem_level 0

#force_rebuild 1

#sshkey /root/.ssh/kdump_id_rsa

#fence_kdump_args -p 7410 -f auto -c 0 -i 10

#fence_kdump_nodes node1 node2


You can also set the amount of reserved memory to be variable, depending on the total amount of installed memory. The syntax is for variable memory reservation is crashkernel=<range1>:<size1>,<range2>:<size2>. For example:
crashkernel=512M-2G:64M,2G-:128M
The above example will reserve 64 MB of memory if the total amount of system memory is 512 MB or higher and lower than 2 GB. If the total amount of memory is more than 2 GB, 128 MB will be reserved for kdump instead.
On some systems, it might be necessary to reserve memory with a certain fixed offset. If the offset is set, the reserved memory will begin there. To offset the reserved memory, use the following syntax:
crashkernel=128M@16M
The example above means that kdump will reserve 128 MB of memory starting at 16 MB (physical address 0x01000000). If the offset parameter is set to 0 or omitted entirely, kdump will offset the reserved memory automatically. This syntax can also be used when setting a variable memory reservation as described above; in this case, the offset is always specified last (for example, crashkernel=512M-2G:64M,2G-:128M@16M).

NOTE: Kernel Dump를 생성하기 위해 메모리 공간을 예약

RHEL 5
crashkernel=128M@16M

RHEL 6 - Memory 2GB 이하
crashkernel=128M

RHEL 6 - Memory 2GB 이상
crashkernel=auto

128MB 기본 할당에 Memory 1TB에 64MB씩 추가됨 (절대 용량은 아님)
e.g.) DL980 G7에
 Memory 1TB > 192M
     DL980 G7에 Memory 4TB > 320M


nmi_watchdog=1

nmi_watchdog을 활성화
시스템이 일정시간 응답이 없는 경우 특정 Task를 구동하는 타이머

http://infoages.tistory.com/1327

'리눅스-Linux' 카테고리의 다른 글

[리눅스] 파일 무결성 검증  (1) 2014.11.18
[리눅스] parted  (0) 2014.11.18
[리눅스] nohup  (0) 2014.10.31
[리눅스] fuser  (0) 2014.05.22
[Linux] automount  (0) 2014.05.20
Posted by 뭉탁거림
,

booting 과정을 통해 OFF 되어 있는 서버를 유용한 operating system으로 사용가능

사람의 수명주기와 유사하다고 생각할수 있다

출생 - 신생아  - 유아기 - 아동기 -  청소년 - 성인 


1. 출생 

전원이 ON 되면서 서버에 전원 공급 시작


2. 신생아

비 휘발성 메모리(ROM)에 저장되어 있는 BIOS(Basic Input/Output System) 프로그램이 부팅

크게 2가지 역할 수행

1) POST(Power On Self Test) 기능 : 장치 인식 후 이상유무 체크 및 하드웨어 초기화

2) POST과정 완료 후 시스템 부팅 제어권을 Boot Loader(GRUB/LILO)에 넘겨주고 BIOS 종료(GRUB/LILO)

* Boot Loader(boot 파티션의 MBR 영역에 설치 되어 있는 소프트웨어? 커널을 로드하는 역할)

 

3. 유아기

1) Boot Loader 실행

GRUB은 실행과 함께 부팅 메뉴(커널) 선택 /boot/grub/grub.conf

선택한 커널 이미지 로드 /boot/vmlinuz.2.6.32.x ~

시스템 제어권을 커널에 넘겨줌


4. 청소년

1) Linux 커널을 초기화하고 메모리에 로딩(Device driver가 로드되고 초기화)

2) swapper Process 호출(커널 이미지 압축해제/POST 하였던 장치드라이브 초기화)

Swapper는 PID 0를 가지고 있으며 init 프로세스 PID 1 을 실행하고 종료(부팅 시 잠시 실행되었다가 종료)


5. 성인

1) Init 프로세스의 실행

/etc/inittab 설정 파일을 읽으면서 실행

/etc/inittab : 스크립트 규칙을 가지고 정의된파일, 스크립트는 한 줄에 하나의 명령을 정의 

다음과 같은 형식을 지님 = id : runlevel : action : process

2) booting Level 결정 : id:3:initdefault:

2) /etc/rc.d/rc/sysinit 스크립트 실행 : si::sysinit:/etc/rc.d/rc.sysinit

3) 해당 run_level 맞는 /etc/rc.d/rc#.d/ 아래의 스크립트 실행

4) /etc/rc.d/rc.local 파일 실행



'리눅스-Linux' 카테고리의 다른 글

[리눅스] fuser  (0) 2014.05.22
[Linux] automount  (0) 2014.05.20
[리눅스] cron  (0) 2014.04.01
[리눅스] lvm.conf filter  (0) 2014.03.27
[Linux] daemon 설명 및 정리  (0) 2014.03.26
Posted by 뭉탁거림
,

[리눅스] cron

리눅스-Linux 2014. 4. 1. 17:17

1. hourly, daily, weekly 단위로 특정 command 혹은 스크립트를 실행할수 있는 데몬이다


2. crontab command

# crontab -l : print crontab

# crontab -e : editing crontab

# crontab -r L remove crontab

# crontab -e -u user : user crontab editing

 

3. crontab syntax

크게 2개 구성(timspec,command)으로 나눠어짐

1) timespec : 5개의 field로 나누어짐

minute / hour / day-of-month(일) / month / day-of-week(요일)

0 23 * * * 매일 23시 

30 * * * 1-5 30 minutes after every hour, M-F

0 7 1 * * 7am, first of every month

* * * * * Every single minute

0,10,20,30,40,50 * * * * Every 10 minutes

*/5 8-17 * * 1-5 Every 5 minutes, 8am-5pm, M-F



'리눅스-Linux' 카테고리의 다른 글

[Linux] automount  (0) 2014.05.20
[리눅스] boot process  (0) 2014.05.20
[리눅스] lvm.conf filter  (0) 2014.03.27
[Linux] daemon 설명 및 정리  (0) 2014.03.26
[리눅스] TCP Wrapper  (0) 2014.03.21
Posted by 뭉탁거림
,

daemon 설명 및 정리 CentOS 6.3 기준으로 데몬정리...

Deafult로 ON 되어있는 데몬들은 off !

최소 굵게 밑줄 친 데몬들만 Enable 시키면 데몬 정리 끝..


abrt-ccpp : The ABRT service that provides the C/C++ problems analyzer 

abrt-oops : The ABRT service that provides the kernel oopses analyzer

abrtd : The ABRT daemon which runs under root as a background service

acpid : ACPI(Advanced Configuration and Power Interface) 방식의 시스템 전력 관리를 위한 데몬

atd : at 작업스케줄러 데몬(일시적)

auditd : 리눅스 감사(감시) 데몬? /etc/audit/ 디렉토리 참고

autofs : 자동마운트 데몬의 작동을 제어하는 프로그램

NetworkManager : 네트워크를 자동으로 관리하기 위한 데몬, bonding 구성 시 충돌날수 있으므로 off 시켜주자

anacron : cron과 유사, 시스템이 꺼져있을 경우 수행되지 못한 작업 확인 및 수행

certmonger : The certmonger daemon, together with its command line clients, attempts to simplify the process of generating public/private key pairs and Certificate Signing Requests (CSRs), and submitting CSRs to Certificate Authorities (CAs) for signing.

cgconfig

cgred

cpuspeed : 전력 소모량을 기반으로 cpu 스피드를 조절하는 데몬

crond : 작업스케쥴러 cron 데몬

cups : 리눅스 기본 출력 시스템인 CPUS 데몬(프린트)

haldaemon : 장치를 자동으로 인식하기 위해 필요한 HAL 데몬

ip6tables : IPv6 통신을 위한 방화벽 서비스

iptables : 리눅스 소프트웨어의 표준 방화벽 서비스

irqbalance : 멀티프로세서(둘이상의 CPU를 사용하는 환경)에서 CPU간의 인터럽트를 분리하기 위한데몬

kdump : kernel crash 가 일어났을 때 메모리 덤프를 해주는 데몬

lvm2-monitor : dmeventd(The Linux Kernel Device Mapper)를 사용하는 LVS(Linux Logical Volume Management)를 모니터링 하는 서비스 데몬 

mcelogd :

mdmonitor : RAID 상태를 모니터링하기 위한 데몬

messagebus : 시스템 메세지를 전송하기 위한 데몬

netconsole : 

netfs : 삼바, NFS, NCP 등 네트워크 파일시스템을 마운트 하기 위한 데몬

network : 네트워크 인터페이스 설정을 시스템 부팅시 커널에 적재시키는 데몬

nfs : 유닉스와 리눅스의 기본 네트워크 파일 시스템 NFS 데몬

nfslock : NFS를 통해 공유되는 파일을 클라이언트가 동시에 수정하는 것을 막기 위해 파일을 잠그는 데몬

  ( NFS 사용시 필요 )

ntpd : 네트워크를 통해 리눅스 서버의 시간정보를 동기화 하기 위한 네트워크 Time Protocol 데몬

ntpdate : ntp서버에 접속해서 값을 받아서 시스템에 설정하는 데몬

numad : The numad package provides a daemon for NUMA (Non-Uniform Memory Architecture) systems, that monitors NUMA characteristics

oddjobd : 

portreserve : reserve ports to prevent portmap mapping them

postfix : SMTP service daemon

psacct : 프로세스 통계를 확인하기 위한 psacct 데몬

quota_nld

rdisc

restorecond

rngd

rpcbind : 시스템에서 RPC 서비스를 관리

rpcgssd : 원격 인증을 위한 GSS(General Security Service) 데몬, NFS version 4 클라이언트를 위해 필요
rpcidmapd : 원격 이름 매핑을 위한 idmap(IDmapping) 데몬, NFS version 4를 위해 필요
rpcsvcgssd : 원격 인증을 위한 GSS(General Security Service) 데몬, NFS version 4 서버를 위해 필요

rsyslog : syslog 서비스 제공

saslauthd

smartd

sshd : ssh 서버 데몬

sssd : system security services daemon, 원격 디렉토리 접근과 인증을 관리하는 데몬

sysstat : 자원감시 도구

udev-post

ypbind : NIS/YP 클라이언트 측에서 실행시키는 데몬으로, 그외 시스템에서는 실행시키지 않는다


microcode_ctl

avahi-daemon : 네트워크 서비스를 인식하는 멀리캐스트 DNS 서비스 Avahi 데몬

avahi-dnsconfd : DNS 재설정 기능을 위한 데몬

bluetooth : 블루투스 장치를 사용하기 위한 데몬

capi : Comman ISDN API(Application Programming Interface Standard)

conman : 콘솔 관리 지원 서비스. 다수의 콘솔 장치와 동시 접속자에 대한 서비스 기능을 지님

dnsmasq : 리눅스용 Local DNS Cache Server - DNS 쿼리를 임시저장하여 DNS 서버의 부하 줄임

dund : 블루투스 관련 데몬 dund는 Dial-Up-Networking Daemon의 약자 - 블루투스 기능을 사용하지 않으면 OFF

firstboot : 초기 설정 유틸리티 스크립트로 설치 진행 후에 처음으로 부팅시 시스템에 의해 실행되는 데몬

gpm : 콘솔 환경에서 마우스 지원을 위해 필요한 데몬

hidd :블루투스 관련 서비스로서 키보드나 마우스등의 입력장치 지원을 제공 - 블루투스 기능을 사용하지 않으면 OFF

hplip

httpd : http 웹 서버 데몬

irda

iscsi : ip 기반의 스토리지 프로토콜

iscsid : iscsi 데몬 

portmap : 원격시스템 호출에 사용하는 데몬 (NFS, NIS에 이용)

rawdevices 

readahead_early/readahead_later : 시동시 속도를 향상시키기 위해 응용프로그램을 메모리에 할당하는 서비스.빠른 부팅을 위한다면 enable

sendmail

syslog : 시스템 로그를 관리하기 위한 데몬

tcsd

wdaemon

winbind

wpa_supplicant

xfs

yum-updatesd : 온라인 패키지 관리도구인 yum 에 관련된 프로그램 업데이트 데몬


'리눅스-Linux' 카테고리의 다른 글

[리눅스] cron  (0) 2014.04.01
[리눅스] lvm.conf filter  (0) 2014.03.27
[리눅스] TCP Wrapper  (0) 2014.03.21
[리눅스] createrepo를 통한 yum repository 구성  (0) 2014.03.13
[리눅스] 리눅스 램디스크 tmpfs  (0) 2014.03.12
Posted by 뭉탁거림
,

TCP Wrapper는 호스트 기반의 네트워크 ACL ! 접근제어 시스템

/etc/hosts.allow /etc/hosts.deny 두개의 파일을 참조하여 클라이언트의 연결을 허용할지를 결정 

Wrapper는 클라이언트의 연결 요청을 받으면 아래의 단계를 거친다.

  1. /etc/hosts.allow 파일에 있는 허용 규칙을 읽어서, 일치하는 규칙이 있는지 확인한다. 만약 일치하는 규칙이 있다면, 연결을 허용한다. 일치하는 규칙이 없다면, 다음 단계로 넘어간다.
  2. /etc/hosts.deny 파일에 있는 규칙을 읽는다. 일치하는 규칙이 있다면, 클라이언트 연결을 거부한다. 일치하는 규칙이 없다면 클라이언트 연결을 허용한다. 

 

출처 : http://www.joinc.co.kr/modules/moniwiki/wiki.php/man/12/tcpwrapper

Posted by 뭉탁거림
,

RPM 기반의 패키지 관리 프로그램으로 RPM 패키지의 설치/삭제/업데이트에 대한 어려움을 해결해주는 도구입니다.

RPM을 통한 패키지 설치 시 의존성에 대한 부분을 알아서 처리한다는게.. 제일 큰 이점이라고 생각합니다^^


yum에 대한 사용법은 넘기고 yum repository 서버 구성 !


# yum install createrepo : repo 저장소 만드는 패키지 설치

# createrepo [옵션] [디렉토리]

repomd.xml 파일과 gz 압축파일 생성

yum 2.1 이상 부터는 gz 파일을 참조

[root@Centos1 repodata]# ls

filelists.xml.gz  other.xml.gz  primary.xml.gz  repomd.xml






Posted by 뭉탁거림
,

fdisk -l 통해 리눅스에 달려있는 볼륨 정보를 볼때마다 dm-x 라는 볼륨에대해 궁금한 점이 있었습니다.

multipath나 LVM으로 구성할 경우 dm-x 장치가 생성되는 것 같은데....

이것의 실체는 .......... dm-x device에 xvda,xvdb 등 실제로 맵핑된다는 사실!

  

dmsetup 명령으로 /sys/block/dm-x/ 아래의 맵핑되어 있는 device 장치 정보를 확인 할 수 있다.

[[root@chefclient02 /sys/block/dm-0]$dmsetup info


Name:              VolGroup-lv_root

State:             ACTIVE

Read Ahead:        256

Tables present:    LIVE

Open count:        1

Event number:      0

Major, minor:      253, 0

Number of targets: 1

UUID: LVM-a8xHxzmvHshO0vh2Uozuk8ePQVZP5NpmFe9wj4KoHvIS4Lqd7ESljSAmpIBE8OWe


[root@chefclient02 /sys/block/dm-0/slaves]$ll

total 0

lrwxrwxrwx 1 root root 0 Feb 28 08:42 xvda2 -> ../../../../vbd-51712/block/xvda/xvda2

'리눅스-Linux' 카테고리의 다른 글

[리눅스] mknod를 이용한 장치 파일생성  (0) 2014.03.11
[Linux] 리눅스 bonding mode  (0) 2014.03.06
[Linux] dumpe2fs, tune2fs, fsck  (0) 2014.02.27
[Linux] yum repository 구성하기  (0) 2014.02.07
SSH 활용 sshpass  (0) 2014.02.06
Posted by 뭉탁거림
,