thắc mắc Hỏi về iptables trong NAS

  • Người tạo chủ đề Người tạo chủ đề l372un
  • Ngày bắt đầu Ngày bắt đầu

l372un

Senior Member
Mình chạy postUp trên GUI của WGdashboard thì bị báo lỗi như thế này
Mã:
[#] iptables -t nat -I POSTROUTING 1 -s 10.0.0.1/24 -o eth0 -j MASQUERADE Warning: Extension MASQUERADE revision 0 not supported, missing kernel module? iptables v1.8.11 (nf_tables): Could not fetch rule set generation id: Invalid argument 
[#] resolvconf -d wg0 -f

Anh em xài trên promox thì chạy được ổn còn của mình lỗi liên quan tới cái này do đâu nhỉ

Có cách nào cho nó chạy bên trong docker không nhỉ>
 
Mình chạy postUp trên GUI của WGdashboard thì bị báo lỗi như thế này
Mã:
[#] iptables -t nat -I POSTROUTING 1 -s 10.0.0.1/24 -o eth0 -j MASQUERADE Warning: Extension MASQUERADE revision 0 not supported, missing kernel module? iptables v1.8.11 (nf_tables): Could not fetch rule set generation id: Invalid argument
[#] resolvconf -d wg0 -f

Anh em xài trên promox thì chạy được ổn còn của mình lỗi liên quan tới cái này do đâu nhỉ

Có cách nào cho nó chạy bên trong docker không nhỉ>
nó ghi rõ thế còn gì thím

Nó chuyển sang nftable rồi .

Thím copy nguyên cái lệnh đó, cho AI nó chỉ cho, nó viết lại sang nftable ,
FY7e6U1.png
 
Ở kernel thì dùng nftables, khi cài iptables thì nó chỉ là translate sang nftables thôi.

Đang dùng NAS OS nào thế? Tui sợ là bọn nó off MASQUERADE khi compiling Linux Kernel.

Hỏi AI: How to check if linux kernel has MASQUERADE.

Mã:
lsmod | grep nf_nat_masquerade
lsmod | grep iptable_nat
zcat /proc/config.gz | grep CONFIG_NF_NAT_MASQUERADE
grep CONFIG_NF_NAT_MASQUERADE /boot/config-$(uname -r)
 
Ở kernel thì dùng nftables, khi cài iptables thì nó chỉ là translate sang nftables thôi.

Đang dùng NAS OS nào thế? Tui sợ là bọn nó off MASQUERADE khi compiling Linux Kernel.

Hỏi AI: How to check if linux kernel has MASQUERADE.

Mã:
lsmod | grep nf_nat_masquerade
lsmod | grep iptable_nat
zcat /proc/config.gz | grep CONFIG_NF_NAT_MASQUERADE
grep CONFIG_NF_NAT_MASQUERADE /boot/config-$(uname -r)
Đang là DSM 7.3 synology real fen.
Nó chạy lệnh đó tren host bình thường (host chạy dạng wg-quick cái conf đó không báo lỗi gì).
Nhưng bên trong container gọi thì nó báo lỗi. Đang hỏi ông tác giả wgdashboard xem thừ đây.
Vì host thì dùng: iptables v1.8.3 (legacy).
Docker đang dùng: iptables v1.8.11 (nf_tables).
 
Ở kernel thì dùng nftables, khi cài iptables thì nó chỉ là translate sang nftables thôi.

Đang dùng NAS OS nào thế? Tui sợ là bọn nó off MASQUERADE khi compiling Linux Kernel.

Hỏi AI: How to check if linux kernel has MASQUERADE.

Mã:
lsmod | grep nf_nat_masquerade
lsmod | grep iptable_nat
zcat /proc/config.gz | grep CONFIG_NF_NAT_MASQUERADE
grep CONFIG_NF_NAT_MASQUERADE /boot/config-$(uname -r)
Lệnh đó trên host chạy bình thường thím. Chỉ postup hoặc postdown không chạy được từ bên trong docker.
Nghi là do docker dùng iptables_nft thôi
 
Lệnh đó trên host chạy bình thường thím. Chỉ postup hoặc postdown không chạy được từ bên trong docker.
Nghi là do docker dùng iptables_nft thôi
Thím.shell vào thẳng trong container rồi check nó chạy ver mấy.

Bí quá thì làm như thím trên nói. Lây dockerfile rồi mần cho đúng version
 
Thím.shell vào thẳng trong container rồi check nó chạy ver mấy.

Bí quá thì làm như thím trên nói. Lây dockerfile rồi mần cho đúng version
Đang là DSM 7.3 synology real fen.
Nó chạy lệnh đó tren host bình thường (host chạy dạng wg-quick cái conf đó không báo lỗi gì).
Nhưng bên trong container gọi thì nó báo lỗi. Đang hỏi ông tác giả wgdashboard xem thừ đây.
Vì host thì dùng: iptables v1.8.3 (legacy).
Docker đang dùng: iptables v1.8.11 (nf_tables).

Thím.shell vào thẳng trong container rồi check nó chạy ver mấy.

Bí quá thì làm như thím trên nói. Lây dockerfile rồi mần cho đúng version
Đây thím. 2 cái lệch nhau đây:
host thì dùng: iptables v1.8.3 (legacy).
Docker đang dùng: iptables v1.8.11 (nf_tables).
 
Ở kernel thì dùng nftables, khi cài iptables thì nó chỉ là translate sang nftables thôi.

Đang dùng NAS OS nào thế? Tui sợ là bọn nó off MASQUERADE khi compiling Linux Kernel.

Hỏi AI: How to check if linux kernel has MASQUERADE.

Mã:
lsmod | grep nf_nat_masquerade
lsmod | grep iptable_nat
zcat /proc/config.gz | grep CONFIG_NF_NAT_MASQUERADE
grep CONFIG_NF_NAT_MASQUERADE /boot/config-$(uname -r)
Chạy lệnh đó ngoài host được thím. Căn bản chạy bên trong docker thì báo lỗi do docker dùng iptables khác host.
 
Không được đâu, về cở bản DSM 7.3 dùng firewall tự làm dựa trên iptables ở tầng kernel, nhưng iptables trong docker chỉ là translate sang nftables (không có trong kernel của DSM 7.3).

Giải phải là lấy Dockerfile, chỉnh lại base sử dụng iptables legacy, ví dụ Debian 9, Alpine 3.18 trở về trước thay vì :latest. Để cài package sử dụng iptables legacy thay vì iptables nft (nftables backend). Rồi build lại.

Hoặc có thể giữ base mới cũng được, nhưng phải gỡ iptables-nft, thay bằng iptables-legacy, bạn phải biết gỡ rối dependency, khá phức tạp.

Có thể có giải pháp khác, nhưng bạn phải vào github bắn một cái issue hỏi tác giả thôi.
 
Không được đâu, về cở bản DSM 7.3 dùng firewall tự làm dựa trên iptables ở tầng kernel, nhưng iptables trong docker chỉ là translate sang nftables (không có trong kernel của DSM 7.3).

Giải phải là lấy Dockerfile, chỉnh lại base sử dụng iptables legacy, ví dụ Debian 9, Alpine 3.18 trở về trước thay vì :latest. Để cài package sử dụng iptables legacy thay vì iptables nft (nftables backend). Rồi build lại.

Hoặc có thể giữ base mới cũng được, nhưng phải gỡ iptables-nft, thay bằng iptables-legacy, bạn phải biết gỡ rối dependency, khá phức tạp.

Có thể có giải pháp khác, nhưng bạn phải vào github bắn một cái issue hỏi tác giả thôi.
Cảm ơn bác đã chỉ dẫn. Hôm qua cũng mò mẫm và nhờ thằng GPT nó cũng nói như bác. Nhưng nó nói vòng vo tam quốc quá. Đại loại nó đọc file Dockerfile rồi nó chỉ ra import python alphine mấy đó rồi nó bảo là do cái alphine đó hỗ trợ mỗi nft nên docker nó dùng luôn nft. Việc lệch pha này khiến docker không gọi được do sự khác biệt giữa kernel và docker.
Để có thời gian mò thử, nhưng do tác giả nói sẽ fix thử nên sẽ chờ thêm xem sao.

- Mình có bắn issue hỏi tác giả và ông ấy bảo là sẽ thử 1 bản dùng iptables (legacy) như kernel của DSM để chạy.
 
Không được đâu, về cở bản DSM 7.3 dùng firewall tự làm dựa trên iptables ở tầng kernel, nhưng iptables trong docker chỉ là translate sang nftables (không có trong kernel của DSM 7.3).

Giải phải là lấy Dockerfile, chỉnh lại base sử dụng iptables legacy, ví dụ Debian 9, Alpine 3.18 trở về trước thay vì :latest. Để cài package sử dụng iptables legacy thay vì iptables nft (nftables backend). Rồi build lại.

Hoặc có thể giữ base mới cũng được, nhưng phải gỡ iptables-nft, thay bằng iptables-legacy, bạn phải biết gỡ rối dependency, khá phức tạp.

Có thể có giải pháp khác, nhưng bạn phải vào github bắn một cái issue hỏi tác giả thôi.
Đã làm được rồi bác.
1. Cài thêm iptables bên trong docker (bước này ko rõ thừa hay không - có thể đã có sẵn trong docker rồi).
Mã:
apk add iptables-legacy
2. Ép docker chạy iptables legacy thay vì nft bằng lệnh:
Mã:
ln -sf /usr/sbin/iptables-legacy /usr/sbin/iptables

Xong xuôi chekc lại thấy version là iptable legacy. Giờ PostUp chạy bình thường cho lệnh
Mã:
iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o eth0 -j MASQUERADE
 

Thống kê chủ đề

Ngày tạo
l372un,
Người trả lời cuối
l372un,
Trả lời
12
Lượt xem
620
Quay lại
Lên đầu trang