|
참고문헌 http://blog.pages.kr/tag/brctl-util
1.Bridge-util를 설치
yum install bridge-utils.i386 -y
2. brctl 옵션
브릿지 유틸인 brctl을 설치한 후 brctl 을 실행하면 다음과 같이 사용할 수 있는 목록이 나오며 각각의 옵션은 아래와 같다.
[root@mento src]#brctl
Usage: brctl [commands]
commands:
addbr <bridge> add bridge
delbr <bridge> delete bridge
addif <bridge> <device> add interface to bridge
delif <bridge> <device> delete interface from bridge
setageing <bridge> <time> set ageing time
setbridgeprio <bridge> <prio> set bridge priority
setfd <bridge> <time> set bridge forward delay
sethello <bridge> <time> set hello time
setmaxage <bridge> <time> set max message age
setpathcost <bridge> <port> <cost> set path cost
setportprio <bridge> <port> <prio> set port priority
show show a list of bridges
showmacs <bridge> show a list of mac addrs
showstp <bridge> show bridge stp info
stp <bridge> {on|off} turn stp on/off
- addbr : 브릿지를 추가(정의)한다.
- delbr : 브릿지를 삭제한다.
- addif : 해당 브릿지에 인터페이스를 추가(정의)한다.
- delif : 브릿지에서 특정 인터페이스를 삭제한다.
- setageing : 브릿지의 ageing time을 정의한다.
- setbridgeprio : 브릿지의 우선도(priority)를 정의한다.
- setfd : 브릿지의 forward delay를 정의한다.
- sethello : hello time을 정의한다.
- setmaxage : 최대 message age를 정의한다.
- setpathcost : 경로의 cost를 정의한다.
- setportprio : 해당 포트의 우선도(priority)를 정의한다.
- show : 브릿지의 목록을 보여준다.
- showmacs : 브릿지를 통과하는 시스템의 mac 주소를 보여준다.
- showstp : 브릿지의 stp(spanning tree protocol) 정보를 보여준다.
- stp : stp(spanning tree protocol)을 사용할 것인지 그렇지 않을 것인지를 정의한다.
3.bridge init스크립트 등록
cat /etc/rc.d/init.d/bridge
#! /bin/bash
#
# bridge Bring up/down bridge
#
# chkconfig: 2345 9 91
# description: Activates/Deactivates all bridge interfaces configured to \
# start at boot time.
# probe: true
### BEGIN INIT INFO
# Provides: $bridge
### END INIT INFO
# See how we were called.
case "$1" in
start)
brctl addbr br0
brctl stp br0 on
brctl addif br0 eth0
brctl addif br0 eth1
/sbin/ifconfig eth0 down
/sbin/ifconfig eth0 0.0.0.0 promisc up
/sbin/ifconfig eth1 down
/sbin/ifconfig eth1 0.0.0.0 promisc up
/sbin/ifconfig br0 192.168.123.208 promisc up
route add default gw 192.168.123.254
;;
stop)
brctl delif br0 eth1
brctl delif br0 eth0
brctl delbr br0
;;
status)
brctl showmacs br
;;
restart|reload)
cd $CWD
$0 stop
$0 start
;;
*)
echo $"Usage: $0 {start|stop|restart|reload|status}"
exit 1
esac
exit 0
3-1. brctl 설정설명
[root@mento src]#brctl addbr br0
=> br0 이라는 브릿지를 생성한다. 여기에서 br0 은 본인이 원하는 어떠한 이름으로 설정해도 된다.
[root@mento src]#brctl stp br0 on
=> 브릿지에서 stp 즉, spanning tree protocol을 on할 것인지 off할 것인지 정의하는 것이다.
on으로 설정하면 네트워크 루핑을 방지할 수 있으므로 on으로 설정한다.
[root@mento src]#brctl addif br0 eth0
=> br0 브릿지 인터페이스에 eth0을 포함하도록 정의한다.
[root@mento src]#brctl addif br0 eth1
=> br0 브릿지 인터페이스에 eth1을 포함하도록 정의한다.
[root@mento src]#ifconfig eth0 down
=> 기존의 eth0이 설정되어 있을 수 있으므로 일단 eth0 인터페이스를 down 시킨다.
[root@mento src]#ifconfig eth1 down
=> 기존의 eth1이 설정되어 있을 수 있으므로 일단 eth1 인터페이스를 down 시킨다.
[root@mento src]#ifconfig eth0 0.0.0.0 promisc up
=> eth0의 IP를 0.0.0.0 으로 설정하여 초기화하고 promisc 모드로 작동하도록 설정한다.
브릿지 모드로 사용하면 목적지 mac 주소에 관계없이 모든 패킷이 통과하도록 기본적으로
promisc 모드로 작둉하지만, 만약 인터페이스가 promisc 모드로 작동하지 않으면 브릿지가 작동하지
않게된다.
[root@mento src]#ifconfig eth1 0.0.0.0 promisc up
=> eth1의 IP를 0.0.0.0 으로 설정하여 초기화하고 promisc 모드로 작동하도록 설정한다.
[root@mento src]#ifconfig br0 192.168.123.208 promisc up
=> br0 인터페이스의 IP를 192.168.123.208 로 설정한다. br0에는 아이피를 부여하지 않아도 상관이 없다.
단, 브릿지 서버를 외부에서 원격으로 관리하거나 모니터링 등을 위해서 아이피를 부여해준다.
IP가 할당된 br0 인터페이스는 eth0과 eth1을 묶은 가상의 인터페이스라고 생각하면 된다.
[root@mento src]#route add default gw 192.168.123.254
=> default gateway를 라우팅 테이블에 정의한다. 단, 외부에서 접속하고자 한다면 설정해준다.
위와 같이 설정한 후 ifconfig를 실행하면 다음과 같이 보일 것이다.
[root@mento src]# ifconfig
br0 Link encap:Ethernet HWaddr 00:02:B3:E9:83:7C
inet addr:222.222.222.2 Bcast:10.255.255.255 Mask:255.0.0.0
UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1
RX packets:19850 errors:0 dropped:0 overruns:0 frame:0
TX packets:66 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:9488220 (9.0 MiB) TX bytes:9412 (9.1 KiB)
eth0 Link encap:Ethernet HWaddr 00:02:B3:E9:83:7D
UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1
RX packets:9971 errors:0 dropped:0 overruns:0 frame:0
TX packets:14914 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1762112 (1.6 MiB) TX bytes:8718643 (8.3 MiB)
eth1 Link encap:Ethernet HWaddr 00:02:B3:E9:83:7C
UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1
RX packets:11971 errors:0 dropped:0 overruns:0 frame:0
TX packets:9443 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:8484941 (8.0 MiB) TX bytes:1502293 (1.4 MiB)
Base address:0xbc00 Memory:fc5e0000-fc600000
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:3 errors:0 dropped:0 overruns:0 frame:0
TX packets:3 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:672 (672.0 b) TX bytes:672 (672.0 b)
만약 브릿지를 재설정하려면 먼저 해당 브릿지에 설정되어 있는 인터페이스를 삭제한 후 브릿지를 삭제하면 된다.
주의할 점은 원격접속을 한 상태라면 네트워크가 끊어지게 된다.
[root@mento src]#brctl delif br0 eth0
[root@mento src]#brctl delif br0 eth1
[root@mento src]#brctl delbr br0
4.Iptable설정 예제
cat /etc/sysconfig/iptables
# Generated by iptables-save v1.2.9 on Thu Dec 9 10:08:33 2004
*filter
:INPUT DROP [0:0]
:FORWARD DROP [242:27601]
:OUTPUT ACCEPT [4445:1628609]
:IF - [0:0]
################################################################################
# Chain create
################################################################################
-A INPUT -j IF
-A FORWARD -j IF
################################################################################
# Public
################################################################################
# 잘못된 패킷 차단
#-A IF -m state --state INVALID -j DROP
# 로컬호스트에서의 모든패킷허용
-A IF -i lo -j ACCEPT
# 서브넷에서의 내,외부로 모든패킷허용
-A IF -s 내부IP대역/255.255.255.0 -j ACCEPT
-A IF -s 역외부IP대/255.255.255.0 -j ACCEPT
# 서브넷에서의 내,외부로 ping 허용
-A IF -s 내부IP대역/255.255.255.0 -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A IF -s 외부IP대역/24 -p icmp -m icmp --icmp-type 8 -j ACCEPT
# 내부에서 외부로 나가는 tcp 모두허용
-A IF -p tcp -m tcp --sport 20 -j ACCEPT
-A IF -p tcp -m state --state ESTABLISHED -m tcp --sport 1:65535 --dport 1:65535 -j ACCEPT
# 내부서브넷에서 외부로 나가는 udp 모두허용
-A IF -p udp -m udp --sport 1:65535 -j ACCEPT
################################################################################
# Enbridge Network
################################################################################
-A IF -s 124.56.116.13 -p tcp -m state --state NEW,ESTABLISHED -m tcp --dport 22 -j ACCEPT
################################################################################
# Firewall level
################################################################################
# SSH
-A IF -s 124.56.116.13 -p tcp -m state --state NEW,ESTABLISHED -m tcp --dport 22 -j ACCEPT
################################################################################
# Desktop level
################################################################################
# MSN
-A IF -p tcp -d 내부IP대역/255.255.255.0 --dport 1863:1864 -j ACCEPT
-A IF -p tcp -d 내부IP대역/255.255.255.0 --dport 6901 -j ACCEPT
-A IF -p tcp -d 내부IP대역/255.255.255.0 --dport 7801:7825 -j ACCEPT
-A IF -p tcp -d 내부IP대역/255.255.255.0 --dport 6891:6900 -j ACCEPT
# edonkey
-A IF -p tcp -d 내부IP대역/255.255.255.0 --dport 4662 -j ACCEPT
################################################################################
# Server level
################################################################################
# SMTP/WWW/POP3
-A IF -p tcp -m state --state NEW,ESTABLISHED -m tcp --dport 25 -j ACCEPT
-A IF -p tcp -m state --state NEW,ESTABLISHED -m tcp --dport 80 -j ACCEPT
-A IF -p tcp -m state --state NEW,ESTABLISHED -m tcp --dport 110 -j ACCEPT
# DNS
-A IF -d 211.212.213.214 -p udp -m udp --dport 53 -j ACCEPT
-A IF -d 211.212.213.214 -p tcp -m state --state NEW,ESTABLISHED -m tcp --dport 53 -j ACCEPT
# SSH
-A IF -d 211.212.213.214 -p tcp -m state --state NEW,ESTABLISHED -m tcp --dport 22 -j ACCEPT
# Samba
-A IF -d 211.212.213.214 -p tcp -m state --state NEW,ESTABLISHED -m tcp --dport 139 -j ACCEPT
# 윈도우 네트워크 드라이브
#-A IF -d 211.212.213.214 -p tcp -m state --state NEW,ESTABLISHED -m tcp --dport 139 -j ACCEPT
#-A IF -d 211.212.213.214 -p tcp -m state --state NEW,ESTABLISHED -m tcp --dport 445 -j ACCEPT
#-A IF -d 211.212.213.214 -p udp -m state --state NEW,ESTABLISHED -m udp --dport 137 -j ACCEPT
#-A IF -d 211.212.213.214 -p udp -m state --state NEW,ESTABLISHED -m udp --dport 138 -j ACCEPT
# FTP
-A IF -d 211.212.213.214 -p tcp -m state --state RELATED,ESTABLISHED -m tcp --dport 20 -j ACCEPT
-A IF -d 211.212.213.214 -p tcp -m state --state NEW,ESTABLISHED -m tcp --dport 21 -j ACCEPT
# ms-sql
#-A IF -d 211.212.213.214 -p tcp -m state --state NEW,ESTABLISHED -m tcp --dport 1433 -j ACCEPT
#-A IF -d 211.212.213.214 -p tcp -m state --state NEW,ESTABLISHED -m udp --dport 1433 -j ACCEPT
# oracle
#-A IF -d 211.212.213.214 -p tcp -m state --state NEW,ESTABLISHED -m tcp --dport 1522 -j ACCEPT
# Terminal service
-A IF -d 211.212.213.214 -p tcp -m state --state NEW,ESTABLISHED -m tcp --dport 3389 -j ACCEPT
################################################################################
# DROP
################################################################################
# 외부에서 내부로의 TCP 를 차단. 내부에서 외부로의 TCP 는 막지않음.
-A IF -p tcp --syn -d 내부IP대역/255.255.255.0 -j DROP
# ping 차단
-A IF -p icmp -m icmp --icmp-type 8 -j REJECT --reject-with icmp-port-unreachable
COMMIT
# Completed on Thu Dec 9 10:08:33 2004
|
첫댓글 iptable 와 비슷한 방법이네요 ~
내용 감사합니다.