Tại sao các quy tắc iptables biến mất khi khởi động lại hệ thống Debian của tôi?


48

Tôi thêm quy tắc này:

sudo iptables -t nat -A OUTPUT -d a.b.c.d -p tcp \
       --dport 1723 -j DNAT --to-destination a.b.c.d:10000
  1. Khi khởi động lại quy tắc máy tính sẽ bị xóa. Tại sao?
  2. Tôi có thể làm gì để khiến các quy tắc tồn tại?

Câu trả lời:


45

Không có tùy chọn trong iptables sẽ làm cho quy tắc của bạn vĩnh viễn. Nhưng bạn có thể sử dụng iptables-saveiptables-restoređể hoàn thành nhiệm vụ của bạn.

Đầu tiên thêm quy tắc iptable bằng lệnh bạn đã đưa ra.

Sau đó lưu quy tắc iptables vào một số tệp như /etc/iptables.confsử dụng lệnh sau:

$  iptables-save > /etc/iptables.conf

Thêm lệnh sau vào /etc/rc.localđể tải lại các quy tắc trong mỗi lần khởi động lại.

$  iptables-restore < /etc/iptables.conf

15
Trên Debian có iptables-persistentgói sẽ làm điều này.
bahamat

7
Ý tưởng khá tệ là đặt nó vào rc.localvì sẽ có một khoảng cách cửa sổ mở giữa bắt đầu dịch vụ và áp dụng chính sách tường lửa. Tôi thích sử dụng pre-up móc cho giao diện loopback trong /etc/network/interfacesđể khắc phục điều này.
poige

@poige: Tôi đồng ý 100%, rc.localcó thể có tác dụng như mong muốn, nhưng đó là một sự ngăn chặn trong tình huống này.
JM Becker

3
@bahamat: Cài đặt gói đó là giải pháp tốt nhất, Nó xứng đáng là câu trả lời của riêng nó.
JM Becker

1
@TechZilla: Xong.
bahamat

53

(Bởi vì nó được đề xuất để biến điều này thành một câu trả lời của riêng nó ...)

Trên cài đặt debian iptables-persistent.

Gói sẽ tự động tải /etc/iptables/rulescho bạn trong khi khởi động.

Bất cứ khi nào bạn sửa đổi các quy tắc của mình, hãy chạy /sbin/iptables-save > /etc/iptables/rulesđể lưu chúng. Bạn cũng có thể thêm nó vào trình tự tắt máy nếu muốn.


12
Có hai tệp quy tắc khác nhau: /etc/iptables/rules.v4/etc/iptables/rules.v6cho IPv4 và IPv6 tương ứng. Nếu bạn muốn một bảng áp dụng cho cả hai loại kết nối, bạn phải lưu nó vào cả hai tệp quy tắc.
PetaspeedBeaver

11
Đừng thêm nó vào chuỗi tắt máy của bạn! Nếu bạn thực hiện các quy tắc của mình trong quá trình thay đổi / thiết lập thì ít nhất một lần khởi động lại cũ tốt sẽ đưa mọi thứ trở lại trạng thái hoạt động trước đó.
VertigoRay

1

Sau khi cài đặt iptables-persistentở trên, bạn cũng có thể lưu quy tắc bằng lệnh ngắn hơn sau trên Ubuntu 16.04+: sudo netfilter-persistent save

Và chúng cũng có thể được khôi phục trở lại như lần trước bạn đã lưu chúng với: sudo netfilter-persistent reload

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.