Tips and Tricks


컴퓨터, 웹, 리눅스 등 관련 tips

>> Home

 
작성일 : 09-05-22 06:40
IP masquerade (iptables)
 글쓴이 : 관리자 (61.25)
조회 : 6,524  
iptables를 이용한 설정
(1) SNAT(Source NAT): 기존의 IP Masquerade를 말한다.
1) 사용법
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 203.247.50.3
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 203.247.50.3-203.247.50.7
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 203.247.50.3:1-1023
=> -o는 패킷을 보내는 인터페이스 장치를 지정한다. SNAT에서는 패킷을 내보내는 장치를 지정할 수 있다. --to 는 나가는 패킷에 부여할 소스 주소이다. IP공유라면 --to는 인터넷
쪽의 공인 IP를 지정하면 된다.(지정하지 않아도 상관없다.)
2) 사용예
ㄱ. 한국통신 ADSL을 리눅스에 연결해 인터넷을 공유(IP MASQUERADING)하는 경우
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
ㄴ. 고정 IP를 사용하는 리눅스에서 인터넷을 공유하는 경우
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j SNAT --to 203.247.50.3
=> 참고로 192.168.0.0/24는 지정하지 않아도 된다.
ㄷ. 유동 IP를 사용하여 인터넷을 공유하는 경우
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
3) 설정의 확인
iptables -t nat -L
(참고) 위 설정이외에도 다음과 같은 명령을 내려서 포워딩이 가능하게 해야 한다.
echo 1 > /proc/sys/net/ipv4/ip_forward
(2) DNAT(Destination NAT)
1) 개요: DNAT는 부하분산이나 평준화에만 사용하는 것은 아니다. 간단한 방화벽으로도 유용하다.
리눅스A(203.247.50.3)에 DNAT를 설정하여 웹서버와 메일서버를 각각 내부주소인 리눅스B
(192.168.1.11)와 리눅스C(192.168.1.12)에서 서비스 하도록 지정하고 인터넷에서 다른
연결은 리눅스A로 지정하면 리눅스A는 간단한 방화벽과 같은 구실을 한다.
2) 사용예
ㄱ. 웹서버(192.168.1.11) 분산
iptables -A PREROUTING -t nat -p tcp -d 203.247.50.3 --dport 80 -j DNAT \\
--to 192.168.1.11:80
=> (설명)
- -A PREROUTING: DNAT는 먼저 목적지 주소를 변경하고 (203.247.50.3을 192.168.1.11로)
다음에 라우팅이 이루어진다.
- -t nat: 부하분산도 nat기능이다.
- -p tcp: 웹(www)은 tcp를 사용한다.
- -d 203.247.50.3 --dport 80: 들어오는 패킷의 목적지 주소가 203.247.50.3이고 포트번호
가 www(80번)인 경우만 이 규칙을 적용한다.
- j DNAT: destination NAT
- --to 192.168.1.11:80 => 패킷의 목적지 주소를 192.168.1.11 포트번호를 80번으로 설정
하라는 뜻이다. 192.168.1.11 서버에서는 80번 포트에서 웹서버 프로그램을 가동해야 한
다.
ㄴ. 메일서버(192.168.1.12)
iptables -A PREROUTING -t nat -p tcp -d 203.247.50.3 --dport 25 -j DNAT 192.168.1.12:
25
ㄷ. DNS서버를 192.168.1.10으로 변경하려면 다음과 같이 지정한다.
iptables -A PREROUTING -t nat -p udp -d 203.247.50.3 --dport 53 -j DNAT --to 192.168.\\
1.10:53
=> DNS는 UDP를 사용한다.
3) 설정의 확인
iptables -t nat -L
=> 설정을 보통 포트이름등으로 보여준다.
iptables -t nat -nL
=> 설정을 포트넘버등 숫자로 보여준다.
4) 설정의 해제
iptables -t nat -F
// ------------------------------
iptables 옵션
-t 옵션 : 테이블 선택
-t nat : NAT 작동을 하기 위해서 언제나 NAT 테이블에 사용
-A 옵션 : chain 끝에 새로운 규칙 추가
ex ) -A POSTROUTING
-I 옵션 : chain 처음에 새로운 규칙 추가
ex ) -I PREROUTING
-s 옵션 : 패킷이 변환된 후의 발신지 설정
-d 옵션 : 패킷이 변환된 후의 수신지 설정
-i 옵션 : 패킷이 나가는 네트워크 인터페이스 설정 POSTROUTING
-o 옵션 : 패킷이 들어오는 네트워크 인터페이스 설정 PREROUTING
발신지 주소를 1.2.3.4 로 변경하기
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 1.2.3.4
수신지 주소를 5.6.7.8 로 변경하기
iptables -t nat -A PREROUTING -o eth0 -j DNAT --to 5.6.7.8
[출처] iptables 옵션 |작성자 마
// ----------------------------------
1. iptables의 구조
iptables는 크게 filter 와 nat 라는 테이블로 나누어진다. filter 라는 테이블은 기본적으로 생략이 가능하며 기본 필터링은 논리적인 3개의 chain 으로 구성되어 있다. 각 INPUT / OUTPUT / FORWOARD 라는 이름을 가지고 있으며 사용자가 정의한 새로운 chain도 생성 가능하다.
2. 기본 표기법
iptables [-t table] [action] [chain] [pattern] [-j target]
[table] 크게 nat와 filter로 나누며 기본값은 filter이다.
[action] 전체 체인에 대한 정책을 지정 / -A , -L , -D , -F 등 대문자 옵션이 해당한다.
[chain] 일반적 필터링에 속하는 INPUT.OUTPUT.FORWARD가 있으며 NAT테이블에는 POSTROUTING / PREROUTING / OUTPUT 이 있다.
[pattern] 세부규칙을 지정하는 것으로 소문자 옵션 -s / -p /-d 등이 이에 해당한다.
[target] 정책을 지정하는것이며 DROP / ACCEPT / LOG 등등이 있다.
iptables -t filter
-A INPUT (들어 오는 패킷에 대한 필터링
-i eth0 (eth0 네트워크 아답터로 들어오는 패킷들이 대상임)
-p ICMP (프로토콜이 ICMP이면)
-j DROP(해당 패킷을 소멸하는 방법 - DROP은 패킷을 소멸 시킴)
----------------------------------------------------------------------------------------------
iptables -t filter
-A INPUT
-i eth0 (eth0 네트워크 아답터로 들어오는(input) 패킷들이 대상임)
-o eth0 (eth0 네트워크 아답터로 나가는는(output) 패킷들이 대상임)
-p TCP (프로토콜이 TCP이면)
--dport 22 (목적지(destination) 포트번호가 80번이면)
--sport 22 (발신지(sourde) 포트번호가 80번이면)
-j ACCEPT (DROP 또는 ACCEPT)
3. iptables 사용하기
iptables 는 사용하는 방법은 크게 두가지가 있다. 첫째는 전체 체인에 대한 설정이고 두번째는 각 체인에 대한 규칙을 사용하는 방법이다. 체인에 대한 동작설정은 대문자 옵션을 사용하고 체인에 대한 세부규칙은 소문자 옵션을 사용한다.
*체인 전체옵션 설명
-N 새로운 체인을 만든다
-X 비어있는 체인을 제거한다
-P 체인의 정책을 설정한다
-L 현재 체인의 정책을 보여준다
-F 체인의 규칙을 제거한다
*체인 동작옵션 설명 (내부규칙을 뜻함)
-A 체인에 새로운 규칙을 추가한다. 해당체인에 마지막규칙으로 등록된다.
-t 가 filter 인 경우 INPUT, FORWARD 사용가능
-t 가 nat 인 경우 POSTROUTING , PREROUTING 사용가능
-I 체인에 규칙을 맨 첫부분에 등록한다.
-R 체인의 규칙을 교환한다.
-D 체인의 규칙을 제거한다
4. iptables 세부적인 옵션 사용하기
-s / -d 출발지('-s' , '--source') / 도착지 ('-d' , '--destination')를 뜻함
예> iptables -A INPUT -s 192.168.10.0/24 -j DROP
=192.168.10.0 대역의 네크워크에서 들어오는 패킷들을 모두 DROP한다.
-j (ACCEPT , DROP , DENY , REDIRECT 등등 설정
예> iptables -A INPUT -s 192.168.10.20 -j DENY
=192.168.10.20으로 들어오는 패킷에 대해서 거부한다.
-p (프로토콜의 지정)
예> -p ! TCP
=TCP 프로토콜이 아닌경우를 뜻함
-i ('--in-interface') 패킷이 들어오는 인터페이스를 지정
: INPUT / FORWARD 체인에서 사용
: -t nat 이면 PREROUTING에서만 사용 가능
-o ('--out-interface') 패킷이 나가는 인터페이스를 지정
: OUTPUT / FORWARD 체인에서 사용
: -t nat 이면 POSTROUTING에서만 사용 가능
-t (--table) 테이블 선택의 의미
-t filter / -t nat / -t mangle 세가지 선택을 할수 있다.
5. iptables 의 추가 옵션 설정하기
-p 같은 프로토콜 관련 옵션들의 기능에 대한 세부적인 추가 옵션을 제공한다.
--sport 발신지에서의 하나의 포트나 포트범위를 지정한다.
--dport 도착지에서의 포트를 지정한다.
--tcp-flags 플래그를 지정하는 옵션이다. 첫번째는 검사하고자 하는 지시자 리스트 .
두번째는 지시자에 어떻게 할것인가를 설정
예> iptables -A INPUT -p tcp --tcp-flag ALL SYN<ACK -j DENY
=모든플래그를 검사(ALL의 의미는 SYS,ACK,FIN,RST,URG,PSH를 의미)SYN 과 ACK
만 거부한다.
6. 간단한 정책 확인법
핑테스트
#ping localhost
= 127.0.0.1로 핑 보내기
#iptable -A INPUT -s 127.0.0.1 -p icmp -j DROP
=출발지가 127.0.0.1 이며 프로토콜 icmp 사용해 들어오는 패킷을 DROP 한다.
다시 핑테스트
#ping localhost
= ping이 되지 않아야 정상
7. 정책 지우기
* 지우고자하는 정책 확인 (-L)
#iptables -L --line (정책 순서대로 리스트 번호가 설정되어 보여짐)
* 개별 정책 지우기 (-D)
iptables -D [해당정책] [리스트번호]
예> iptables -t nat -D PREROUTING 2
* 전체 정책 초기화 (-F)
예> iptables -F INPUT (INPUT체인에 부여된 정책 모두 제거)
8. iptables 저장하고 불러오기
원하는 방화벽 체인을 설정해 놓은후 그 설정을 저장하여 설정된 내용을 불러 올수 있다.
* 저장명령어 (설정한 내용을 저장하는 스크립트이다)
iptables-save > [파일명]
예> iptables-save > firewall.txt
* 저장한 내용 화면에 출력하기
iptables-save -v
* iptables-restore ( iptables-save로 저장한 체인을 복구하는 스크립트이다)
iptables-restore < [파일명]

 
 

Total 40
번호 제   목 글쓴이 날짜 조회
25 Shift + Space 로 한영전환하기 팁들~ jazzman 11-10 3123
24 Windows 7 시작시 CHKDSK 이 안 뜨게 하는 방법 jazzman 11-09 2888
23 'Dropbox' USB 메모리 들고 다닐 일이 없… jazzman 08-31 2356
22 Apache access_log 로그 관련 내용및 관리법 jazzman 10-24 5129
21 IP masquerade (iptables) 관리자 05-22 6525
20 댓글 한꺼번에 지우기 (MySQL) jazzman 08-03 5320
19 댓글 스팸 막기 관리자 08-02 4523
18 외부 링크 막기 관리자 03-11 4602
17 netstat 사용법 정리 관리자 12-30 59256
16 리눅스 데몬설명 관리자 12-30 7519
15 아파치 웹서버 장애대처 및 튜닝방법 관리자 12-30 7304
14 [펌] Windows XP의 모든 것 관리자 09-19 4432
13 GRUB 재설치 방법 관리자 01-28 5534
12 Windows 서비스 목록 관리자 03-06 5680
11 "바탕화면 보기" 아이콘 새로 만들기 관리자 01-20 4939
 1  2  3  

>> Home