อนุญาตการเข้าถึงจากเครือข่ายภายนอกด้วย dmz และ iptables


2

ฉันมีปัญหากับเครือข่ายในบ้านของฉัน ดังนั้นการตั้งค่าของฉันเป็นเช่นนี้:

ป้อนคำอธิบายรูปภาพที่นี่

ในเราเตอร์ของฉัน (โดยใช้ Ubuntu เดสก์ท็อป v11.04) ฉันติดตั้ง squid proxy เป็น proxy แบบโปร่งใสของฉัน

ดังนั้นฉันต้องการใช้ dyndns กับเครือข่ายในบ้านของฉันเพื่อให้ฉันสามารถเข้าถึงเซิร์ฟเวอร์ของฉันจากอินเทอร์เน็ตและฉันยังติดตั้งกล้องวงจรปิดและฉันต้องการเปิดใช้งานการดูจากอินเทอร์เน็ต

ปัญหาคือฉันไม่สามารถเข้าถึงได้จากนอกเน็ต
ฉันได้ตั้งค่า DMZ ในโมเด็มของฉันเป็น ip ของเราเตอร์แล้ว

เดาแรกของฉันเพราะฉันใช้ iptables เพื่อเปลี่ยนเส้นทางภายในเครือข่ายทั้งหมดเพื่อใช้ปลาหมึก
และไม่อนุญาตจากการรับส่งข้อมูลภายนอกไปยังเครือข่ายภายในของฉัน
นี่คือสคริปต์ iptables ของฉัน:

#!/bin/sh

# squid server IP
SQUID_SERVER="192.168.5.1"

# Interface connected to Internet
INTERNET="eth0"

# Interface connected to LAN
LAN_IN="eth1"

# Squid port
SQUID_PORT="3128"

# Clean old firewall
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
# Load IPTABLES modules for NAT and IP conntrack support
modprobe ip_conntrack
modprobe ip_conntrack_ftp
# For win xp ftp client
#modprobe ip_nat_ftp
echo 1 > /proc/sys/net/ipv4/ip_forward
# Setting default filter policy
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
# Unlimited access to loop back
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
# Allow UDP, DNS and Passive FTP
iptables -A INPUT -i $INTERNET -m state --state ESTABLISHED,RELATED -j ACCEPT
# set this system as a router for Rest of LAN
iptables --table nat --append POSTROUTING --out-interface $INTERNET -j MASQUERADE
iptables --append FORWARD --in-interface $LAN_IN -j ACCEPT
# unlimited access to LAN
iptables -A INPUT -i $LAN_IN -j ACCEPT
iptables -A OUTPUT -o $LAN_IN -j ACCEPT
# DNAT port 80 request comming from LAN systems to squid 3128 ($SQUID_PORT) aka     transparent proxy
iptables -t nat -A PREROUTING -i $LAN_IN -p tcp --dport 80 -j DNAT --to     $SQUID_SERVER:$SQUID_PORT
# if it is same system
iptables -t nat -A PREROUTING -i $INTERNET -p tcp --dport 80 -j REDIRECT --to-port     $SQUID_PORT
# DROP everything and Log it
iptables -A INPUT -j LOG
iptables -A INPUT -j DROP

หากคุณรู้ว่าฉันพลาดที่ไหนโปรดแนะนำฉัน
ขอบคุณสำหรับความช่วยเหลือของคุณและฉันซาบซึ้งจริงๆ


1
คุณใช้แผนภาพเครือข่ายของคุณเช่นนั้นอย่างไร
Gman Smith

คำตอบ:


-1

แค่ความเห็น แต่สำหรับฉันแล้วคุณจะส่งต่อพอร์ต 80 ไปยัง SQUID เท่านั้น:
iptables -t nat -A PREROUTING -i $LAN_IN -p tcp --dport 80 -j DNAT --to $SQUID_SERVER:$SQUID_PORT

ไม่ควรส่งต่อแพ็กเก็ตทั้งหมดไปที่ SQUID (โดยเฉพาะ DNS และพอร์ตที่กล้องใช้)


สวัสดีอเล็กซ์กล้องใช้พอร์ต 8899 ข้างกล้องวงจรปิดฉันยังไม่สามารถเข้าถึงเว็บเซิร์ฟเวอร์ apache ที่ติดตั้งในเราเตอร์ได้เช่นกัน

คุณลองเพิ่มกฎ "iptables -t nat -A prerouting -i $ LAN_IN -p tcp - พอร์ต 8899 -j DNAT - เป็น $ SQUID_SERVER: $ SQUID_PORT" แล้วบันทึก / เริ่มต้น iptables ใหม่และดูว่าคุณสามารถ เข้าถึงจากภายนอกหรือไม่ เพื่อความปลอดภัยคุณสามารถใช้ UDP (โดยปกติข้อมูลวิดีโอจะไปที่การรับส่งข้อมูล UDP) ดังนั้น rulel อื่นอาจเป็น "iptables -t nat -A การเตรียมการ - i $ LAN_IN -p udp - พอร์ต 8889 -j DNAT - ถึง $ SQUID_SERVER: $ SQUID_PORT "

หากคุณไม่สามารถเข้าถึง apache บนเราเตอร์ซึ่งหมายความว่าเราเตอร์นั้นไม่ได้อยู่ใน DMZ และต้องตรวจสอบปัญหาในโมเด็ม adsl หรือในไฟร์วอลล์ของเราเตอร์ ฉันหวังว่านี่จะช่วยได้ .

อืม ... ใช่ฉันไม่สามารถ ping หรือเข้าถึง apache จากภายนอก ฉันจะตรวจสอบโมเด็มและอัปเดตที่นี่ แต่คุณคิดว่าถ้า dmz ทำงานได้ดีฉันยังต้องข้ามพอร์ต 8899 ไปที่ปลาหมึกเช่นกัน?
Ivan

สวัสดี Ivan ฉันคิดว่าคุณควรอัปเดตกฎสำหรับปลาหมึกเพราะคุณไม่ได้พยายามเชื่อมต่อกับเราเตอร์ (ซึ่งจะเป็น DMZ) แต่ไปยังโฮสต์ที่อยู่ด้านหลัง (ซึ่งจะใช้กฎจากไฟร์วอลล์ / SQUID ).
Alex H
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.