ในแอปพลิเคชันอุปกรณ์ เราใช้การตั้งค่าเครือข่าย VLAN ต่อไปนี้:
ในอุปกรณ์ เรามีเครือข่ายภายในสำหรับอุปกรณ์ภายในและเครือข่ายภายนอกสำหรับลูกค้า/เครือข่ายลูกค้า อุปกรณ์ทั้งหมดเชื่อมต่อผ่านสวิตช์ที่มีการจัดการไปยังโมดูลประมวลผล raspberry pi ซึ่งแอปพลิเคชันทำงานอยู่
ในการตั้งค่าเราใช้ VLAN ต่อไปนี้
- VLAN 1: เครือข่ายภายนอก
- VLAN 2: เครือข่ายภายใน
โมดูลการคำนวณมีอินเทอร์เฟซ eth0 สองอินเทอร์เฟซ vlan eth0.1 (ภายนอก) และ eth0.2 (ภายใน) สิ่งนี้ทำขึ้นโดยที่ลูกค้าไม่เห็นอุปกรณ์เครือข่ายภายใน สวิตช์ที่มีการจัดการมีการกำหนดค่า VLAN ตามพอร์ต
สำหรับเครือข่ายภายใน โมดูลคำนวณใช้ eth0.2 พร้อมที่อยู่ IP แบบคงที่ 192.168.2.1 ซึ่งเป็นอุปกรณ์เครือข่ายภายในที่อยู่ในซับเน็ตเดียวกัน 192.168.2.x
สำหรับเครือข่ายภายนอก โมดูลการคำนวณใช้ eth0.1 พร้อมที่อยู่ IP แบบคงที่ 192.168.1.100
การกำหนดค่าของเราในโมดูลการคำนวณ:
/etc/sysctl.conf
net.ipv4.ip_forward = 1
/etc/network/interfaces
# อินเตอร์เฟสภายนอก VLAN
อัตโนมัติ eth0.1
คู่มือ iface eth0.1 inet
vlan-raw-อุปกรณ์ eth0
# อินเทอร์เฟซภายใน VLAN
อัตโนมัติ eth0.2
คู่มือ iface eth0.2 inet
vlan-raw-อุปกรณ์ eth0
/etc/dhcpcd.conf
อินเทอร์เฟซ eth0
ip_address แบบคงที่ =
เราเตอร์คงที่ =
คง domain_name_servers=
คง domain_search=
อินเทอร์เฟซ eth0.1
ip_address แบบคงที่ = 192.168.1.100/24
เราเตอร์คงที่ =
คง domain_name_servers=
คง domain_search=
อินเทอร์เฟซ eth0.2
ip_address แบบคงที่ = 192.168.2.1/24
เราเตอร์คงที่ =
คง domain_name_servers=
คง domain_search=
สำหรับการสื่อสารไปยังอุปกรณ์ภายใน 192.168.2.100 โดยตรงจากพีซีของลูกค้าผ่าน IP ภายนอก เราได้กำหนดกฎดังต่อไปนี้ ด้วยสิ่งนี้ ลูกค้าจะเข้าถึง 192.168.2.100:80 ภายในผ่านที่อยู่ IP ภายนอก 192.168.1.100:8080 บนพอร์ต 8080
sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
sudo iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 192.168.2.100:80
sudo iptables -t nat -A POSTROUTING -j MASQUERADE
โดยทั่วไปการตั้งค่านี้ใช้งานได้ แต่ไม่ใช่ในทุกกรณี: ลูกค้าสามารถเปลี่ยนที่อยู่ IP ภายนอกของ eth0.1 ลูกค้าสามารถกำหนดค่า ip ของ eth0.1 เป็นที่อยู่ ip แบบคงที่อื่นหรือ dhcp ในกรณีของที่อยู่ IP แบบคงที่ 192.168.2.x บน eth0.1 ลูกค้าจะไปถึง 192.168.2.1 ของ eth0.2
เป็นไปได้อย่างไรที่ลูกค้าจะไม่เข้าถึง IP ภายใน 192.168.2.1 หาก IP ภายนอกของ eth0.1 อยู่ในซับเน็ตเดียวกัน เป็นไปได้อย่างไรที่จะแยก eth0.1 และ eth0.2 หากอยู่ใน subnet เดียวกันหรือมี 192.168.2.1 ทั้งคู่
ตัวอย่างเช่น: หาก eth0.2 มีที่อยู่ IP เดียวกันเหมือนกับอุปกรณ์จากเครือข่ายภายใน การเชื่อมต่อกับโมดูลการคำนวณจะไม่สามารถทำได้ด้วยข้อขัดแย้งของ IP นี้