브릿지 방화벽 구성하는데 잘 안되네요..
글쓴이: wonjnlee / 작성시간: 화, 2017/02/21 - 11:19오후
브릿지 방화벽으로 사용할 pc는 페도라25에 커널 4.8.6입니다.
libnetfilter_queue, libnfnetlink 설치했습니다.
bridge는 기본적으로 설치되어있는 것 같아서 안건드렸습니다.
브릿지로 네트워크 카드 두개를 스위치 형식으로 구성하여, 패킷이 통하는 것은 확인했습니다.
그런데 iptables로 방화벽을 구성하려니 안되네요..
아예 iptables 구문 자체가 안먹는것 같습니다.
제가 추가적으로 설치해야 할 프로그램이 있을까요?
도움 부탁드립니다.
Forums:
iptables 구문 자체가 안 먹는다고 하셨는데 그
iptables 구문 자체가 안 먹는다고 하셨는데 그 과정을 정확히 올려 주세요. 님이 하신 작업이 어떤 작업을 한 것인지 알 수가 없기 때문에 무엇이 잘못 되었는지 올려주신 정보로는 판단을 할 수가 없습니다.
그리고, bridge 관련 rule은 Forward chain 에서 처리하여야 합니다.
감사합니다.
설치과정은 위에 적어드린대로 페도라25에 커널4.8.6, 그리고 libmnl, libnfnetlink, libnetfilter_queue 각각을 최신버전으로 설치했습니다.
bridge는 brctl 명령어를 입력하였을 때 실행이 되더라구요. 그래서 따로 설치하지 않았습니다.
랜카드는 하나는 메인보드에 딸려있는 것, 또 하나는 4port짜리 랜카드 하나를 설치하여서 그 중 하나만 랜선을 꼽아놓았습니다 (결국 2개를 사용)
bridge 구성은 다음과 같이 하였습니다.
brctl addbr br0
brctl stp br0 off
brctl addif br0 eth0
brctl addif br0 eth1
ifconfig eth0 0.0.0.0 up
ifconfig eth1 0.0.0.0 up
ifconfig br0 0.0.0.0 up
위에는 eth0, eth1로 되어있는데, 각각 설치되어있는 랜카드 이름을 적용하였습니다.
페도라25를 쓰니까 네트워크 카드 이름이 제각각이 되더라구요.
eth0에는 메인보드에 있는 랜카드를, eth1에는 추가한 4포트짜리 랜카드 중 사용하는 곳의 이름을 집어넣었습니다.
이렇게 구성하면, 브릿지는 작동하였습니다.
eth0을 통하여 들어온 패킷이 eth1로 bypass 되더라구요.
이제 이 스위치에 iptables를 적용하려고 했는데, 여기서 동작이 되지 않았습니다.
iptables -I FORWARD -p icmp -j DROP
위의 명령어를 사용하고, 브릿지를 구성한 pc에 연결한 client pc1에서 연결하지 않은 client pc2로 ping을 날려보았습니다.
물론 client pc2 에서 브릿지를 구성한 pc에 연결한 client pc1로 반대로도 날려보았습니다.
이론상으로는 ping이 가지 않아야 하는데 가더라구요..
그리고 동시에 패킷을 필터링하는 프로그램을 돌려보았는데, 패킷 자체를 가져오지 못하는 것 같습니다.
예전에 페도라 4 기반에서 커널 2.6.17로 브릿지를 구성하고, 프로그램을 구동하였을 때에는 문제없이 되었었거든요..
(물론 라이브러리는 다 맞춰보았습니다.. 컴파일은 되더라구요)
우선 프로그램의 문제인지 아닌지 판별하려면 iptables는 정상적으로 동작하는지 먼저 확인이 되어야하는데,
위에 ping drop도 안되는것 보니 제가 어딘가 설치를 잘못했거나 설정을 잘못 준것 같습니다.
도와주십시오.
음 ..
브릿지면 MAC 만 보고 바로 넘어갈 겁니다. MAC 이 없을 때만 라우팅 타구요..
ebtables 를 써서 필터링 하거나, 상위 Network Layer 로 올려서 iptables 룰로 필터링 되게 해야 할 겁니다.
http://ebtables.netfilter.org/br_fw_ia/br_fw_ia.html
되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』
/proc/sys/net/bridge/bridge
/proc/sys/net/bridge/bridge-nf-call-iptables 이 값 한번 확인해보시면 도움이 되실지 모르겠네요.
소곤소곤
확인했습니다. 0이었더라구요
echo 구문 이용해서 iptables, ip6tables, arptables 모두 1로 바꾸어주었습니다.
그런데도 iptables 구문이 안먹더라구요..
제가 더 바꾸어야 할 부분이 있는지 모르겠습니다. 도움 부탁드립니다.
iptables -L FORWARD -v -n
iptables -L FORWARD -v -n
결과를 좀 올려 주시죠. netfilter의 경우 rule이 순처 적용이 되므로, rule 순서가 어떻게 되느냐에 따라 원하는 결과가 안 나올 수 있습니다.
늦어서 죄송합니다
해결했습니다.
우선 커널 4.8.17에서 iptables 관련된 모듈이 기본적으로 0으로 세팅되어있더군요.
그것 수정하고 하니까 iptables를 통하여 패킷을 얻어오느 것이 가능했습니다.
댓글 달기