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.

ไม่มีการอัปเดตเพิ่มเติม ฉันรีสตาร์ทเซิร์ฟเวอร์ด้วยเมล็ดที่เก่ากว่าหลายแห่ง แต่ฉันได้รับข้อความแสดงข้อผิดพลาดเดียวกันเสมอ

เซิร์ฟเวอร์ของฉันทำงานบน CentOS ด้วยเคอร์เนล OpenVZ อย่างเป็นทางการในเวอร์ชั่นล่าสุด

$ 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 )

ข้อความคอมมิทที่สอดคล้องกัน:

...

ปิดใช้งาน conntrack สำหรับ VE0 โดยค่าเริ่มต้น

ฟังก์ชั่นการควบคุม IP มีผลกระทบด้านลบต่อประสิทธิภาพของ 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

และณัฐตอนนี้ทำงาน

แหล่งที่มาทั้งหมด:

การเปลี่ยนแปลงสำหรับ 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

บทความ Wiki ที่เกี่ยวข้อง: 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

ดูเหมือนว่ามีบางอย่างผิดปกติกับไฟล์หรือไม่ จะเป็นอย่างไรถ้าคุณพยายาม strace modprobe /lib/modules/2.6.32-042stab088.4/kernel/net/ipv4/netfilter/iptable_nat.ko? ระบบส่งคืน ENOENT จริง ๆ (ไม่มีไฟล์หรือไดเรกทอรี) ฉันไม่สามารถจินตนาการได้ว่ามันจะเป็นเช่นนั้น แต่บางที SELinux กำลังยุ่งกับไฟล์ และในที่สุดอาจไฟล์ / ระบบไฟล์เสียหาย md5sum กับรุ่นที่รู้จักกันดี หรือเพียงแค่ลบออกและคัดลอกใหม่ทั้งหมด หวังว่ามันไม่ใช่ระบบไฟล์

ลองทำสิ่งนี้: /programming/3140478/fatal-module-not-found-error-using-modprobe


0

ฉันพบวิธีแก้ไขปัญหาอื่นแล้ว! บนโหนดฉันไม่สามารถลบ

rmmod iptable_nat
rmmod nf_nat
rmmod nf_conntrack_ipv4
rmmod nf_conntrack

ในคำแนะนำอย่างเป็นทางการฉันพบ:

ชุด vzctl VZID --netfilter เต็ม - บันทึก --setmode รีสตาร์ท

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.