การเปลี่ยนแปลง IP ของฉันมีคลาส D ที่แตกต่างกันดังนั้นฉันต้องการตั้งค่าช่วง:
123.123.123.xxx โดยที่ส่วนสุดท้ายสามารถเป็น 0-255
ตอนนี้ Apache พูดว่า:
<RequireAny>
Require ip 127.0.0.1
Require ip ::1
</RequireAny>
การเปลี่ยนแปลง IP ของฉันมีคลาส D ที่แตกต่างกันดังนั้นฉันต้องการตั้งค่าช่วง:
123.123.123.xxx โดยที่ส่วนสุดท้ายสามารถเป็น 0-255
ตอนนี้ Apache พูดว่า:
<RequireAny>
Require ip 127.0.0.1
Require ip ::1
</RequireAny>
คำตอบ:
ประการแรกฉันจะสมมติว่าคุณหมายถึง Apache 2.4 แม้จะมีแท็ก "apache-2.2" เนื่องจากไวยากรณ์ที่คุณโพสต์มาจาก 2.4
จากเอกสาร Apache:
ip.addressเป็นที่อยู่ IP, ที่อยู่ IP บางส่วน, คู่เครือข่าย / netmask หรือสเปคเครือข่าย / nnn CIDR
ฉันถือว่าคุณหมายความว่าคุณต้องการอนุญาต a / 24 เนื่องจาก Class D เป็นที่อยู่มัลติคาสต์และระบบเครือข่ายที่ดีเยี่ยมนั้นเสียชีวิตใน 90 ปี เพื่อให้ / 24 คุณสามารถใช้สิ่งต่อไปนี้:
Require ip 123.123.123
Require ip 123.123.123.0/255.255.255.0
Require ip 123.123.123.0/24
โดยส่วนตัวแล้วฉันพบว่าคนสุดท้ายจะคลุมเครือน้อยกว่าคนแรกและอ่านง่ายกว่าคนที่สอง
คุณอาจพบเอกสารส่วนนี้มีประโยชน์: http://httpd.apache.org/docs/2.4/howto/access.html#host
Require
มีการสนับสนุนที่ จำกัด ใน Apache 2.2, Apache 2.2 ไม่สนับสนุนการอย่างใดอย่างหนึ่งหรือRequire ip
<RequireAny>
ดังที่ระบุไว้ในภาพรวมของคุณลักษณะใหม่ใน Apache HTTP Server 2.4 "อาจมีการระบุตรรกะการอนุญาตขั้นสูงโดยใช้Require
คำสั่งและคำสั่งคอนเทนเนอร์ที่เกี่ยวข้องเช่น<RequireAll>
" อดีตคือการปรับปรุงที่เพิ่มลงใน Apache 2.4
ใน Apache 2.2 และต่ำกว่าคุณสามารถทำงานกับ:
Order deny,allow
Deny from all
Allow from 24.18 # allow access from home
Allow from 162.12 # allow access from work
ใน. htacess ของคุณโดยตรงที่ระดับฐาน (ไม่อยู่ภายใน<directive>
)
ตั้งแต่ Apache 2.4 ขึ้นไปคุณจะไปที่:
<RequireAny>
#IPv4 range at my work
Require ip 207.100
#IPv4 range I usually get through my mobile provider
Require ip 29.11
#IPv6 from home
Require ip 2a02:4126:2aa4::/48
</RequireAny>
(ตัวเลขทั้งหมดไม่ต้องกังวล ;-)
ฉันใช้สิ่งนี้มาหลายปีแล้วเพื่อป้องกันโฟลเดอร์แบ็คเอนด์ของฉันจากผู้ใช้ที่มีศักยภาพ 99% (ทำงานได้ดีมากยกเว้นว่าคุณเป็น Blogger ตัวยงในขณะที่เดินทางหากคุณเป็นผู้ใช้ Gmail: "กิจกรรมในบัญชีครั้งสุดท้าย" ลิงก์ที่ด้านล่างสุดเป็นวิธีที่สะดวกสบายในการหา "ไอบี habbits" ของคุณเอง)
Require ip 2a02:4126:2aa4::/48
และRequire ip 2a02:4126:2aa4::
คืออะไร ทั้งคู่ไม่ได้สร้างข้อผิดพลาดทางไวยากรณ์สำหรับฉัน แต่มีเพียงผลงานก่อนหน้าเท่านั้น
สังเกตว่าคุณได้รับการยืนยันในขณะนี้ใช้ Apache 2.2 , Apache 2.2 ไม่สนับสนุนการอย่างใดอย่างหนึ่งหรือRequire ip
<RequireAny>
ดังที่ระบุไว้ในภาพรวมของคุณลักษณะใหม่ใน Apache HTTP Server 2.4 "อาจมีการระบุตรรกะการอนุญาตขั้นสูงโดยใช้Require
คำสั่งและคำสั่งคอนเทนเนอร์ที่เกี่ยวข้องเช่น<RequireAll>
" อดีตคือการปรับปรุงที่เพิ่มลงใน Apache 2.4
หากต้องการจัดการกับสิ่งนี้ใน Apache 2.2 คุณอาจต้องทำสิ่งต่อไปนี้:
Order allow,deny
Allow from 123.123.123
ซึ่งจะได้รับช่วงทั้งหมดที่ระบุ
หมายเหตุ: ฉันจะออกจากที่นี่เพราะคนอื่น ๆ อาจได้ประโยชน์จากมัน มันไม่ใช่คำตอบสำหรับคำถามโดยตรง
ตัวอย่างเช่น:
ต้องการ ip 192.168.100.0/22
ทำงานได้ในขณะที่
ต้องการ ip 192.168.100.0/22 #localnetwork
ล้มเหลว!
การรีสตาร์ทเอาต์พุต httpd:
งานสำหรับ httpd.service ล้มเหลวเนื่องจากกระบวนการควบคุมออกด้วยรหัสข้อผิดพลาด ดู "systemctl status httpd.service" และ "journalctl -xe" เพื่อดูรายละเอียด
ดังนั้นมันก็ดูเหมือนว่าไม่มีความคิดเห็นจะได้รับอนุญาตในบรรทัดที่
ของ Apache ต้องสั่งที่ใช้ในระหว่างขั้นตอนการอนุมัติเพื่อให้มั่นใจว่าผู้ใช้จะได้รับอนุญาตหรือปฏิเสธการเข้าถึงทรัพยากร mod_authz_host ขยายประเภทการอนุญาตด้วย ip, host, forward-dns และ local อาจมีการใช้ประเภทการอนุญาตอื่น ๆ ด้วย แต่อาจต้องโหลดโมดูลการอนุญาตเพิ่มเติม
ผู้ให้บริการการอนุญาตเหล่านี้มีผลต่อโฮสต์ที่สามารถเข้าถึงพื้นที่ของเซิร์ฟเวอร์ การเข้าถึงสามารถควบคุมได้โดยชื่อโฮสต์, ที่อยู่ IP หรือช่วงที่อยู่ IP
ตั้งแต่ v2.4.8 นิพจน์ได้รับการสนับสนุนภายในโฮสต์จำเป็นต้องมีคำสั่ง ต้องการไอพี
ผู้ให้บริการไอพีอนุญาตให้เข้าถึงเซิร์ฟเวอร์เพื่อควบคุมตามที่อยู่ IP ของไคลเอนต์ระยะไกล เมื่อต้องการระบุที่อยู่ ip ip คำขอจะได้รับอนุญาตให้เข้าถึงหากที่อยู่ IP ตรงกัน
ที่อยู่ IP แบบเต็ม:
Require ip 10.1.2.3
Require ip 192.168.1.104 192.168.1.205
ที่อยู่ IP ของโฮสต์ที่อนุญาตให้เข้าถึงได้
ที่อยู่ IP บางส่วน:
Require ip 10.1
Require ip 10 172.20 192.168.2
1 ถึง 3 ไบต์แรกของที่อยู่ IP สำหรับข้อ จำกัด ของเครือข่ายย่อย
คู่เครือข่าย / netmask:
Require ip 10.1.0.0/255.255.0.0
เครือข่าย abcd และ netmask wxyz สำหรับข้อ จำกัด subnet ที่ละเอียดยิ่งขึ้น
ข้อกำหนดเครือข่าย / nnn CIDR:
Require ip 10.1.0.0/16
คล้ายกับกรณีก่อนหน้านี้ยกเว้น netmask ประกอบด้วยลำดับสูง nnn 1 บิต
โปรดทราบว่าสามตัวอย่างด้านบนตรงกับชุดของโฮสต์เดียวกัน
ที่อยู่ IPv6 และเครือข่ายย่อย IPv6 สามารถระบุได้ดังแสดงด้านล่าง:
Require ip 2001:db8::a00:20ff:fea7:ccea
Require ip 2001:db8:1:1::a
Require ip 2001:db8:2:1::/64
Require ip 2001:db8:3::/48
หมายเหตุ: เนื่องจากมีการแยกวิเคราะห์ที่อยู่ IP เมื่อเริ่มทำงานนิพจน์จะไม่ถูกประเมินตามเวลาที่ร้องขอ
ที่มา: https://httpd.apache.org/docs/trunk/mod/mod_authz_host.html