iptables nat không tồn tại


12

Hôm nay iptables nat của tôi trên hệ thống máy chủ ngừng hoạt động và tôi không có manh mối gì xảy ra! (Điều đó rất tệ, tôi biết)

Tất cả các lệnh được thực thi như người dùng root.

Nếu tôi chạy, $ iptables -t nat -Ltôi nhận được thông báo lỗi sau:

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

Không có cập nhật thêm có sẵn. Tôi cũng khởi động lại máy chủ với một số nhân cũ hơn, nhưng tôi luôn nhận được thông báo lỗi tương tự.

Máy chủ của tôi đang chạy trên CentOS với kernel OpenVZ chính thức trong phiên bản mới nhất.

$ uname -r
2.6.32-042stab088.4

Cũng đã thử nghiệm phiên bản kernel: 2.6.32-042stab85.20 và 2.6.32-042stab084.26

Nhân đầu tiên trong 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

Các bản cập nhật sau đã được cài đặt:

$ 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 cho tôi những điều sau:

$ 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

Chạy modprobe đưa ra lỗi sau:

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

Nhưng tập tin tồn tại:

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

Có ý kiến ​​gì không?


Một số cấu hình của OpenVZ không cho phép NAT trong các khách. Có điều gì đó thay đổi trên máy chủ?
Zoredache

Đây là hệ thống máy chủ, không phải là khách.
Lukas Schulze

Câu trả lời:


10

Do cập nhật vzctl từ 4.6 thành 4.7, họ đã thay đổi cài đặt nf_conntrack bị tắt theo mặc định. ( https://openvz.org/Doad/vzctl/4.7/changes )

Thông báo cam kết tương ứng:

...

Vô hiệu hóa conntrack cho VE0 theo mặc định

Chức năng conntrack IP có một số tác động tiêu cực đến hiệu suất của venet (uo đến khoảng 10%), do đó chúng tốt hơn nên được tắt theo mặc định.

...

(Nguồn: http://git.openvz.org/?p=vzctl;a=commit;h=a191a462579ee )

Giải pháp:

Trong sự phụ thuộc của phân phối, nó nằm ở đâu đó trong thư mục / etc. Tìm nó:

$ sudo grep -R "tùy chọn nf_conntrack ip_conntrack_disable_ve0 = 1" /etc/modprobe.d/

và thay thế "1" bằng "0":

tùy chọn nf_conntrack ip_conntrack_disable_ve0 = 0

Khởi động lại hệ thống của bạn

(Nguồn: https://ormszilla.openvz.org/show_orms.cgi?id=2943#c5 )

Ngoài ra để khởi động lại:

rmmod iptable_nat
rmmod nf_nat
rmmod nf_conntrack_ipv4
rmmod nf_conntrack

Và bây giờ làm việc

Tất cả các nguồn:

Thay đổi cho vzctl 4.7: https://openvz.org/Doad/vzctl/4.7/changes

Báo cáo lỗi với giải pháp trong các bình luận: https://ormszilla.openvz.org/show_orms.cgi?id=2943

Báo cáo lỗi với mô tả giải pháp rút ngắn: https://ormszilla.openvz.org/show_orms.cgi?id=2755#c4

Cam kết GIT tương ứng: http://git.openvz.org/?p=vzctl;a=commit;h=a191a462579ee

Bài viết Wiki liên quan: https://openvz.org/NAT#IP_conntracks


4

Bạn nên siêu người dùng để chạy iptables. Do đó, chạy nó như 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
Tôi đã đăng nhập với tư cách người dùng root.
Lukas Schulze

1

Có vẻ như một cái gì đó thực sự là sai với các tập tin? Điều gì sẽ xảy ra nếu bạn cố gắng strace modprobe /lib/modules/2.6.32-042stab088.4/kernel/net/ipv4/netfilter/iptable_nat.ko? Hệ thống có thực sự trả về ENOENT (Không có tệp hoặc thư mục như vậy) không? Tôi không thể tưởng tượng điều này sẽ là nó, nhưng có lẽ SELinux đang làm hỏng tập tin? Và cuối cùng, có thể hệ thống tập tin / tập tin bị hỏng. md5sum nó với một phiên bản tốt được biết đến. Hoặc chỉ cần loại bỏ nó và sao chép một cái mới hoàn toàn. Hy vọng nó không phải là hệ thống tập tin.

Hãy thử điều này: /programming/3140478/firth-module-not-found-error-USE-modprobe


0

Tôi tìm thấy một giải pháp khác cho vấn đề này! Trên nút tôi không thể loại bỏ

rmmod iptable_nat
rmmod nf_nat
rmmod nf_conntrack_ipv4
rmmod nf_conntrack

trong Hướng dẫn chính thức, tôi tìm thấy:

vzctl đặt VZID --netfilter full --save --setmode restart

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.