ฉันจะต้องการช่วง IP แทนที่จะเป็น 1 IP ได้อย่างไร


20

การเปลี่ยนแปลง IP ของฉันมีคลาส D ที่แตกต่างกันดังนั้นฉันต้องการตั้งค่าช่วง:

123.123.123.xxx โดยที่ส่วนสุดท้ายสามารถเป็น 0-255

ตอนนี้ Apache พูดว่า:

<RequireAny>
   Require ip 127.0.0.1
   Require ip ::1
</RequireAny>

คำตอบ:


22

ประการแรกฉันจะสมมติว่าคุณหมายถึง 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


ดังนั้นสิ่งนี้จะไม่ทำงานกับ Apache 2.2 หรือ phpMyAdmin ทำงานได้กับทั้ง 2.2 และ 2.4 และฉันเพิ่งตรวจสอบเพื่อดูว่าเซิร์ฟเวอร์นี้ทำงานอยู่และเป็น 2.2
281497

เว้นแต่จะมีสิ่งที่ backported เพื่อเปิดใช้งานฉันไม่เคยเห็นไวยากรณ์นั้นในไฟล์กำหนดค่า 2.2
fukawi2

@ fukawi2 - ใช่คุณถูกต้องแน่นอน สำหรับ user281497: ในขณะที่Requireมีการสนับสนุนที่ จำกัด ใน Apache 2.2, Apache 2.2 ไม่สนับสนุนการอย่างใดอย่างหนึ่งหรือRequire ip <RequireAny>ดังที่ระบุไว้ในภาพรวมของคุณลักษณะใหม่ใน Apache HTTP Server 2.4 "อาจมีการระบุตรรกะการอนุญาตขั้นสูงโดยใช้Requireคำสั่งและคำสั่งคอนเทนเนอร์ที่เกี่ยวข้องเช่น<RequireAll>" อดีตคือการปรับปรุงที่เพิ่มลงใน Apache 2.4
เด็กหนุ่มที่

14

ใน 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::คืออะไร ทั้งคู่ไม่ได้สร้างข้อผิดพลาดทางไวยากรณ์สำหรับฉัน แต่มีเพียงผลงานก่อนหน้าเท่านั้น
Geremia

3
เป็นเพราะ 2a02: 4126: 2aa4 :: = 2a02: 4126: 2aa4: 0000: 0000: 0000: 0000: 0000 ในขณะที่ 2a02: 4126: 2aa4 :: / 48 ตรงกับที่อยู่ทั้งหมดที่ขึ้นต้นด้วย 2a02: 4126: 2aa4?
Geremia

1

สังเกตว่าคุณได้รับการยืนยันในขณะนี้ใช้ 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    

ซึ่งจะได้รับช่วงทั้งหมดที่ระบุ


1

หมายเหตุ: ฉันจะออกจากที่นี่เพราะคนอื่น ๆ อาจได้ประโยชน์จากมัน มันไม่ใช่คำตอบสำหรับคำถามโดยตรง

ตัวอย่างเช่น:

ต้องการ ip 192.168.100.0/22

ทำงานได้ในขณะที่

ต้องการ ip 192.168.100.0/22 ​​#localnetwork

ล้มเหลว!

การรีสตาร์ทเอาต์พุต httpd:

งานสำหรับ httpd.service ล้มเหลวเนื่องจากกระบวนการควบคุมออกด้วยรหัสข้อผิดพลาด ดู "systemctl status httpd.service" และ "journalctl -xe" เพื่อดูรายละเอียด

ดังนั้นมันก็ดูเหมือนว่าไม่มีความคิดเห็นจะได้รับอนุญาตในบรรทัดที่


1
ความคิดเห็นไม่ได้รับอนุญาตที่ใดก็ได้ภายในบรรทัดการกำหนดค่าดูhttpd.apache.org/docs/2.4/configuring.html : "เส้นที่เริ่มต้นด้วยอักขระแฮช" # "ถือว่าเป็นความคิดเห็นและจะถูกละเว้นความคิดเห็นอาจไม่รวมอยู่ใน บรรทัดเดียวกันกับคำสั่งกำหนดค่า "
Patrick Mevzek

0

ของ 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


5
กรุณาอย่าคัดลอกและวางงานของคนอื่น สิ่งนี้เรียกว่าการลอกเลียนแบบ
เจอรัลด์ชไนเดอร์
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.