일단.. 틀린 부분이 있을 수 있음.
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로 들어온 첫 패킷에 대해 마킹함)
댓글