리눅스에서는 호스트 방화벽 기능을 위해 iptables 을 사용하기도 한다
firewalld 를 사용하도록 되어있고 Ubuntu 에서는 UFW(Ubuntu FireWall)을 사용해서 방화벽 서비스를 제공한다예전 사용자들은 iptables 에 익숙하다
iptables가 방화벽의 역할처럼 패킷을 차단, 허용하는 등의 필터링 기능을 직접 수행하는 것은 아니며 리눅스 커널에 내장된 netfilter라는 리눅스 커널 모듈을 통해 필터링이 이루어짐
iptables는 netfilter를 이용할 수 있도록 해주는 사용자 공간 응용 프로그램
iptables나 firewalld 나 UFW는 모두 netfilter의 frontend 역할
| 계층 | 구성 요소 | 설명 |
|---|---|---|
| 커널 공간 | 🔸 netfilter | 리눅스 커널에 내장된 패킷 필터링 프레임워크 → 실제로 패킷을 걸러내고, 변경하고, 차단함 |
| 유저 공간 | 🔹 iptables, nftables 🔹 firewalld, ufw | 커널의 netfilter에게 명령을 전달하는 도구들 → 명령어 또는 API를 통해 커널에 룰을 설정함 |

iptables는 리눅스에서 방화벽 규칙을 설정하는 명령어 도구로, 커널에 있는 netfilter 프레임워크와 연결되어 동작합니다.
서버에서 허용하거나 차단할 IP나 서비스 포트에 대한 정책을 수립
수립된 정책은 정책 그룹으로 관리
iptables는 패킷이 통과하는 경로에 따라 규칙(룰)을 설정 한다.
정책 그룹은 서버 기준의 트래픽 구간 별로 만드는데 트래픽구간은 서버로 유입되는 구간(INPUT), 서버에서 나가는 구간(OUTPUT), 서버를 통과하는 구간(FORWARD)
iptables는 용도에 따라 여러 개의 테이블을 사용합니다:
| 테이블 | 용도 |
|---|---|
| filter | 기본 테이블, 패킷 허용/차단에 사용 |
| nat | NAT 수행 (포트 포워딩 등) |
| mangle | 패킷 헤더 수정 등 고급 설정 |
| raw | conntrack에 앞서 처리할 룰 설정 가능 |
| security |
iptables는 트래픽이 흐르는 방향에 따라 체인(Chain) 개념을 사용합니다.
테이블에는 방향성과 관련된 그룹이 있다고 하는데 이 그룹이 체인이다.
필터 테이블에는 서버로 들어오는 트래픽, 나가는 트래픽, 통과하는 트래픽에 따라 INPUT 체인, OUTPUT 체인, FORWARD 체인 이 있다
| 체인 이름 | 설명 |
|---|---|
| PREROUTING | 패킷이 도착하자마자 처리 (라우팅 전에 필터링) |
| INPUT | 로컬 시스템이 수신하는 패킷 필터링 |
| FORWARD | 라우터처럼 중계하는 패킷을 필터링 |
| OUTPUT | 로컬에서 생성된 패킷 필터링 |
| POSTROUTING | 패킷이 나가기 직전에 처리 (SNAT 등) |
iptables -A <CHAIN> -m <match> --조건들 -j <target>
hostname -I : 리눅스만 설치되면 사용가능
ifconfig : net-tools가 설치되어 있어야 하는데 인터페이스 별로 할당된 정보를 출력
ip asudo nano /etc/netplan/00-installer-config.yaml 파일 수정network:
version: 2
ethernets:
enp0s3:
dhcp4: no
addresses:
- 10.0.2.101/24 #ip 설정
gateway4: 10.0.2.1
nameservers:
addresses: [8.8.8.8]
sudo netplan apply : 설정 적용ip a
hostnamehostnamectl set-hostname 이름rebootsudo vi /etc/hosts127.0.1.1 slave2 # 각 이름 설정 ㅡmaster, slave1, slave2
10.0.2.101 master
10.0.2.102 slave1
10.0.2.103 slave2