Iptables
| 작업 중인 문서! | |
|
미완성이며, 디자인이 완성되지 않았거나, 아직 채워지지 않은 내용이 있어 여러분의 참여가 필요한 문서입니다. |
서문
커널에서 지원하는 iptables와 관련한 모든 내용을 이곳에 기록하고자 한다. 경우에 따라서 어려울 수도 있다. 이 문서를 읽기 전 반드시 컴퓨터 네트워크 개론서를 "정독" 하여 네트워크 기본 지식을 습득하라. 누군가에게 물어보는 것에 대해 답변을 해주는 사람의 소중한 시간을 빼앗을 가능성에 대해 미안해하는 감정 정도는 가질 수 있겠으나, 누군가에게 질문하는 자체 또는 자기 자신의 치부를 드러내는 것을 두려워해선 안된다. 적당히 어설픈 지식을 갖추면 대강이라도 이해할 수 있지만 그렇지 못하면 외계어 내지는 고대 상형문자 문서보다 더 난해한 ― 흰 것은 도화지요, 검은 것은 그림이다(?) ― "예술" 작품으로밖에 안보일지도 모른다.
참고
- 이 문서의 최초 작성자는 질문에 답하지 않으며, 메우메우(?) 게으르므로 문서의 업데이트에 대해 보장하지 않는다. 이 문서는 GFDL 1.3을 따르므로 무단 복제 및 전제를 권장하되, 문서 편집 또는 배포시 이 문서 작업에 관여한 모든 구성원의 닉네임을 반드시 포함하도록 한다.
- 이 문서에 내용을 추가할 경우 내용의 근거가 되는 자료(참고문헌, 예:설명서, 안내서, 포럼, HOWTO, 블로그 게시글 등)를 필히 명시하도록 한다. 방법은 위키 원문 전체를 참고한다.
netfilter 소개
netfilter는 리눅스 커널에서 지원하는 패킷 선별 프레임워크이다. 기본적으로 다음과 같은 기능을 지원한다.<ref>http://netfilter.org/</ref>
- 무상태 패킷 선별(IPv4, IPv6)
- 상태별 패킷 선별(IPv4, IPv6)
- 모든 방식의 네트워크 주소, 포트 해석, 예: NAT/NAPT(IPv4, IPv6)
- 유연한 운영 기반
- 개별 기능 확장에 유리한 다중 계층 API
netfilter 프레임워크를 사용하는 데이터 흐름 선별 프로그램으로는 iptables, ip6tables, arptables, ebtables가 있으며, 이 중, 이 문서에서 설명할 대상은 iptables이다(추후 ip6tables의 내용을 이곳에 추가할 수 있다). 네트워크 '패킷' 흐름을 관리하기 때문에 통상적으로 OSI Layer 3를 처리하는 것으로 알려져 있으나, 실제로는 iptables에서도 '프레임' 통제가 가능(MAC address 필터링)<ref>Iptables MAC Address Filterling - nixCraft</ref>하며, 전송 계층에서의 흐름 통제도 가능하기 때문에 OSI 계층 이론으로는 데이터 단위 선별 처리에 대한 계층이나 기본 데이터 처리 단위 구분이 모호하다. netfilter 프로젝트에서는 데이터 흐름 선별 도구 프로젝트가 문어발식으로 퍼져나가는 문제로 인해, 네트워크 데이터 흐름을 관리할 새로운 도구 nftables<ref>The netfilter.org "nftables" project</ref>를 만들고있다.
iptables 소개
흔히들 알고 있는 기본 방화벽의 근본 도구다. 레드햇 기반의 배포판에서는 방화벽을 활성화 한 상태를 기본으로 설치<ref>Basic Firewall Configuration - RedHat Customer Portal</ref>하는데, 이 방화벽을 구성하는 부분이 바로 커널에 내장된 netfilter 프레임워크와 iptables다. 일반 초보자라면 iptables 자체가 워낙 무식하게 복잡한 느낌이기 때문에 우분투 배포판 사용자의 경우 배포판에서 제공하는 ufw<ref>Uncomplicated Fire Wall - ubuntu wiki, official.</ref><ref>UFW - ubuntu documentation, official.</ref><ref>우분투 방화벽(UFW) 설정 - WEBDIR</ref>를 쓰는데, ufw도 결국 iptables를 쓰게 만들어놓은 프론트엔드일 뿐이다. 만약 iptables의 근본 동작 따위(?)는 이해하고 싶지 않고, 속시원하게 ufw만 신경쓰겠다면 이 문서를 참고하면 되겠다. 어쨌든, 어떤 리눅스 플랫폼에서든 직접적이든 간접적이든 무조건 netfilter+iptables를 쓴다.
참고자료
<references/>