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 뭉탁거림
,

[리눅스] parted

리눅스-Linux 2014. 11. 18. 10:28

리눅스의 부트로더 grub / lilo 의 경우 DOS 파티션 테이블을 사용을 합니다.


여기서 파티션이란?

: 연속된 저장 공간을 독립된 영역으로 나누어서 사용

파티션의 종류 : 자세한 내용은 구글링..

1) DOS 파티션 table

2) BSD DISK Lable

3) Apple 파티션 MAP


fdisk의 경우 2TB 이상을 넘겨서 사용할수가 없다(64bit 포함)
즉 2TB 이상의 실린터를 컨드를 할수 없다는 의미로 2TB이상을 사용하기 우해선 GNU parted를 사용해서 파일시스템을 구성해야 된다


MBR / GTP 방식의 차이


- parted를 이용한 파티션 설정

1) 2TB를 너믄 파티션의 경우 gtp 라벨을 사용

2) kernel에 2TB 이상의 파티션을 사용할 수 있게 설정(대부분 설정되어있음)

3) parted는 설정과 동시에 디스크에 기록(fdisk와 다름)

# parted /dev/sdb

# print


gpt lable 생성

# mklable gpt

bsd, gpt, loop, mac, mips, msdos, sun 등 지원

일반적으로 msdos이며 2TB 이상 사용시 gpt 사용


파티션 생성

# mkpart primary 0 3TB

# print

# quit


파티션 확인

#fdisk -l



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

[Linux] iscsi.conf timeout 관련  (0) 2015.06.10
[리눅스] 파일 무결성 검증  (1) 2014.11.18
[리눅스] kdump  (0) 2014.11.07
[리눅스] nohup  (0) 2014.10.31
[리눅스] fuser  (0) 2014.05.22
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 뭉탁거림
,

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 뭉탁거림
,

df를 통해 mount 된 정보를 살펴보다 tmpfs라는 파일시스템으로 /dev/shm에 mount 되어 있는 것이 궁금하여 이것저것 모아 정리


Filesystem    Type    Size  Used Avail Use% Mounted on

/dev/mapper/VolGroup-lv_root

                    ext4     18G  3.1G   14G  19% /

tmpfs        tmpfs    1.9G     0  1.9G   0% /dev/shm

/dev/xvda1    ext4    485M   52M  408M  12% /boot

tmpfs        tmpfs     20G     0   20G   0% /var/tmp


리눅스에서는 tmpfs라는 파일시스템으로 


또한 /etc/fstab파일을 보면 mount 정보를 확인할수 있는데...

 

tmpfs         /dev/shm      tmpfs     defaults             0 0


 

메모리파일시스템인 tmpfs로 /dev/shm 마운트가 되어 있음을 확인할수 있다 

 

옵션은 defaults로 되어 있는데 만일 크기를 변경하고자 하는 경우 defaults대신 size=24G로 넣으면 된다

 

defaults옵션은 크기는 현재 시스템 메모리의 0.5배만큼 잡는것을 기본!

 


명령행으로는

 

mount -t tmpfs tmpfs /mount_point -o size=1500M

 


Posted by 뭉탁거림
,