iptables 타겟 설치 시 standard 못 찾는다는 에러
글쓴이: raphael4 / 작성시간: 화, 2014/07/08 - 9:29오전
iptables 1.4.4 arm 버전 으로 컴파일 해서 타겟에 설치 했는데
"iptables -P INPUT DROP" 같은 policy 명령어는 먹히는데
"iptables -A INPUT -s xxx.xxx.xxx.xxx -j ACCEPT" 같은 chain 명령어는 안 먹힙니다.
에러 메시지가
iptables v1.4.4: Couldn't load target `standard':/home/iptables/libexec/xtables/libipt_standard.so: cannot open shared object file: No such file or directory
같이 나오는데 구글링 해보니
http://openelec.tv/forum/90-miscellaneous/62371-iptables-not-working-properly-since-ion-2-99-2-x64
library 복사할때 -P 옵션 넣으라고 해서 그대로 했는데도 같은 에러가 발생되네요
애초에 libipt_standard.so 같은 library 파일이 저 경로에 존재하지도 않고
정말 iptables 포팅하는게 이렇게 힘드나 싶기도 하고 제가 못하는거 같기도 하고 답답합니다
특정 IP말고는 다 막고 싶은데 이러지도 못하고 저러지도 못하고 있는 상황입니다.
도움을 부탁드립니다.
Forums:
우선
컴파일했을때 libipt_standard.so 가 생성되었는지 확인이 필요합니다.
extensions 하위에 파일이 존재하는지 확인해보고, 존재하지 않으면 extensions/Makefile에 standard가 컴파일 옵션으로 있는지 체크해보세요..
다 정상이면, 타겟에 설치하는 부분이 문제일 수 있기 때문에
install쪽을 확인하셔야합니다.
소곤소곤
답변 감사합니다
extensions에는 해당 파일이 없고 libxt_standard.so 가 있습니다만
extensions에 있는 GNUMakefile 보니 standard 관련 옵션이 없습니다.
install 할때 standard 옵션이 있나 봤더니 그것도 아니고...
도대체 standard가 머 길래 이리 고생 시키는건지...에휴 ㅜㅜ
GNUMakefile?
libipt_icmp.so 라면 icmp라고 있을것이고,
libipt_state.so 라면 state라고 있을겁니다.
그쪽을 찾아서
libipt_standard.so 는 standard 라고 포함되어야 하는데 없다면 추가해서 컴파일해보세요.
ex) xxxx:=icmp state ... standard
잘 안되시면 해당 Makefile 파일 올려주세요, 같이 살펴보십시다..
소곤소곤
Makefile 보면
lib%.so: lib%.oo
${AM_VERBOSE_CCLD} ${CCLD} ${AM_LDFLAGS} -shared ${LDFLAGS} -o $@ $<;
lib%.oo: ${srcdir}/lib%.c
${AM_VERBOSE_CC} ${CC} ${AM_DEPFLAGS} ${AM_CFLAGS} -D_INIT=lib$*_init -DPIC -fPIC ${CFLAGS} -o $@ -c $<;
lib%.o: ${srcdir}/lib%.c
${AM_VERBOSE_CC} ${CC} ${AM_DEPFLAGS} ${AM_CFLAGS} -DNO_SHARED_LIBS=1 -D_INIT=lib$*_init ${CFLAGS} -o $@ -c $<;
이렇게 되어 있는거 보면 extensions 안에 있는 lib 파일은 전부다 컴파일 하는거 같은데
실제로 extensions 안에는 libxt_standard.c 도 있고 컴파일 후 libxt_standard.so 도 생김니다.
그런데 실행하면 libipt_standard.so 를 찾는다는게 먼가 이상합니다.
iptables 소스 파일을 잘 못 받아 온건가 싶도 하고... 먼가 빠뜨린게 있는거 같기도 하고...
아..
libipt_standard가 libxt_standard로 변경된 모양이네요.
결과적으로는 iptables 버전을 낮추시는게 권고됩니다.
(아니면 펌웨어 버전을 변경하셔야 됩니다)
http://www.linuxquestions.org/questions/linux-networking-3/not-able-to-find-libipt_standard-so-682374/
http://bugs.endian.com/view.php?id=2897
소곤소곤
정말 감사합니다.
외근이 많아서 확인이 항상 늦는데
친절하게 링크까지 걸어주시고 정말 감사드립니다.
커널 버전은 2.6.30.1을 올려서 쓰고 있는데
버전 문제일 줄은 몰랐습니다.
iptables 버전을 낮춰서 써봐야 겠네요. ㄷㄷㄷ
같은 증상을 가지고 있습니다..ㅠㅠ
혹시 iptables 버전을 낮추셔서 해결이 되셨나요?
저도 같은 증상인데..
위와 같은 증상이어서 iptables를 1.4.21 -> 1.4.8 -> 1.4.3 -> 1.4.2로 계속 낮추면서 타겟 설치해봤지만 해결 되지 않았습니다.
타겟보드 리눅스 버젼은 2.6.29버젼입니다.
결국 저 standard library를 로드못하는 것인데 configure할때 prefix경로와 같이 타겟보드도 같은 경로에 설치하니까 문제가 해결됐습니다.
댓글 달기