본문 바로가기
카테고리 없음

iptables의 MARK, CONNMARK에 대해

by Joseph.Lee 2019. 2. 4.

일단.. 틀린 부분이 있을 수 있음.

iptables로 Firewall구성하다가 정리하는 내용.


1. MARK와 CONNMARK의 차이점

* MARK : Standard MARK으로써 iproute2의 fwmark와 연동됨.


예시로..

# iptables -t mangle -A PREROUTING -i eth2 -j MARK --set-mark 100

# ip rule add fwmark 100 table tbl2

eth2(LAN)으로 들어온 패킷에 대한 라우팅은 fwmark 100 (tbl2) 에서 찾는다.



* CONNMARK : Conntrack와 연동되는 MARK인거 같다.

Conntrack는 state모듈에 비해 좀 더 향상된 기능을 가지고 있다.


[정확하지 않을 수 있음]

state는 그저 하나의 패킷에 대해서만 검사한다면 (그래서 NEW, ESTABLISHED, RELATED 가 TCP외에서는 잘 안먹힐때가 있다.)

conntrack는 UDP나 ICMP등에 대해서도 추적이 가능함

[정확하지 않을 수 있음]


2. save-mark, restore-mark에 대해


# iptables -t mangle -N prerouting_mark_lan

# iptables -t mangle -A prerouting_mark_lan -j MARK --set-mark 101

(101으로 마킹함, fwmark으로 적용됨)

# iptables -t mangle -A prerouting_mark_lan -j CONNMARK --save-mark

(Standard Mark를 Conntrack에 저장함)


# iptables -t mangle -A PREROUTING -i eth0 -m conntrack --ctstate ESTABLISHED,RELATED -j CONNMARK --restore-mark

(기존에 마킹했던 것을 Conntrack에서 읽어와서 Standard Mark에 적용함)

(-m connmark --mark X -j MARK --set-mark X 와 동일함, X는 숫자)


# iptables -t mangle -A PREROUTING -i eth2 -m conntrack --ctstate NEW -j  prerouting_mark_lan

(eth2로 들어온 첫 패킷에 대해 마킹함)



반응형

댓글