Làm cách nào tôi có thể khiến dịch vụ iptables tự động khởi động sau khi khởi động lại trên CenOS / RHEL7?


8

Tôi đang gặp một vài vấn đề với máy chủ gia đình mới cài đặt. Tôi đã cài đặt CentOS7 trên đó và tôi thấy rằng cổng 80 và 443 bị tắt theo mặc định. Do đó tôi đã thêm chúng vào iptables bằng các lệnh sau:

iptables -I INPUT 5 -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -I INPUT 5 -i eth0 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
service iptables save

Tôi cũng đã cài đặt dịch vụ iptable không có mặt. Vấn đề là mỗi lần tôi khởi động lại máy, các cấu hình mới sẽ bị xóa.

Tôi đã cố gắng thêm dịch vụ iptable vào chkconfig nhưng tôi gặp lỗi sau:

[root@CentOS-7]# chkconfig --add iptables
error reading information on service iptables: No such file or directory

Tôi cho rằng lý do tôi gặp phải lỗi này là do không có tập lệnh iptable trong /etc/init.d/ tuy nhiên có bất kỳ ý tưởng nào nếu tôi thực sự làm đúng và / hoặc nếu có cách nào dễ dàng hơn để làm điều này? Nếu không làm thế nào tôi có thể giải quyết vấn đề này? Cuối cùng, tôi chỉ cần sử dụng máy chủ gia đình của mình như một máy chủ web / mail ...

Tôi cũng đã thử sử dụng lệnh 'systemctl enable iptables' như flemingovirus vui lòng đề xuất nhưng không thành công. Sau khi tôi nhập lệnh, tôi nhận được kết quả sau:

ln -s '/usr/lib/systemd/system/iptables.service' '/etc/systemd/system/basic.target.wants`/iptables.service'`

CẬP NHẬT: Tôi đã xem xét iptables và lệnh "dịch vụ lưu iptables" đã hoạt động đúng. Vấn đề dường như là do dịch vụ không bắt đầu khởi động lại. Tôi đã quản lý để có được dịch vụ chạy khi khởi động lại sau khi thêm dòng sau vào /etc/rc.local

systemctl start  iptables.service

tuy nhiên tôi tự hỏi tại sao lệnh 'systemctl enable iptables' không hoạt động trong trường hợp này. Tui bỏ lỡ điều gì vậy? Cảm ơn

Câu trả lời:


6

Mặc dù câu hỏi này đã cũ, tôi đã gặp vấn đề tương tự và phát hiện ra giải pháp ở đây .

systemctl mask firewalld
systemctl stop firewalld

Về cơ bản tường lửa xung đột iptables và do đó sẽ ngăn iptables tải:

# cat /usr/lib/systemd/system/firewalld.service 
[Unit]
Description=firewalld - dynamic firewall daemon
Before=network.target
Before=libvirtd.service
Before=NetworkManager.service
Conflicts=iptables.service ip6tables.service ebtables.service

...

Tôi đã có thể giải quyết điều này bằng cách che giấu tường lửa để đảm bảo nó không tự khởi động và sẽ không bao giờ được bắt đầu sau đó. Tất nhiên bạn sẽ cần đảm bảo iptables được bật:

systemctl enable iptables

4

init script đã biến mất. Bây giờ của nó systemctl. Nó hiện có trong tất cả các tài liệu CentOS7. Để chkconfig ipatables hoặc để bắt đầu dịch vụ iptables khi khởi động, bạn cần sử dụng điều này: -

systemctl cho phép iptables

Bạn nên kiểm tra những điều đơn giản cần biết về systemctl tại các tài liệu Cyberciti trên iptables .


Xin chào flemingovirus, tôi đã thử những gì bạn đã đề xuất và cũng đã xem liên kết nhưng nó vẫn không hoạt động. Có ý kiến ​​gì không? cảm ơn
Dave

@Dave bạn đã kiểm tra iptables ở đâu chưa? Là nó / sbin / iptables chính nó? Kiểm tra nó vớidpkg -L iptables
flemingovirus

[root @ CentOS-7} # rpm -ql iptables-services.x86_64 / etc / sysconfig / ip6tables / etc / sysconfig / iptables /usr/lib/systemd/system/ip6tables.service / usr / lib / systemd / system / ipt .service / usr / libexec / initscripts / legacy-hành động / ip6tables / usr / libexec / initscripts / legacy-hành động / ip6tables / panic / usr / libexec / initscripts / legacy-Action / ip6tables / save -ilities / iptables / usr / libexec / initscripts / legacy-hành động / iptables / panic / usr / libexec / initscripts / legacy-hành động / iptables / save / usr / libexec / iptables /usr/libexec/ /libexec/iptables/iptables.init
Dave

không có dpkg nên tôi đã sử dụng vòng / phút thay thế. đầu ra này có hợp lý không? cảm ơn
Dave

1
@ Lưu đầu ra của systemctl nói rằng nó đã được đặt để khởi động. Kiểm tra với một khởi động lại.
flemingovirus

0

Trước hết bạn nên thử #chkconfig --add /sbin/iptablesđiều này sẽ nhận ra "iptables". sau đó, bạn nên tạo một tập lệnh cho cấu hình iptables của mình và sau đó tạo đoạn mã đó để bắt đầu khởi động. tạo một kịch bản:

#!/bin/bash
#
iptables -I INPUT 5 -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -I INPUT 5 -i eth0 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
/sbin/service iptables save

và đặt tên cho nó chẳng hạn myfirewall. làm cho nó có thể thực thi được chmod +x myfirewallvà viết nó ./myfirewallvào /etc/rc.localđể bắt đầu tập lệnh khi khởi động.


cảm ơn nhưng tôi gặp lỗi sau: "lỗi đọc thông tin trên dịch vụ iptables: Không có tệp hoặc thư mục như vậy" Ngoài ra, với tôi nó có vẻ như là một cách thực sự phức tạp để làm điều này. Không có cách nào khác để thực hiện điều này trong CentOS. Cuối cùng, tôi chỉ cố gắng sử dụng nó như một máy chủ web / mail tiêu chuẩn. Làm thế nào một người có thể sử dụng máy chủ web nếu cổng 80 và 443 không được mở theo mặc định. Tôi có làm điều gì sai?
Dave

iptables được tích hợp sẵn trong Centos. Tôi nghĩ rằng bạn đã có một vấn đề trong cài đặt. hãy thử $sudo service iptables statusvà viết đầu ra trong bình luận.
amir jj
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.