ถ้าฉันจำไม่ผิด 'โฟลว์' สำหรับแพ็คเก็ตที่เข้ามาจะเป็น:
ฉันได้ทดสอบสิ่งนี้กับ EC2 บางกรณี: หนึ่งรายการสาธารณะและหนึ่งรายการส่วนตัว ทั้งเรียกใช้ apache ด้วยหน้าเว็บธรรมดา ตัวหนึ่งพูดว่า 'เกตเวย์' และอีกอันพูดว่า 'โหนด'
ก่อนที่จะเพิ่มกฎของตาราง IP ฉันสามารถม้วนหน้าเว็บธรรมดาและแสดงอย่างถูกต้องว่ามาจากอินสแตนซ์ 'เกตเวย์' ของฉัน ฉันทำสิ่งต่อไปนี้บนเกตเวย์:
echo 'net.ipv4.ip_forward = 1' | sudo ที /etc/sysctl.d/10-forwarding.conf
sudo sysctl -w net.ipv4.ip_forward=1
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 10.0.100.154
sudo iptables -A FORWARD -i eth0 -p tcp --dport 80 -j ยอมรับ
sudo iptables -t nat -A POSTROUTING -p tcp --dport 80 -j SNAT --to 10.0.0.160
สิ่งนี้ทำให้ฉันสามารถม้วน IP สาธารณะโดยที่ NAT ต้องการไปยัง VM ภายในเป้าหมายและส่งต่อ / NAT อย่างถูกต้องสำหรับการตอบกลับ ฉันได้ตั้งค่าซับเน็ตส่วนตัวโดยไม่มีการกำหนดเส้นทางภายนอก ดังนั้นหากไม่ได้กำหนดเส้นทางไปยังช่วงภายใน ก็จะไม่ไปไหน ได้ผลตามที่หวัง!
หากคุณมีหลายอินเทอร์เฟซ คุณควรจะล็อกดาวน์ได้ ซึ่งไปข้างหน้า
ปกครองได้ดีขึ้นเล็กน้อยด้วยการเพิ่ม -i eth0 -o wg0
กฎบางอย่างและ โพสต์
ปกครองด้วย -o wg0
.
ดังนั้นฉันคิดว่ากฎของคุณควรเป็น:
#Â dnat เพื่อกำหนดเป้าหมาย VPN VM
iptables -t nat -A PREROUTING -i eth0 -p tcp -m multiport --dports 80,443 -j DNAT --to-ปลายทาง $WIREGUARD_CLIENT_ADDRESS
# ส่งต่อระหว่างอินเตอร์เฟสสำหรับคอนใหม่
iptables -A FORWARD -i eth0 -o wg0 -p tcp -m multiport --dports 80,443 -m conntrack --ctstate NEW -j ยอมรับ
#Â อนุญาตการรับส่งข้อมูลที่เกี่ยวข้องกับการส่งต่อ - ไม่จำเป็นต้องใช้ -i/-o ทั้งสองชุดเนื่องจากเราสามารถอนุญาตที่เกี่ยวข้องได้
iptables -A FORWARD -m สถานะ ESTABLISHED, RELATED -j ACCEPT
#Â postrouting สำหรับ VPN
iptables -t nat -A POSTROUTING -o wg0 -p tcp -m หลายพอร์ต --dports 80,443 -j MASQUERADE