Điểm:1

iptables - làm cách nào để sử dụng nhiều nguồn định tuyến trước để buộc lưu lượng truy cập dns qua một IP cụ thể?

lá cờ br

Tôi biết câu hỏi này đã từng được hỏi trong quá khứ, nhưng những câu trả lời mà tôi chưa tìm thấy đều không quá hữu ích trong một trường hợp sử dụng thích hợp này.

Tôi hiện có một bộ định tuyến chạy DD-WRT trên 192.168.0.1, một bộ định tuyến được kết nối với bộ định tuyến trước đó bằng IP 192.168.0.2 chạy dưới dạng máy khách VPN và một Raspberry Pi được thiết lập để chạy https://pi-hole.net DNS lọc trên 192.168.0.21.

Cuối cùng, mục tiêu của tôi ở đây chỉ là chặn tất cả các yêu cầu DNS trên mạng của tôi từ bất kỳ thiết bị nào đến bất kỳ máy chủ DNS nào ngoại trừ bộ định tuyến thứ hai và lỗ hổng của tôi, đồng thời chỉ cho phép hai thiết bị đó thực hiện các yêu cầu DNS.


Trên bộ định tuyến của tôi, các quy tắc Tường lửa (iptables) hiện tại của tôi như sau:

#####Giữ mạng trên pi-hole
iptables --table nat --insert PREROUTING --in-interface br0 --protocol tcp --source ! 192.168.0.2,192.168.0.21 --destination-port 53 --jump DNAT --to-destination 192.168.0.21:53
iptables --table nat --insert PREROUTING --in-interface br0 --protocol udp --source ! 192.168.0.2,192.168.0.21 --destination-port 53 --jump DNAT --to-destination 192.168.0.21:53
#####Đục lỗ DNS cho lỗ pi
iptables --table nat --insert PREROUTING --in-interface br0 --protocol tcp --source 192.168.0.2,192.168.0.21 --destination-port 53 --jump ACCEPT
iptables --table nat --insert PREROUTING --in-interface br0 --protocol udp --source 192.168.0.2,192.168.0.21 --destination-port 53 --jump ACCEPT

Bây giờ, tôi vừa cho rằng tất cả đều hoạt động tốt và bảnh bao. Tuy nhiên, tôi chưa bao giờ thực sự đi vào và cố gắng để kiểm tra các quy tắc. Khi thử thực hiện các lệnh, tôi thấy rằng quy tắc 3 và 4 hoạt động tốt. Tuy nhiên, quy tắc 1 và 2 không:

root@ddwrt:~# iptables --table nat --insert PREROUTING --in-interface br0 --protocol tcp --source ! 192.168.0.2,192.168.0.21 --destination-port 53 --jump CHẤP NHẬN
Đối số sai `192.168.0.2,192.168.0.21'

Một số tìm kiếm khiến tôi nghĩ có lẽ ! nên đi trước --nguồn, vì vậy tôi đã thử cách đó, cách này có thể đã hoạt động, ngoại trừ nhiều địa chỉ IP nguồn không được phiên bản iptables của tôi cho phép:

root@ddwrt:~# iptables --table nat --insert PREROUTING --in-interface br0 --protocol tcp ! --source 192.168.0.2,192.168.0.21 --destination-port 53 --jump CHẤP NHẬN
iptables v1.8.5 (cũ): ! không được phép với nhiều địa chỉ IP nguồn hoặc đích

Hơn tìm kiếm khiến tôi cố gắng sử dụng ipset để giải quyết vấn đề:

root@ddwrt:~# ipset -N piholeAndVpnPassthrough iphash
root@ddwrt:~# ipset -A piholeAndVpnPassthrough 192.168.0.2
root@ddwrt:~# ipset -A piholeAndVpnPassthrough 192.168.0.21

Phần đó diễn ra tốt đẹp. Tuy nhiên, chưa bao giờ sử dụng ipset, tôi không thể làm cho nó hoạt động theo bất kỳ cách nào tôi đã thử:

root@ddwrt:~# iptables --table nat --insert PREROUTING --in-interface br0 --protocol tcp ! --source --match-set "piholeAndVpnPasshthrough" --destination-port 53 --jump DNAT --to-destination 192.168.0.21:53
Đối số không hợp lệ `piholeAndVpnPasshthrough'
Hãy thử `iptables -h' hoặc 'iptables --help' để biết thêm thông tin.
root@ddwrt:~# iptables --table nat --insert PREROUTING --in-interface br0 --protocol tcp ! --source -m set --match-set piholeAndVpnPasshthrough --destination-port 53 --jump DNAT --to-destination 192.168.0.21:53
Đối số không hợp lệ `set'
Hãy thử `iptables -h' hoặc 'iptables --help' để biết thêm thông tin.
root@ddwrt:~# iptables --table nat --insert PREROUTING --in-interface br0 --protocol tcp -m set --match-set piholeAndVpnPasshthrough ! --source --destination-port 53 --jump DNAT --to-destination 192.168.0.21:53
iptables v1.8.5 (cũ): --match-set yêu cầu hai đối số.
Hãy thử `iptables -h' hoặc 'iptables --help' để biết thêm thông tin.
root@ddwrt:~# iptables --table nat --insert PREROUTING --in-interface br0 --protocol tcp -m set --match-set piholeAndVpnPasshthrough src ! --source --destination-port 53 --jump DNAT --to-destination 192.168.0.21:53
iptables v1.8.5 (cũ): Đặt piholeAndVpnPasshthrough không tồn tại.

Vì vậy, tôi không biết làm thế nào để thực hiện điều này. Làm cách nào để sử dụng hai địa chỉ nguồn bị phủ định trong iptables?

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.