คำถามของฉันเป็นพื้นเดียวกับที่อนุญาตเฉพาะการจราจรขาออกบางอย่างในการเชื่อมต่อบางอย่าง
ฉันมีสองอินเตอร์เฟสeth1
(10.0.0.2) และwlan0
(192.168.0.2) eth1
เส้นทางเริ่มต้นของผมคือ สมมติว่าผมต้องการให้ทุก https wlan0
การจราจรที่จะไปผ่าน ตอนนี้ถ้าฉันใช้โซลูชันที่แนะนำในคำถามอื่นการรับส่งข้อมูลของ https จะผ่านwlan0
แต่จะยังคงมีแหล่งที่อยู่ของeth1
(10.0.0.2) เนื่องจากที่อยู่นี้ไม่สามารถกำหนดเส้นทางได้สำหรับwlan0
เกตเวย์คำตอบจะไม่กลับมา วิธีที่ง่ายคือการตั้งค่า bind-addr อย่างถูกต้องในแอปพลิเคชัน แต่ในกรณีนี้มันไม่สามารถใช้ได้
ฉันคิดว่าฉันต้องเขียน src-addr ใหม่:
# first mark it so that iproute can route it through wlan0
iptables -A OUTPUT -t mangle -o eth1 -p tcp --dport 443 -j MARK --set-mark 1
# now rewrite the src-addr
iptables -A POSTROUTING -t nat -o wlan0 -p tcp --dport 443 -j SNAT --to 192.168.0.2
ตอนนี้ tcpdump เห็นว่าแพ็กเก็ตที่ส่งออกมานั้นใช้ได้ดีและแพ็คเก็ตที่มีอินพุทมาถึง 192.168.0.2 แต่พวกเขาอาจไม่เคยลงเอยในแอปพลิเคชันเพราะสิ่งที่ฉันได้เห็นคือแอปพลิเคชันนั้นกำลังส่งแพ็กเก็ต SYN แม้ว่า ACK ได้รับแล้ว
ดังนั้นฉันคิดว่าฉันอาจต้องเขียนที่อยู่ขาเข้าใหม่ด้วย:
iptables -A PREROUTING -t nat -i wlan0 -p tcp --sport 443 -j DNAT --to 10.0.0.2
แต่นั่นก็ไม่ได้ผลเช่นกัน ดังนั้นฉันติดอยู่ที่นี่ ข้อเสนอแนะใด ๆ