iptables nat 존재하지 않습니다


13

오늘 호스트 시스템의 iptables nat 가 작동을 멈추었고 어떤 일이 있었는지 전혀 알지 못합니다! (아주 나쁘다)

모든 명령은 루트 사용자로 실행됩니다.

실행 $ iptables -t nat -L하면 다음 오류 메시지가 나타납니다.

$ iptables -t nat -L
iptables v1.4.7: can't initialize iptables table `nat': Table does not exist (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.

사용 가능한 추가 업데이트가 없습니다. 또한 몇 가지 이전 커널로 서버를 다시 시작했지만 항상 같은 오류 메시지가 나타납니다.

내 서버는 최신 버전의 공식 OpenVZ 커널을 사용하여 CentOS에서 실행 중입니다.

$ uname -r
2.6.32-042stab088.4

또한 커널 버전 2.6.32-042stab85.20 및 2.6.32-042stab084.26도 테스트했습니다.

grub.conf의 첫번째 커널 :

title OpenVZ (2.6.32-042stab088.4)
root (hd0,1)
kernel /vmlinuz-2.6.32-042stab088.4 ro root=/dev/md2 rd_NO_LUKS rd_NO_DM nomodeset crashkernel=auto SYSFONT=latarcyrheb-sun16 LANG=en_US.UTF-8 KEYTABLE=de
initrd /initramfs-2.6.32-042stab088.4.img

다음 업데이트가 설치되었습니다.

$ rpm -qa --last
vzctl-4.7.2-1.x86_64                          Mon 05 May 2014 03:25:16 AM CEST
vzctl-core-4.7.2-1.x86_64                     Mon 05 May 2014 03:25:14 AM CEST
util-linux-ng-2.17.2-12.14.el6_5.x86_64       Wed 30 Apr 2014 11:37:19 PM CEST
libuuid-2.17.2-12.14.el6_5.x86_64             Wed 30 Apr 2014 11:37:18 PM CEST
libblkid-2.17.2-12.14.el6_5.x86_64            Wed 30 Apr 2014 11:37:18 PM CEST
vzkernel-2.6.32-042stab088.4.x86_64           Mon 26 Apr 2014 09:01:00 AM CEST
nss-softokn-freebl-3.14.3-10.el6_5.x86_64     Sat 26 Apr 2014 09:01:00 AM CEST
nss-softokn-3.14.3-10.el6_5.x86_64            Sat 26 Apr 2014 09:01:00 AM CEST
bridge-utils-1.2-10.el6.x86_64                Tue 15 Apr 2014 02:22:41 PM CEST
openssl-1.0.1e-16.el6_5.7.x86_64              Wed 09 Apr 2014 10:14:03 AM CEST
...

lsmod 나에게 다음을 제공합니다 :

$ lsmod | grep ip
iptable_nat             6302  0
nf_nat                 23213  2 iptable_nat,vzrst
nf_conntrack_ipv4       9946  3 iptable_nat,nf_nat
nf_defrag_ipv4          1531  1 nf_conntrack_ipv4
nf_conntrack           80281  5 iptable_nat,vzrst,nf_nat,nf_conntrack_ipv4,vzcpt
ip6t_REJECT             4711  0
ip6table_mangle         3669  0
ip6table_filter         3033  0
ip6_tables             18988  2 ip6table_mangle,ip6table_filter
iptable_mangle          3493  0
iptable_filter          2937  0
xt_multiport            2716  0
ipt_REJECT              2399  0
ip_tables              18119  3 iptable_nat,iptable_mangle,iptable_filter
ipv6                  322519  35 vzrst,ip6t_REJECT,ip6table_mangle

modprobe를 실행하면 다음 오류가 발생합니다.

$ modprobe /lib/modules/2.6.32-042stab088.4/kernel/net/ipv4/netfilter/iptable_nat.ko
FATAL: Module /lib/modules/2.6.32_042stab088.4/kernel/net/ipv4/netfilter/iptable_nat.ko not found.

그러나 파일이 존재합니다.

$ ll /lib/modules/2.6.32-042stab088.4/kernel/net/ipv4/netfilter/iptable_nat.ko
-rwxr--r-- 1 root root 16K Apr  3 16:20 /lib/modules/2.6.32-042stab088.4/kernel/net/ipv4/netfilter/iptable_nat.ko*

어떤 아이디어?


OpenVZ의 일부 구성은 게스트에서 NAT를 활성화하지 않습니다. 호스트에서 무언가가 변경 되었습니까?
Zoredache

이것은 게스트 시스템이 아닌 호스트 시스템입니다.
Lukas Schulze

답변:


10

vzctl이 4.6에서 4.7로 업데이트되었으므로 nf_conntrack의 설정이 기본적으로 비활성화되도록 변경되었습니다. ( https://openvz.org/Download/vzctl/4.7/changes )

해당 커밋 메시지 :

...

기본적으로 VE0에 대한 conntrack 비활성화

IP conntrack 기능은 venet 성능에 부정적인 영향을 미치므로 (uo ~ 10 %) 기본적으로 비활성화되어있는 것이 좋습니다.

...

(출처 : http://git.openvz.org/?p=vzctl;a=commit;h=a191a462579ee )

해결책:

배포에 따라 / etc 디렉토리에 있습니다. 그것을 찾아라:

$ sudo grep -R "옵션 nf_conntrack ip_conntrack_disable_ve0 = 1"/etc/modprobe.d/

"1"을 "0"으로 바꿉니다.

옵션 nf_conntrack ip_conntrack_disable_ve0 = 0

시스템을 재부팅

(출처 : https://bugzilla.openvz.org/show_bug.cgi?id=2943#c5 )

재부팅하는 대신 :

rmmod iptable_nat
rmmod nf_nat
rmmod nf_conntrack_ipv4
rmmod nf_conntrack

그리고 지금 일하고있는 nat

모든 출처 :

vzctl 4.7에 대한 변경 로그 : https://openvz.org/Download/vzctl/4.7/changes

의견에 솔루션이 포함 된 버그 보고서 : https://bugzilla.openvz.org/show_bug.cgi?id=2943

솔루션 설명이 단축 된 버그 보고서 : https://bugzilla.openvz.org/show_bug.cgi?id=2755#c4

해당 GIT 커밋 : http://git.openvz.org/?p=vzctl;a=commit;h=a191a462579ee

관련 위키 기사 : https://openvz.org/NAT#IP_conntracks


4

실행하려면 수퍼 유저 여야합니다 iptables. 따라서로 실행하십시오 root.

$ iptables -t nat -L
iptables v1.4.19.1: can't initialize iptables table `nat': Permission denied (you must be root)
Perhaps iptables or your kernel needs to be upgraded.

# iptables -t nat -L
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination
[...]

1
이미 루트 사용자로 로그인했습니다.
Lukas Schulze

1

실제로 파일에 문제가있는 것 같습니다. modprobe /lib/modules/2.6.32-042stab088.4/kernel/net/ipv4/netfilter/iptable_nat.ko를 추적하려고하면 어떻게합니까? 시스템이 실제로 ENOENT (그러한 파일이나 디렉토리가 없음)를 반환합니까? 나는 이것이 될 것이라고 상상할 수는 없지만 SELinux가 파일을 망칠 수 있습니까? 마지막으로 파일 / 파일 시스템이 손상되었을 수 있습니다. md5는 알려진 양호한 버전으로 요약합니다. 아니면 그냥 제거하고 새로운 것을 모두 복사하십시오. 바라건대 그것은 파일 시스템이 아닙니다.

이것을 시도하십시오 : /programming/3140478/fatal-module-not-found-error-using-modprobe


0

이 문제에 대한 다른 해결책을 찾았습니다! 노드에서 제거 할 수 없습니다

rmmod iptable_nat
rmmod nf_nat
rmmod nf_conntrack_ipv4
rmmod nf_conntrack

공식 안내서에서 다음을 발견했습니다.

vzctl set VZID --netfilter full --save --setmode restart

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.