เป้าหมายของฉันคือ จำกัด การเข้าถึงคอนเทนเนอร์ของนักเทียบท่าที่อยู่ IP สาธารณะเพียงไม่กี่แห่ง มีกระบวนการที่เรียบง่ายและทำซ้ำได้เพื่อบรรลุเป้าหมายของฉันหรือไม่ ทำความเข้าใจกับพื้นฐานของ iptables ในขณะที่ใช้ตัวเลือกเริ่มต้นของ Docker ฉันพบว่ามันยากมาก
ฉันต้องการเรียกใช้คอนเทนเนอร์ทำให้เห็นอินเทอร์เน็ตสาธารณะ แต่อนุญาตเฉพาะการเชื่อมต่อจากโฮสต์ที่เลือก ฉันคาดว่าจะตั้งค่านโยบายอินพุตเริ่มต้นของ REJECT แล้วอนุญาตเฉพาะการเชื่อมต่อจากโฮสต์ของฉัน แต่กฎและโซ่ NAT ของ Docker เข้ามาขวางและกฎ INPUT ของฉันจะถูกละเว้น
ใครบางคนสามารถเป็นตัวอย่างของวิธีการบรรลุเป้าหมายของฉันตามสมมติฐานดังต่อไปนี้?
- โฮสต์ IP สาธารณะ 80.80.80.80 บน eth0
- โฮสต์ IP ส่วนตัว 192.168.1.10 บน eth1
docker run -d -p 3306:3306 mysql
- บล็อกการเชื่อมต่อทั้งหมดไปยังโฮสต์ / คอนเทนเนอร์ 3306 ยกเว้นจากโฮสต์ 4.4.4.4 และ 8.8.8.8
ฉันยินดีที่จะผูกคอนเทนเนอร์กับที่อยู่ IP เฉพาะที่อยู่ในท้องที่ แต่ต้องการคำแนะนำเกี่ยวกับวิธีการตั้งค่ากฎการส่งต่อ iptables อย่างถูกต้องซึ่งอยู่รอดกระบวนการนักเทียบท่าและโฮสต์รีสตาร์ท
ขอบคุณ!
--ctdir
หรือไม่ ฉันใช้-m conntrack --ctstate NEW --ctorigdstport 3306 --ctdir ORIGINAL