Score:1

iptables - เราจะใช้แหล่งที่มาของการกำหนดเส้นทางล่วงหน้าหลายแหล่งเพื่อบังคับการรับส่งข้อมูล DNS ผ่าน IP เฉพาะได้อย่างไร

ธง br

ฉันรู้ว่าคำถามนี้เคยถูกถามในอดีต แต่คำตอบที่ฉันยังไม่พบนั้นไม่ได้มีประโยชน์ทั้งหมดในกรณีการใช้งานเฉพาะกลุ่มนี้

ขณะนี้ฉันมีเราเตอร์หนึ่งตัวที่ใช้ DD-WRT บน 192.168.0.1 หนึ่งเราเตอร์เชื่อมต่อกับก่อนหน้านี้ด้วย IP 192.168.0.2 ซึ่งทำงานเป็นไคลเอนต์ VPN และ Raspberry Pi หนึ่งตัวตั้งค่าให้เรียกใช้ https://pi-hole.net DNS กรองบน ​​192.168.0.21

ท้ายที่สุดแล้ว เป้าหมายของฉันที่นี่คือบล็อกคำขอ DNS ทั้งหมดบนเครือข่ายของฉันจากอุปกรณ์ใด ๆ ไปยังเซิร์ฟเวอร์ DNS ใด ๆ ยกเว้นเราเตอร์ตัวที่สองและ Pihole ของฉัน และอนุญาตให้อุปกรณ์ทั้งสองนั้นสร้างคำขอ DNS ได้


บนเราเตอร์ของฉัน กฎไฟร์วอลล์ (iptables) ปัจจุบันของฉันมีดังนี้:

##### รักษาเครือข่ายบน pi-hole
iptables --table nat --insert PREROUTING --in-interface br0 --protocol tcp --source ! 192.168.0.2,192.168.0.21 -- พอร์ตปลายทาง 53 -- กระโดด DNAT -- ไปยังปลายทาง 192.168.0.21:53
iptables --table nat --insert PREROUTING --in-interface br0 --protocol udp --source ! 192.168.0.2,192.168.0.21 -- พอร์ตปลายทาง 53 -- กระโดด DNAT -- ไปยังปลายทาง 192.168.0.21:53
##### เจาะรู DNS สำหรับ 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 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

ตอนนี้ฉันเพิ่งคิดว่าทั้งหมดนี้ทำงานได้ดีและสวยงาม อย่างไรก็ตามฉันไม่เคยเข้าไปและ พยายาม เพื่อทดสอบกฎ เมื่อพยายามดำเนินการตามคำสั่ง ฉันพบว่ากฎข้อ 3 และ 4 ทำงานได้ดี อย่างไรก็ตาม กฎข้อที่ 1 และ 2 ไม่ได้:

root@ddwrt:~# iptables --table nat --insert PREROUTING --in-interface br0 --protocol tcp --source ! 192.168.0.2,192.168.0.21 --ปลายทางพอร์ต 53 --กระโดดยอมรับ
อาร์กิวเมนต์ไม่ถูกต้อง `192.168.0.2,192.168.0.21'

บาง วิจัย ทำให้ฉันคิดว่าบางที ! ควรไปก่อน --แหล่งที่มาดังนั้นฉันจึงลองทำดู ซึ่งอาจได้ผล ยกเว้นที่อยู่ IP ต้นทางหลายแห่งไม่ได้รับอนุญาตจาก iptables เวอร์ชันของฉัน:

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 ยอมรับ
iptables v1.8.5 (เดิม): ! ไม่อนุญาตให้ใช้กับที่อยู่ IP ต้นทางหรือปลายทางหลายรายการ

มากกว่า วิจัย ทำให้ฉันลองใช้ ipset เพื่อแก้ปัญหา:

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

ส่วนนั้นไปได้สวย อย่างไรก็ตาม เนื่องจากไม่เคยใช้ ipset มาก่อน จึงไม่สามารถทำงานได้ด้วยวิธีใดก็ตามที่ฉันพยายาม:

root@ddwrt:~# iptables --table nat --insert PREROUTING --in-interface br0 --protocol tcp ! --source --match-set "piholeAndVpnPassthrough" --destination-port 53 --jump DNAT --to-destination 192.168.0.21:53
อาร์กิวเมนต์ไม่ถูกต้อง `piholeAndVpnPassthrough'
ลอง `iptables -h' หรือ 'iptables --help' สำหรับข้อมูลเพิ่มเติม
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
อาร์กิวเมนต์ `set' ไม่ถูกต้อง
ลอง `iptables -h' หรือ 'iptables --help' สำหรับข้อมูลเพิ่มเติม
root@ddwrt:~# iptables --table nat --insert PREROUTING --in-interface br0 --protocol tcp -m set --match-set piholeAndVpnPassthrough ! --source --destination-port 53 --jump DNAT --to-destination 192.168.0.21:53
iptables v1.8.5 (เดิม): --match-set ต้องการสอง args
ลอง `iptables -h' หรือ 'iptables --help' สำหรับข้อมูลเพิ่มเติม
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 (เดิม): ไม่มีการตั้งค่า piholeAndVpnPasshthrough

ดังนั้นฉันจึงไม่รู้ว่าจะทำสิ่งนี้ให้สำเร็จได้อย่างไร เราจะใช้ที่อยู่ต้นทางที่ถูกปฏิเสธสองแห่งใน iptables ได้อย่างไร

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา