วิธีลงทะเบียนเส้นทางสำหรับเราเตอร์ freebsd ด้วยตนเอง การตั้งค่าเราเตอร์ที่ใช้ FreeBSD

13.04.2022

เราเตอร์ Wi-Fi พร้อมเซิร์ฟเวอร์ DHCP และ DNS FreeBSD 8.2

สิ่งที่เราต้องการได้รับ:
- เพื่อให้ไคลเอนต์ Wi-Fi อยู่บนเครือข่ายย่อยเดียวกันกับเครือข่ายแบบมีสาย
- เพื่อให้ไคลเอนต์แบบมีสายและไร้สายได้รับที่อยู่โดยอัตโนมัติผ่าน DHCP
- มีแคช DNS
- แน่นอนว่าเราอยากให้ทุกคนออนไลน์
- เพื่อเข้าถึงผ่าน RDP ไปยังเซิร์ฟเวอร์ภายใน

โดยทั่วไปเราต้องการฟังก์ชันการทำงานที่คล้ายคลึงกับเราเตอร์ Dlink DIR-300

เรามีอะไร:
Celeron 700, RAM 256 MB, สกรู IDE 80 GB และมาเธอร์บอร์ดแปลก ๆ ที่ใช้งานได้อย่างมีสติเมื่อปิดการใช้งาน ACPI เท่านั้น
การ์ดเครือข่าย:

LAN - rl0 (10\100 realtek บางชนิดพบอยู่หลังตู้เสื้อผ้าในที่ทำงาน) rl0@pci0: 1 :8 :0 :class=0x020000 การ์ด=ชิป 0x813910ec=0x813910ec rev=0x10 hdr=0x00 ผู้จำหน่าย = อุปกรณ์ "Realtek Semiconductor" = Realtek RTL8139 Family PCI FastEthernet NIC RTL- 8139 /8139C/8139D class = คลาสย่อยเครือข่าย = อีเธอร์เน็ต WAN - stge0 (อะแดปเตอร์ asus 10\100\1000) stge0@pci0: 1 :5 :0 :class=0x020000card=0x81801043chip=0x102313f0 rev=0x41 hdr=0x00 vendor = อุปกรณ์ "Sundance Technology Inc" = "IC Plus IP1000 Family Gigabit Ethernet Adapter" class = คลาสย่อยเครือข่าย = อีเธอร์เน็ต WLAN - ral0 (การ์ด Wi-Fi ราคาถูกจาก Dlink) ral0@pci0: 1 :10 :0 :class=0x028000card=0x3a711186chip=0x03021814 rev=0x00 hdr=0x00 ผู้ขาย = "Ralink Technology, Corp." อุปกรณ์ = "ไร้สาย a/b (RT2525 2 ตัวรับส่งสัญญาณ .4GHz + RT2560 MAC/BBP)" คลาส = เครือข่าย

ที่อยู่ IP สีขาวที่ผู้ให้บริการให้มา:
ไอพี 9.9.9.9
หน้ากาก 255.255.255.0
เกตเวย์ 9.9.9.1
DNS1 9.9.9.254
DNS1 9.9.9.253
การตั้งค่าแตกต่างจากที่มีอยู่จริง แต่ไม่ได้เปลี่ยนสาระสำคัญ

ช่วง LAN: 192.168.0.0 พร้อมมาสก์ 255.255.255.0

ติดตั้งระบบปฏิบัติการ FreeBSD 8.2 แล้ว:

# uname - ประตู FreeBSD 8 .2 - ปล่อย FreeBSD 8 .2 -ปล่อย #0:วันเสาร์ที่ 9 เมษายน 20:13:28 OMSST 2011 root@GATE:/usr/src/sys/i386/คอมไพล์/GATE i386

เนื้อหาของ /etc/rc.conf:

9 .9 .9 .1 9 .9 .9 .9 เน็ตมาสก์ 255 .255 .255 .0 " ifconfig_rl0="inet 192 .168 .0 .1 เน็ตมาสก์ 255 .255 .255 .0 "

เนื้อหาของ /etc/resolv.conf (เซิร์ฟเวอร์ DNS):

เนมเซิร์ฟเวอร์ 9 .9 .9 .254 เนมเซิร์ฟเวอร์ 9 .9 .9 .253

มาเริ่มเตรียมตัวกันเลย:

เราลบไดรเวอร์ที่ไม่จำเป็นทั้งหมดออกจากเคอร์เนล (หรือไม่ลบออก ขึ้นอยู่กับความสะดวก) ในขณะที่ปล่อยไดรเวอร์ทั้งหมดสำหรับอุปกรณ์ไร้สาย หากคุณรู้ว่าไดรเวอร์ตัวใดที่เหมาะกับการ์ดของคุณ ก็ปล่อยมันไว้ และคุณสามารถลบไดรเวอร์ที่เหลือออกได้ ฉันไม่รู้ว่าอันไหนจะเหมาะกับฉัน ดังนั้นฉันจึงทิ้งทุกอย่างไว้ เราสร้างเคอร์เนลใหม่พร้อมตัวเลือก:

อุปกรณ์ if_bridge # โมดูลสำหรับการทำงานของสะพานเครือข่ายอุปกรณ์ # รองรับ 802.11 (ไวไฟ) # ฉันไม่รู้ว่ามันคืออะไร มันโหลดอัตโนมัติอุปกรณ์ wlan_amrr # AMRR อัลกอริธึมควบคุมอัตราการส่งอุปกรณ์ wlan_xauth # โมดูลสนับสนุนการอนุญาตสำหรับโหมดจุดเข้าใช้งานอุปกรณ์ wlan_wep # โมดูลสนับสนุนอัลกอริทึมความปลอดภัย WEPอุปกรณ์ wlan_tkip # โมดูลสนับสนุนการเข้ารหัส TKIPอุปกรณ์ wlan_ccmp # โมดูลสนับสนุนการเข้ารหัส CCMPอุปกรณ์ pf # ฉันใช้ Packet Filter เป็นไฟร์วอลล์ # รองรับอัลกอริธึมการเข้าคิว (การจัดลำดับความสำคัญของการรับส่งข้อมูล)ตัวเลือก ALTQ ตัวเลือก ALTQ_CBQ # คลาสฐานคิว (CBQ) ตัวเลือก ALTQ_RED # การตรวจจับล่วงหน้าแบบสุ่ม (สีแดง)ตัวเลือก ALTQ_RIO # สีแดง เข้า/ออก ตัวเลือก ALTQ_HFSC # ตัวกำหนดเวลาแพ็คเก็ตแบบลำดับชั้น (HFSC)ตัวเลือก ALTQ_PRIQ # การจัดลำดับความสำคัญ (PRIQ) # เนื่องจากฉันมีโปรเซสเซอร์แบบ single-core ฉันจึงไม่ต้องการการรองรับหลายคอร์ #options ALTQ_NOPCC # จำเป็นสำหรับการสร้าง SMP

รวบรวมและติดตั้งเคอร์เนล:

#ซีดี/usr/src # สร้างเคอร์เนล KERNCONF=GATE && \ทำการติดตั้งเคอร์เนล KERNCONF=GATE

รีบูตและดูว่าเกิดอะไรขึ้น:

8843 mtu 1500 ตัวเลือก=8209b อีเทอร์ 01 :01 :01 :01 :01 :01 ไอเน็ต 9 .9 .9 .9 9 .9 .9 .255 8802 เมตริก 0 mtu 1500 ตัวเลือก = 3808 อีเทอร์ 00 :50 :fc :ef:4d: 75 ไอเน็ต 192 .168 .0 .1 netmask 0xffffff00 ออกอากาศ 192 .168 .0 .255 สื่อ : เลือกอีเธอร์เน็ตอัตโนมัติ (100baseTX 8802 เมตริก 0 mtu 2290 อีเทอร์ 00 :26 :5a: 77 :38 :ba สื่อ : IEEE 802 .11 สถานะการเลือกอัตโนมัติของอีเทอร์เน็ตไร้สาย (เลือกอัตโนมัติ): ไม่มีผู้ให้บริการ lo0: flags = 8049 mtu 16384 ตัวเลือก = 3 ไอเน็ต 127 .0 .0 .1 เน็ตมาสก์ 0xff000000

การ์ด Wi-Fi ถูกระบุเป็น ral0 ดีอยู่แล้ว. คุณสามารถสร้างเคอร์เนลใหม่อีกครั้งและลบไดรเวอร์ไร้สายที่ไม่จำเป็นออก

แก้ไข /etc/hostapd.conf เป็นสถานะนี้:

แก้ไข /etc/rc.conf:

keymap = "ru.koi8-r" ชื่อโฮสต์ = "GATE" gateway_enable = "ใช่" defaultrouter = " 9 .9 .9 .1 " sshd_enable="ใช่" ifconfig_stge0="inet 9 .9 .9 .9 เน็ตมาสก์ 255 .255 .255 .0 " # กำหนดค่าการ์ดไร้สายเป็นจุดเข้าใช้งาน wlans_ral0="wlan0" create_args_wlan0="wlanmode hostap" ifconfig_wlan0="up mediaopt โฮสต์" # ลบที่อยู่ IP ออกจากอินเทอร์เฟซ rl0 #ifconfig_rl0="inet 192.168.0.1 เน็ตมาสก์ 255.255.255.0" # สร้างสะพานเชื่อมระหว่างเครือข่ายท้องถิ่นแบบไร้สายและแบบมีสาย # และกำหนดที่อยู่ IP ของเกตเวย์เครือข่ายท้องถิ่นให้กับมัน cloned_interfaces = "bridge0" ifconfig_bridge0 = "inet 192 .168 .0 .1 เน็ตมาสก์ 255 .255 .255 .0 \ addm wlan0 addm rl0 ขึ้น" ifconfig_rl0="up" # เปิดใช้งานฟังก์ชันจุดเข้าใช้งาน hostapd_enable="ใช่"

มารีบูตกันเถอะ มาดูกันว่าเกิดอะไรขึ้น:

# ifconfig stge0: แฟล็ก = 8843 mtu 1500 ตัวเลือก=8209b อีเทอร์ 01 :01 :01 :01 :01 :01 ไอเน็ต 9 .9 .9 .9 netmask 0xffffff00 ออกอากาศ 9 .9 .9 .255 สื่อ : เลือกอีเธอร์เน็ตอัตโนมัติ (100baseTX ) สถานะ : ใช้งานอยู่ rl0: flags = 8943 mtu 1500 ตัวเลือก = 3808 อีเทอร์ 00 :50 :fc :ef:4d: 75 สื่อ : เลือกอีเธอร์เน็ตอัตโนมัติ (100baseTX ) สถานะ : ใช้งานอยู่ ral0: flags = 8843 เมตริก 0 mtu 2290 อีเทอร์ 00 :26 :5a: 77 :38 :ba สื่อ : IEEE 802 .11 สถานะ : กำลังรัน lo0: flags = 8049 เมตริก 0 mtu 16384 ตัวเลือก = 3 ไอเน็ต 127 .0 .0 .1 netmask 0xff000000 bridge0:flags = 8843 mtu 1500 อีเธอร์ a6: 09 :เอ็ด :c1: 23 :38 ไอเน็ต 192 .168 .0 .1 netmask 0xffffff00 ออกอากาศ 192 .168 .0 .255 รหัส 00 :00 :00 :00 :00 :00 ลำดับความสำคัญ 32768 สวัสดีเวลา 2 ล่าช้า 15 สูงสุด 20 ถือครอง 6 โปรโต rstp maxaddr 100 หมดเวลา 1200 รหัสรูท 00 :00 :00 :00 :00 :00 ลำดับความสำคัญ 32768 ถ้าต้นทุน 0 ท่าเรือ 0 สมาชิก: rl0 ธง = 143 ifmaxaddr 0 ท่าเรือ 2 ลำดับความสำคัญ 128 ต้นทุนเส้นทาง 200000 สมาชิก: ธง wlan0 = 143 ifmaxaddr 0 ท่าเรือ 6 ลำดับความสำคัญ 128 ต้นทุนเส้นทาง 370370 wlan0:ธง= 8943 mtu 1500 อีเทอร์ 00 :26 :5a: 77 :38 :ba สื่อ : IEEE 802 .11 โหมดเลือกอัตโนมัติอีเธอร์เน็ตไร้สาย 11g สถานะ : กำลังรัน ssid ช่อง 1 (2412 MHz 11g) bssid 00 :26 :5a: 77 :38 :ba ประเทศสหรัฐอเมริกา authmode WPA2/ 802 .11i ความเป็นส่วนตัวแบบผสม deftxkey 2 AES-CCM 2 :128 - บิต AES-CCM 3 :128 - บิต txpower 0 อื้อฉาว 60 โปรโหมด CTS ช่วงเวลา 1 -dfs

ทุกอย่างเรียบร้อยดี การ์ด Wi-Fi และแบบมีสายเชื่อมต่อกันด้วยบริดจ์ และที่อยู่ IP ค้างอยู่บนบริดจ์นี้

มาเริ่มตั้งค่า PF กัน PF อนุญาตให้คุณเปิดใช้งานการจัดลำดับความสำคัญการรับส่งข้อมูล คำอธิบายสั้น ๆ สามารถพบได้ที่นี่:
http://www.freebsd.org/doc/ru/books/handbook/firewalls-pf.html
สร้างไฟล์ /usr/local/etc/pf.conf และนำมาสู่สถานะนี้:

# ที่นี่ฉันกำหนดตัวแปรที่สะดวกกว่าสำหรับฉันในการเขียนสคริปต์ WAN = "stge0" LAN = "สะพาน 0" LAN_POOL = " 192 .168 .0 .0 /24 "วานิป=" 9 .9 .9 .9 "เซิร์ฟเวอร์=" 192 .168 .0 .3 "ผู้ดูแลระบบ=" 192 .168 .0 .2 "RDP_PORT=" 3389 "EXTRDP_PORT=" 33389 " # การรับส่งข้อมูลเข้าและออกจากพอร์ตเหล่านี้จะถูกปฏิเสธบนอินเทอร์เฟซภายนอก DROP_PORTS="(135: 139 ,445}" # จะทำอย่างไรหลังจากแพ็กเก็ตเข้าสู่กฎการบล็อก (บล็อก) # ตั้งค่า block-policy drop - วางแพ็กเก็ตและไม่ทำอะไรเลย # ตั้งค่าการปฏิเสธนโยบายบล็อก - ละทิ้งแพ็กเก็ตและส่งข้อความแสดงข้อผิดพลาด #ถึงเจ้าภาพที่ส่งมาตั้งค่าการดร็อปนโยบายการบล็อก # อย่าตรวจสอบการจราจรบน lo0ตั้งค่าข้ามไปที่ lo0 # อย่าตรวจสอบการรับส่งข้อมูลบนอินเทอร์เฟซ Bridge0 (เราไม่มีข้อ จำกัด ภายใน)ตั้งค่าการข้ามบน $LAN # "การทำให้เป็นมาตรฐาน" ของแพ็กเก็ต ในความคิดของฉันคำอธิบายของตัวเลือกนี้ก็เพียงพอแล้ว # มีความคลุมเครือ แต่หวังว่าจะช่วยต่อต้านการโจมตีเครือข่ายบางประเภทได้ขัดทั้งหมด #ความเร็วของฉันคือ ~5,000 kbps และคุณต้องป้อนความเร็วที่นี่ altq บน $WAN priq แบนด์วิดธ์คิว 5,000Kb ( priv, อื่น ๆ ) #มี2คิวครับ # สำหรับการรับส่งข้อมูลที่มีลำดับความสำคัญสูงกว่า (RDP จากเซิร์ฟเวอร์)คิวส่วนตัว qlimit 25 ลำดับความสำคัญ 14 ราคา (สีแดง) #เพื่อทุกคนเข้าคิว qlimit อื่น ๆ 30 ลำดับความสำคัญ 10 ราคา (ค่าเริ่มต้น) # ขนาดคิวถูกถ่ายจากเพดานใครๆก็บอกว่า: (ไม่เหมือนกัน #โปรดโฟกัสไปที่พวกเขาหน่อย ลองเลือกขนาดคิวด้วยตัวเอง # เปิดใช้งาน NAT บนอินเทอร์เฟซภายนอกสำหรับเครือข่าย LAN nat บน $WAN จาก $LAN_POOL ไปยัง any -> ($WAN ) # ส่งต่อพอร์ตไปยังเซิร์ฟเวอร์ ส่งต่อพอร์ตที่แตกต่างจากพอร์ตมาตรฐาน # เพื่อป้องกันลิงกำลังสแกนพอร์ตมาตรฐาน rdr บน $WAN proto tcp จากใดก็ได้ถึง $WANIP \ port $EXTRDP_PORT -> $SERVER พอร์ต $RDP_PORT # เราตัดคำขอ ping ไปยังที่อยู่ของเราบล็อกอย่างรวดเร็วบน $WAN proto icmp จากใดก็ได้ถึง $WANIP icmp-type 8 # ไม่ควรมีการรับส่งข้อมูลจาก NETBIOS บนอินเทอร์เฟซภายนอกบล็อกอย่างรวดเร็วบน $WAN proto ( tcp udp ) จากพอร์ตใด ๆ ไปยังพอร์ตใด ๆ $DROP_PORTS # เปิดใช้งานการป้องกันการปลอมแปลงบนอินเทอร์เฟซ WAN # ฉันพูด http://openbsd.corebsd.or.id/faq/pf/ru/filter.html: # ที่อยู่จะถูกปลอมแปลงเมื่อผู้โจมตีปลอมแปลงต้นฉบับ # ที่อยู่ IP ในแพ็กเก็ต พวกมันจะถูกส่งเป็นเชลล์ของที่อยู่จริง # หรือปลอมตัวเป็นโหนดอื่นบนเครือข่ายหลังจากที่ผู้ใช้ถูกปลอมแปลง # พวกเขาจะสามารถโจมตีเครือข่ายได้โดยไม่ต้องเปิดเผยแหล่งที่มาที่แท้จริง # โจมตีหรือพยายามเข้าถึงบริการเครือข่ายนั้น # จำกัด เฉพาะที่อยู่ IP บางแห่งป้องกันการปลอมแปลงอย่างรวดเร็วสำหรับ $WAN #Ban การรับส่งข้อมูลที่ไม่ได้รับอนุญาตอย่างชัดเจนทั้งหมดบล็อกทั้งหมด # ### การจราจรขาเข้า #สิทธิพิเศษจราจรส่งผ่านอย่างรวดเร็วบน $WAN proto tcp จากใด ๆ ไปยังพอร์ต $WANIP $EXTRDP_PORT คิว priv # การรับส่งข้อมูลปกติส่งผ่านอย่างรวดเร็วบน $WAN จากใด ๆ ไปยัง $WANIP รักษาสถานะคิวอื่น ๆ # จริงๆ แล้ว การจัดลำดับความสำคัญใน PF ใช้ไม่ได้กับปริมาณข้อมูลขาเข้า แต่ฉันมีกฎอยู่ #ยังเขียนอยู่เลย # ### การจราจรขาออก #สิทธิพิเศษจราจรส่งผ่านอย่างรวดเร็วบน $WAN proto tcp จาก $WANIP \ port $EXTRDP_PORT ไปยังคิวเก็บสถานะ priv # การรับส่งข้อมูลปกติส่งผ่านอย่างรวดเร็วบน $WAN จาก $WANIP ไปยังคิวเก็บสถานะอื่น ๆ
pf_enable="ใช่" pf_rules="/usr/local/etc/pf.conf"

และรีสตาร์ท pf:

# /etc/rc.d/pf รีสตาร์ท

เราตรวจสอบความถูกต้องของการสร้างกฎโดยใช้คำสั่ง:

pfctl -snกฎ NAT ที่มีอยู่
pfctl -srกฎการออกอากาศที่มีอยู่
pfctl -ssการเชื่อมต่อที่จัดตั้งขึ้น
pfctl -siเคาน์เตอร์ต่างๆ
pfctl -saทั้งหมดที่กล่าวมาข้างต้นในคราวเดียว
pfctl -sq -vvvแสดงสถานะของคิว

เราอัปเดตพอร์ตโดยใช้ portsnap:

# การดึงข้อมูลพอร์ตสแนป กำลังค้นหามิเรอร์ของ portsnap.FreeBSD.org... 5 พบกระจก กำลังดึงแท็กสแน็ปช็อตจาก portsnap5.FreeBSD.org... เสร็จแล้ว กำลังเรียกข้อมูลเมตาของสแนปชอต... เสร็จสิ้น อัพเดทตั้งแต่วันพุธ มิ.ย 15 14 :21 :31 กระทรวงสาธารณสุข 2011 ถึงพฤ.ก.ค 21 11 :37 :27 กระทรวงสาธารณสุข 2011 - กำลังดึงข้อมูล 3 แพทช์ข้อมูลเมตา .. เสร็จแล้ว กำลังใช้แพตช์ข้อมูลเมตา... เสร็จสิ้น กำลังดึงข้อมูล 3 ไฟล์ข้อมูลเมตา... เสร็จแล้ว กำลังดึงข้อมูล 9656 แพทช์..... 10 .... <Часть вывода удалена> ...........9650 ...เสร็จแล้ว. กำลังติดแพตช์...เรียบร้อยแล้ว กำลังดึงข้อมูล 1282 พอร์ตหรือไฟล์ใหม่...เสร็จแล้ว # การแยกพอร์ตสแน็ป /usr/ports/.cvsignore /usr/ports/CHANGES .................<Часть вывода удалена>............. /usr/ports/x11/yelp/ /usr/ports/x11/zenity/ สร้างไฟล์ INDEX ใหม่... เสร็จแล้ว

เราใช้ dnscache จากแพ็คเกจ djbdns เป็นเซิร์ฟเวอร์ DNS สำหรับแคช เนื่องจากใช้หน่วยความจำน้อยกว่าและถือว่ามีความปลอดภัยมากกว่าเซิร์ฟเวอร์ BIND DNS ที่รวมอยู่ใน FreeBSD

ติดตั้ง djbdns:

# cd /usr/ports/dns/djbdns && ทำให้การติดตั้งสะอาด

เราประกอบและติดตั้งด้วยตัวเลือกต่อไปนี้:

แคชถาวร DUMPCACHE สำหรับการสนับสนุน dnscache IPV6 IPv6 โดย Felix von Leitner IGNOREIP แพตช์ละเว้น IP2 โดยรัสเซลเนลสัน แพตช์จัมโบ้จัมโบ้โดย Claudiu Costin [X] หน้าคู่มือ MAN โดย Gerritt Pape PERSISTENT_MMAP แพตช์ mmap ถาวรโดย Lennert Buytenhek [X] SRV แพตช์บันทึก SRV โดย Michael Handler

djbdns จะดึงพอร์ต daemontools ด้วย daemontools ได้รับการออกแบบมาเพื่อเรียกใช้ daemons และติดตามงานของพวกเขา นั่นคือหากดีมอนบางตัวอยู่ภายใต้การควบคุม "ตก" daemontools จะรีสตาร์ท

เราสร้างกลุ่ม dnsusers ซึ่งจะรวมผู้ใช้ภายใต้ dnscache เองและ dnslog (ตัวบันทึกสำหรับ djbdns) ที่จะเปิดตัว:

สร้างผู้ใช้สำหรับ dnslog:

# pw useradd dnslog -s /sbin/nologin -d /dev/null -G dnsusers

สร้างโฟลเดอร์ที่มีเนื้อหา daemontools ใช้งานได้กับ:

เปิดตัว daemontools:

เนื่องจากการกำหนดค่า dnscache อยู่ใน /usr/local/etc/djbdns และ daemontools ทำงานร่วมกับโฟลเดอร์ /var/service เราจึงสร้างลิงก์:

# ln -s /usr/local/etc/dnscache /var/service/dnscache

โฟลเดอร์ /usr/local/etc/dnscache/env มีไฟล์ที่มีการกำหนดค่า DNS ขั้นสูงกว่า แต่ในกรณีนี้เราค่อนข้างพอใจกับค่าเริ่มต้น

เพื่อให้เซิร์ฟเวอร์ทำงานได้ตามปกติ คุณจะต้องตั้งค่าที่อยู่ของเซิร์ฟเวอร์ระดับที่สูงกว่า สำหรับแต่ละโซน จะมีไฟล์ชื่อเดียวกันกับชื่อโซน ซึ่งอยู่ใน /usr/local/etc/dnscache/root/servers แต่ละไฟล์มีที่อยู่ IP ของเซิร์ฟเวอร์ที่รับผิดชอบโซนนี้ เนื่องจากเราเปลี่ยนเส้นทางคำขอใด ๆ ไปยังเซิร์ฟเวอร์ DNS ของผู้ให้บริการ เราจึงเขียนชื่อของพวกเขาในไฟล์ชื่อ “@” (รับผิดชอบโซนรูท)

รีสตาร์ท DNSCache:

ติดตั้งเซิร์ฟเวอร์ DHCP (ฉันสร้างมันด้วยตัวเลือกต่อไปนี้):

# cd /usr/ports/net/isc-dhcp41-server && ทำให้การติดตั้งสะอาดตัวเลือกสำหรับ isc-dhcp41-server 4 .1 .e_1, 2 DHCP_IPV6 เปิดใช้งานการสนับสนุนสำหรับ IPv6 [X] DHCP_PARANOIA เปิดใช้งานการสนับสนุนสำหรับ chroot DHCP_LDAP การสนับสนุนแบ็กเอนด์ LDAP แบบทดลอง DHCP_LDAP_SSL รองรับการเชื่อมต่อ LDAP ผ่าน SSL/TLS

เรานำการกำหนดค่าเซิร์ฟเวอร์ DHCP (/usr/local/etc/dhcpd.conf) ไปสู่สถานะต่อไปนี้:

ที่อยู่ในท้องถิ่น 192 .168 .0 .1 - ค่าเริ่มต้นเวลาเช่า 600 - เวลาเช่าสูงสุด 7200 - เผด็จการ; ddns-update-style ชั่วคราว; บันทึกสิ่งอำนวยความสะดวก local7; ซับเน็ต 192 .168 .0 .0 เน็ตมาสก์ 255 .255 .255 .0 ( พิสัย 192 .168 .0 .10 192 .168 .0 .250 - 192 .168 .0 .1 ; เราเตอร์ตัวเลือก # หากคุณเปิดใช้งาน SAMBA คุณสามารถลองมอบให้กับลูกค้าได้ # รวมถึงมูลค่าของเซิร์ฟเวอร์ WINS # ตัวเลือก netbios-name-servers 192.168.0.1;# เรามีเซิร์ฟเวอร์ DNS ของเราเองอยู่แล้ว ดังนั้นเราจึงแจกที่อยู่ของมันให้ 192 .168 .0 .1 ; } ตัวเลือกโดเมนเนมเซิร์ฟเวอร์# "ผูก" ที่อยู่ MAC บางอย่างกับที่อยู่ IP บางอย่าง 03 :03 :03 :03 :03 :03 - 192 .168 .0 .2 ที่อยู่คงที่ 04 :04 :04 :04 :04 :04 - 192 .168 .0 .3 ; }

-

) เซิร์ฟเวอร์โฮสต์ ( ฮาร์ดแวร์อีเธอร์เน็ต

เพิ่มบรรทัดต่อไปนี้ใน /etc/rc.conf:

และเริ่มต้นเซิร์ฟเวอร์ DHCP:

ทุกอย่างปกติดี. บรรลุการทำงานของ dir-300 ที่ง่ายที่สุดแล้ว

การกระจาย Fryukhi มักเรียกว่าเหมาะสมที่สุดสำหรับการแก้ปัญหาเครือข่ายที่ใช้บนเครือข่ายท้องถิ่น วันนี้เราจะแก้ไขปัญหาเครือข่ายอย่างหนึ่ง - การตั้งค่าเกตเวย์บน Freebsd 10 เพื่อเข้าถึงอินเทอร์เน็ตจากพื้นที่ท้องถิ่น นี่คือฟังก์ชันเซิร์ฟเวอร์ที่เรียบง่าย เป็นที่นิยมและเป็นที่ต้องการ ซึ่งสามารถขยายได้ด้วยคุณสมบัติเพิ่มเติม

เราจะใช้ระบบเวอร์ชันต่อไปนี้เพื่อแก้ไขปัญหาการตั้งค่าเกตเวย์:

  • # uname -v FreeBSD 10.2-RELEASE-p8 #0 r292756M: วันเสาร์ที่ 26 ธันวาคม 22:49:34 MSK 2015 root@freebsd:/usr/obj/usr/src/sys/GENERICเซิร์ฟเวอร์มีการติดตั้งการ์ดเครือข่าย 2 อัน:
  • hn0— อินเทอร์เฟซภายนอก, รับอินเทอร์เน็ตจากผู้ให้บริการ, การตั้งค่าผ่าน dhcp

hn1

— เครือข่ายท้องถิ่น ที่อยู่ 10.20.30.1 ตั้งค่าด้วยตนเอง

งานของเราในการตั้งค่าซอฟต์แวร์เราเตอร์ freebsd จะรวมถึงการตั้งค่าเส้นทางบนเซิร์ฟเวอร์ การติดตั้งและกำหนดค่า ipfw การเปิดใช้งาน nat การตั้งค่าเซิร์ฟเวอร์ dhcp และ dns ในเครื่อง กำลังเตรียมเซิร์ฟเวอร์เพื่อกำหนดค่าเกตเวย์.

ข้อมูลเกี่ยวกับการเช่า dhcp ที่ออกของเซิร์ฟเวอร์ dnsmasq สามารถดูได้ในไฟล์

/var/db/dnsmasq.leases

การวิเคราะห์กิจกรรมเครือข่ายใน freebsd โดยใช้ iftop บางครั้งคุณต้องการดูว่าเกิดอะไรขึ้นบนเราเตอร์และใครกำลังใช้อินเทอร์เน็ตอยู่ในขณะนี้ ตามค่าเริ่มต้น ระบบไม่มีเครื่องมือสำเร็จรูปสำหรับรับข้อมูลนี้ โปรแกรม iftop ธรรมดาจะมาช่วยเหลือเรา ซึ่งช่วยให้คุณดูกิจกรรมบนอินเทอร์เฟซเครือข่ายแบบเรียลไทม์ติดตั้ง

ไอฟท็อป

ไปยังเกตเวย์ Freebsd ที่กำหนดค่าไว้:

#pkg ติดตั้ง iftop

เราเปิดตัว iftop เพื่อระบุอินเทอร์เฟซและแสดงพอร์ตที่ใช้:

# iftop -i hn1 -P

เราเห็นภาพที่น่าสนใจ - ใครกำลังปีนอยู่ที่ไหนผ่านท่าเรือใดและด้วยความเร็วเท่าใด

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

การตั้งค่าทั้งหมดใช้เวลา 10-15 นาทีอย่างแท้จริง ใช้เวลาส่วนใหญ่ในการประกอบเคอร์เนล ยิ่ง Freebsd เวอร์ชันสูงเท่าไรก็ยิ่งใช้เวลาในการสร้างนานขึ้น แม้ว่าความเร็วของฮาร์ดแวร์จะเพิ่มขึ้นอย่างมากก็ตาม

มาดูประเด็นต่างๆ แล้วดูว่าเราทำอะไรไปบ้าง:

  1. เราได้เตรียมเซิร์ฟเวอร์สำหรับการกำหนดค่าเกตเวย์
  2. เราสร้างเคอร์เนลขึ้นมาใหม่ด้วยพารามิเตอร์ที่จำเป็น
  3. เรากำหนดค่า ipfw และ nat และเปิดใช้งานการกำหนดเส้นทาง
  4. ติดตั้งและกำหนดค่า DNS เพื่อกระจายการตั้งค่าเครือข่ายผ่านเซิร์ฟเวอร์ DHCP และ DNS
  5. เราติดตั้ง iftop เพื่อการวิเคราะห์กิจกรรมเครือข่ายอย่างง่ายบนอินเทอร์เฟซภายนอก

ซึ่งเพียงพอแล้วสำหรับเกตเวย์ในการทำงานอย่างสมบูรณ์บน Freebsd 10 หากมีความจำเป็นต้องนับปริมาณการรับส่งข้อมูลของผู้ใช้หรือจำกัดการเข้าถึงทรัพยากรบางอย่าง คุณก็สามารถใช้งานได้

มือใหม่หลายคนในด้านเครือข่ายและ FreeBSD ต้องเผชิญกับคำถาม:

“จะเชื่อมต่อสองเครือข่ายได้อย่างไรหากเซิร์ฟเวอร์ FreeBSD มีการเชื่อมต่อทางกายภาพกับทั้งสองเครือข่าย”

กล่าวอีกนัยหนึ่งเซิร์ฟเวอร์ FreeBSD ต้องทำหน้าที่เป็นเราเตอร์

แล้วสิ่งที่เรามี:

  • เครือข่ายอีเทอร์เน็ต
  • ซับเน็ต “C” สองชั้น (/24 - มาสก์ 255.255.255.0)
  • เซิร์ฟเวอร์ FreeBSD พร้อมการ์ดเครือข่ายสองตัว
  • ไคลเอนต์บนเครือข่ายย่อยทั้งสอง

เป้าหมายของเราคือเพื่อให้แน่ใจว่าไคลเอนต์จากเครือข่ายย่อย 192.168.1.0/24 สามารถแลกเปลี่ยนการรับส่งข้อมูลกับไคลเอนต์จากเครือข่ายย่อย 192.168.0.0/24

ขั้นแรก ให้กำหนดค่าเซิร์ฟเวอร์ FreeBSD และกำหนดให้ส่ง (กำหนดเส้นทาง) แพ็กเก็ตจากเครือข่ายย่อยหนึ่งไปยังอีกเครือข่ายหนึ่ง

พารามิเตอร์ net.inet.ip.forwarding มีหน้าที่รับผิดชอบในเรื่องนี้ เรามาดูกันว่ามีค่าอะไรบ้าง:

# sysctl net.inet.ip.การส่งต่อ
net.inet.ip.การส่งต่อ: 0

ปัจจุบันค่าของมันคือ "0" ซึ่งหมายความว่าเซิร์ฟเวอร์ FreeBSD จะไม่ดำเนินการกำหนดเส้นทาง

มาเปิดใช้งานฟังก์ชั่นนี้กันเถอะ:

# sysctl net.inet.ip.forwarding=1
net.inet.ip.การส่งต่อ: 0 -> 1

ดังนั้นเราจึงเปลี่ยนค่าจาก "0" เป็น "1" ตอนนี้เราต้องแน่ใจว่าหลังจากรีบูตค่านี้จะเป็นที่ 1 เสมอ ซึ่งสามารถทำได้ 2 วิธี:

  1. เพิ่มบรรทัดในไฟล์ /etc/rc.conf: gateway_enable=”YES”
  2. เพิ่มบรรทัดในไฟล์ /etc/sysctl.conf: net.inet.ip.forwarding=1

บนเซิร์ฟเวอร์เรามีการ์ดเครือข่ายสองตัวและมีอินเทอร์เฟซสองแบบ: em0 และ em1

ให้ em0 “ดู” ที่เครือข่ายทางด้านซ้าย และ em1 ที่เครือข่ายทางด้านขวา มากำหนดที่อยู่ IP สำหรับอินเทอร์เฟซเซิร์ฟเวอร์ FreeBSD:

# ifconfig em0 เพิ่ม 192.168.1.1/24
# ifconfig em1 เพิ่ม 192.168.0.1/24

บันทึก:

หากคุณได้รับการตอบกลับคำสั่ง ifconfig ต่อไปนี้:
ไม่พบคำสั่ง
ใช้คำสั่ง
#ifconfig อยู่ไหน
ifconfig: /sbin/ifconfig /usr/share/man/man8/ifconfig.8.gz /usr/src/sbin/ifconfig
ซึ่งจะระบุตำแหน่งของยูทิลิตี้ ifconfig อย่างชัดเจน
ดังที่เห็นได้จากผลลัพธ์ของการรันคำสั่งwhereis ยูทิลิตี้ ifconfig จะอยู่ใน /sbin/ifconfig
ป้อนเส้นทางแบบเต็มไปยังยูทิลิตี้ ifconfig จากนั้นข้อความไม่พบคำสั่งจะไม่ปรากฏขึ้นและคำสั่งจะถูกดำเนินการ

มาดูกันว่าเกิดอะไรขึ้น:

#ifconfig -a

em0: ธง=8843 เมตริก 0 mtu 1500 อีเธอร์ 00:02:a5:4e:92:48 inet 192.168.1.1 netmask 0xffffff00 ออกอากาศ 192.168.1.255 สื่อ: เลือกอีเธอร์เน็ตอัตโนมัติ (100baseTX ) สถานะ : ใช้งานอยู่ em1: ธง=8802 เมตริก 0 mtu 1500 อีเธอร์ 00:02:a5:4e:92:49 inet 192.168.0.1 netmask 0xffffff00 ออกอากาศ 192.168.0.255 สื่อ: เลือกอีเธอร์เน็ตอัตโนมัติ (100baseTX ) สถานะ : ใช้งานอยู่

มาดูกันว่าทั้งหมดนี้หมายถึงอะไร:

em0และ em1- ชื่อของอินเทอร์เฟซเครือข่าย
การตั้งค่าสถานะ UP - หมายความว่าเปิดใช้งานการ์ดเครือข่าย หากไม่มีการตั้งค่าสถานะนี้จะไม่ได้รับแพ็กเก็ตบนอินเทอร์เฟซนี้ (หากต้องการเปิดใช้งานให้ใช้คำสั่ง: ifconfig INTERFACE_NAME ขึ้นไป)
อีเธอร์คือที่อยู่ mac ของการ์ดเครือข่ายนี้
inet - ที่อยู่ IP ที่กำหนดสำหรับอินเทอร์เฟซนี้และที่อยู่การออกอากาศสำหรับเครือข่ายย่อยนี้
สื่อ— ข้อมูลเกี่ยวกับความเร็วและดูเพล็กซ์ของอินเทอร์เฟซ
สถานะ — สถานะอินเทอร์เฟซปัจจุบัน หากสถานะ: ไม่มีผู้ให้บริการ แสดงว่าไม่มีลิงก์บนการ์ดเครือข่าย

มาบันทึกการตั้งค่าเพื่อกำหนดที่อยู่ IP ให้กับอินเทอร์เฟซหลังจากรีบูตเซิร์ฟเวอร์ โดยเพิ่มบรรทัดต่อไปนี้ในไฟล์ /etc/rc.conf:

ifconfig_em0=”inet 192.168.1.1 เน็ตมาสก์ 255.255.255.0″
ifconfig_em1=”inet 192.168.0.1 เน็ตมาสก์ 255.255.255.0″

หากคุณใช้ไฟร์วอลล์บนเซิร์ฟเวอร์ เช่น ipfw ให้เพิ่มกฎที่อนุญาตให้ส่งแพ็กเก็ตจากเครือข่ายหนึ่งไปยังอีกเครือข่ายหนึ่ง:

ipfw เพิ่ม 100 อนุญาต ip จาก 192.168.1.1/24 ถึง 192.168.0.1/24
ipfw เพิ่ม 110 อนุญาต ip จาก 192.168.1.0/24 ถึง 192.168.1.1/24

ตอนนี้กำหนดค่าคอมพิวเตอร์ไคลเอนต์:

  • ตั้งค่าที่อยู่ IP จากเครือข่ายย่อยที่ต้องการ: 192.168.1. RajHH หรือ 192.168.0. RajHH
  • ตั้งค่าซับเน็ตมาสก์เป็น 255.255.255.0
  • ตั้งค่าเกตเวย์เริ่มต้น: สำหรับซับเน็ต 192.168.1. RajHH คือ 192.168.1.1 และสำหรับซับเน็ต 192.168.0.AHHH คือ 192.168.0.1 (นี่คือที่อยู่ IP บนอินเทอร์เฟซของเซิร์ฟเวอร์ FreeBSD ของเรา)

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

  • 192.168.1.11
  • 192.168.0.15

ลองใช้ยูทิลิตี้ ping บนเซิร์ฟเวอร์:

#ปิง192.168.1.11

หากผลลัพธ์เป็นดังนี้:

PING 192.168.1.11 (192.168.1.11): 56 ไบต์ข้อมูล
64 ไบต์จาก 192.168.1.11: icmp_seq=0 ttl=64 เวลา=0.466 ms
64 ไบต์จาก 192.168.1.11: icmp_seq=1 ttl=64 เวลา=0.238 ms
64 ไบต์จาก 192.168.1.11: icmp_seq=2 ttl=64 เวลา=0.272 ms
^ค
— 192.168.1.11 สถิติการปิง —
ส่ง 3 แพ็กเก็ต, ได้รับ 3 แพ็กเก็ต, สูญเสียแพ็กเก็ต 0.0%
ไปกลับต่ำสุด/เฉลี่ย/สูงสุด/stddev = 0.238/0.325/0.466/0.100 ms

ซึ่งหมายความว่าทุกอย่างเรียบร้อยดีและมีการเชื่อมต่อระหว่างเซิร์ฟเวอร์และไคลเอนต์ ทำเช่นเดียวกันกับ 192.168.0.15

หากผลการ ping เป็นลบ ตรวจสอบให้แน่ใจว่าได้ตั้งค่าที่อยู่ IP และซับเน็ตมาสก์อย่างถูกต้องบนคอมพิวเตอร์ไคลเอนต์ รวมทั้งมีลิงก์บนการ์ดเครือข่ายด้วย

ตอนนี้คุณสามารถลองตรวจสอบการเชื่อมต่อระหว่างคอมพิวเตอร์ไคลเอนต์จากเครือข่ายย่อยที่ต่างกัน

เราจะใช้ยูทิลิตี้ ping ด้วย แต่บนคอมพิวเตอร์ที่มีที่อยู่ IP 192.168.1.11:

ปิง 192.168.0.15

หากมีคำตอบแสดงว่ามีการเชื่อมต่อระหว่างคอมพิวเตอร์จากเครือข่ายย่อยที่ต่างกัน

หากไม่มีคำตอบ ให้ใช้ยูทิลิตี้ Tracert (สำหรับ Windows) หรือ Traceroute (สำหรับ FreeBSD):

ติดตาม 192.168.0.15

หาก "ดวงดาวไป" ทันที:

1 * * *

จากนั้นตรวจสอบว่าเกตเวย์เริ่มต้นได้รับการตั้งค่าอย่างถูกต้อง

หากเส้นทางมีลักษณะดังนี้:

1 192.168.1.1 (192.168.1.1) 0.421 มิลลิวินาที 0.447 มิลลิวินาที 0.485 มิลลิวินาที
2 * * *

จากนั้นแพ็กเก็ตจะไปถึงเซิร์ฟเวอร์ ตรวจสอบให้แน่ใจว่าไฟร์วอลล์ของเซิร์ฟเวอร์ไม่ได้บล็อกแพ็กเก็ตและคอมพิวเตอร์ไคลเอนต์ที่มีที่อยู่ IP 192.168.0.15 ได้รับการกำหนดค่าอย่างถูกต้องและ "เห็น" เซิร์ฟเวอร์ (ตรวจสอบที่อยู่ IP, ซับเน็ตมาสก์, เกตเวย์เริ่มต้น และการมีอยู่ของ ping ไปยังเซิร์ฟเวอร์)

คุณได้ตรวจสอบทุกอย่างแล้ว แต่ก็ยังไม่มีอะไรทำงานใช่ไหม? ลองใช้ยูทิลิตี้ tcpdump บนเซิร์ฟเวอร์ซึ่งจะแสดงแพ็กเก็ตที่ส่งผ่านอินเทอร์เฟซเซิร์ฟเวอร์:


และ

ส่ง Ping จากคอมพิวเตอร์ไคลเอนต์เครื่องหนึ่งบนซับเน็ตหนึ่งไปยังคอมพิวเตอร์ไคลเอนต์อีกเครื่องบนซับเน็ตอื่น (ดังที่เราทำในตัวอย่างด้านบน) และดูผลลัพธ์ของคำสั่ง tcpdump บนเซิร์ฟเวอร์ ซึ่งจะมีลักษณะดังนี้:

# tcpdump -ni em0

12:17:23.398376 IP 192.168.1.11 > 192.168.0.15: คำขอ ICMP echo, id 49222, seq 0, ความยาว 64
12:17:24.399906 IP 192.168.1.11 > 192.168.0.15: คำขอ ICMP echo, id 49222, seq 1, ความยาว 64

เหล่านั้น. คอมพิวเตอร์ 192.168.1.11 ส่งแพ็กเก็ตคำขอ ICMP echo ไปยังคอมพิวเตอร์ 192.168.0.15 แต่เราไม่เห็นการตอบสนองใด ๆ ดูว่าเซิร์ฟเวอร์ส่งแพ็กเก็ตเหล่านี้ไปยังการ์ดเครือข่ายอื่นหรือไม่:

# tcpdump -ni em1

12:21:18.167017 ไอพี 192.168.1.11 >
12:21:19.168022 IP 192.168.1.11 > 192.168.0.15: คำขอ ICMP echo, id 50246, seq 5, ความยาว 64

เราเห็นว่าคำขอถูกโอนไปยังอินเทอร์เฟซเซิร์ฟเวอร์อื่น แต่ยังไม่มีการตอบสนอง ตรวจสอบการตั้งค่าของคอมพิวเตอร์ 192.168.0.15 และไม่มีปัญหากับการเชื่อมต่อทางกายภาพกับเครือข่าย

เมื่อทุกอย่างทำงานได้ผลลัพธ์จะเป็นดังนี้:

12:21:17.165998 IP 192.168.1.11 > 192.168.0.15: คำขอ ICMP echo, id 50246, seq 3, ความยาว 64
12:21:17.171199 IP 192.168.0.15 > 192.168.1.11: การตอบกลับ ICMP echo, id 50246, seq 3, ความยาว 64
12:21:18.167017 IP 192.168.1.11 > 192.168.0.15: คำขอ ICMP echo, id 50246, seq 4, ความยาว 64
12:21:18.171353 IP 192.168.0.15 > 192.168.1.11: การตอบกลับ ICMP echo, id 50246, seq 4, ความยาว 64

เราเห็นเอาต์พุตตอบกลับคำขอมาตรฐานเมื่อแพ็กเก็ตคำขอ ICMP echo ได้รับการตอบกลับในรูปแบบของแพ็กเก็ตตอบกลับ ICMP echo

บทนำ == ฉันอยากจะสรุปแผนคร่าวๆ ที่ควรปฏิบัติตาม เพื่อให้แนวทางการใช้อินเทอร์เน็ตในสำนักงานถูกต้องและไม่มีใครถูกเบี่ยงเบน ฉันจะทราบทันทีว่าเกตเวย์ใน Unix ไม่ใช่โปรแกรมเดียว แต่เป็นโปรแกรมทั้งสิบโปรแกรมซึ่งแต่ละโปรแกรมดำเนินการของตัวเองและมีการตั้งค่าของตัวเอง เราใช้: * FreeBSD 7 * natd * ชื่อ, เส้นทาง * ipfw * squid * squidGuard * apache * dhcpd เซิร์ฟเวอร์ทดสอบของฉันอยู่ในเครือข่ายท้องถิ่นแล้ว ดังนั้นฉันเชื่อว่าเครือข่ายภายนอกของฉันคือ 192.168.0.0/24 และภายในของฉัน - 172.16.0.0/16. ท้ายที่สุดแล้วตัวเลขไม่สำคัญ ความหมายต่างหากที่สำคัญ ฉันติดตั้ง FreeBSD ในการกำหนดค่าขั้นต่ำและ rc.conf ของฉันมีเพียง: ชื่อโฮสต์ = "vm=freepro.local" ifconfig_em0 = "DHCP" linux_enable = "ใช่" sshd_enable = "ใช่"== การตั้งค่า NAT == อินเทอร์เฟซภายนอกของฉัน - em0 - โดยค่าเริ่มต้นจะได้รับที่อยู่ IP ผ่าน DHCP จากเราเตอร์ปกติที่มีที่อยู่ 192.168.1.1 แน่นอนว่าเราเตอร์ตัวเดียวกันทำหน้าที่เป็นเซิร์ฟเวอร์ DNS ในขั้นแรก ฉันทำ NAT (บนอินเทอร์เฟซภายนอกเสมอ!) และแก้ไขไฟล์ /etc/rc.conf ด้วยวิธีนี้: ชื่อโฮสต์ = "vm=freepro.local" defaultrouter = "192.168.1.1" ifconfig_em0 = "inet 192.168.1.10 netmask 255.255.255.0" linux_enable = "YES" sshd_enable = "YES" # เกตเวย์อินเทอร์เน็ต ifconfig_em1 = "inet 172.16.0.1 netmask 255.255 .0.0" gateway_enable="YES" natd_enable="YES" natd_interface="em0" #natd_flags="-f /etc/redirect.conf" firewall_enable="YES" firewall_type="open" #firewall_script="/etc/firewall conf" router_enable="ใช่" เราเตอร์ = "/sbin/routed" router_flags = "-q"ฉันแก้ไขที่อยู่ภายนอกและตั้งค่าที่อยู่ภายในแล้ว ตอนนี้เรามาแก้ไข DNS ในไฟล์ /etc/resolv.conf: nameserver 192.168.1.1 เท่านั้น! มาเริ่มบริการกันดีกว่า: # /etc/rc.d/ipfw เริ่มต้น # /etc/rc.d/natd start # /etc/rc.d/เริ่มต้นเส้นทาง # /etc/rc.d/เริ่มต้นที่มีชื่อและอินเทอร์เน็ตใช้งานได้! แน่นอนว่าเราเขียนถึงลูกค้าด้วยตนเอง: IP: 172.16.0.2 หน้ากาก: 255.255.0.0 ประตู: 172.16.0.1 DNS1: 192.168.1.1แน่นอนว่านี่เป็นเกตเวย์ที่แย่มาก ประการแรก ไม่ได้รับการป้องกันเลย ประการที่สอง ไม่ได้แคชเลย ประการที่สาม เปลี่ยนเส้นทางคำขอ DNS ทั้งหมด "อัปสตรีม" และขาดความสามารถในการรับสถิติหรือจัดการสิ่งใดเลยโดยสิ้นเชิง แต่นี่เป็นเกตเวย์ที่เบาและรวดเร็วมาก และด้วยการปรับเปลี่ยนเพิ่มเติม ประสิทธิภาพก็จะเพิ่มขึ้นเท่านั้น ไม่ใช่ลดลง อย่างไรก็ตาม โปรดทราบว่ามีสองบรรทัดที่มีการใส่ความคิดเห็นไว้แล้วใน rc.conf ใหม่ ความคิดเห็นแรกจะช่วยฉันในอนาคตในการ "ส่งต่อ" พอร์ตบางพอร์ตจากภายนอกสู่ภายในเครือข่าย เหล่านั้น. ตัวอย่างเช่น หากฉันต้องการเข้าถึงคอมพิวเตอร์ไคลเอนต์ 172.16.0.2 ผ่าน ssh ฉันจะต้องสร้างไฟล์ต่อไปนี้: # ไฟล์ /etc/redirect.conf เปลี่ยนเส้นทาง tcp 172.16.0.2:22 2222ซึ่งหมายความว่าเมื่อเชื่อมต่อกับเซิร์ฟเวอร์จากภายนอกผ่านพอร์ต 2222 ฉันจะไปที่เครื่องบนเครือข่ายท้องถิ่นผ่านพอร์ต 22 (ssh) ความคิดเห็นที่สองคือการกำหนดค่าไฟร์วอลล์ส่วนตัวของฉัน ปรับปรุงและทดสอบแล้ว == การตั้งค่า ipfw == การกำหนดค่าของฉันสำหรับ ipfw ในขั้นตอนนี้มีลักษณะดังนี้: #!/bin/sh # การกำหนดค่า IPFW สำหรับเซิร์ฟเวอร์ NAT แบบธรรมดา /etc/firewall.conf cmd="/sbin/ipfw -q" IfOut="em0" IpOut="192.168.1.10" NetOut="192.168.1.0/24 " IfIn="em1" IpIn="172.16.0.1" NetIn="172.16.0.0/16" ########################### ###################### # ชัดเจน ########################## ######################### $(cmd) -f ล้าง $(cmd) ตาราง 0 ล้าง $(cmd) ตาราง 1 ล้าง #### # ############################################## # ไวท์ลิสต์ / บัญชีดำ # ################################################# #$ (cmd) ตาราง 0 เพิ่ม 172.16.0.12 $(cmd) ตาราง 1 เพิ่ม 172.16.0.13 ############################ ##### ################### # วนกลับ ######################## ##### ###################### $(cmd) เพิ่มอนุญาต ip จากใด ๆ ไปยังใด ๆ ผ่าน lo0 ########## ###### ################################# # บล็อกโลกเป็นส่วนตัว ##### ###### ######################################## $(cmd) เพิ่มการปฏิเสธ ip จากใดๆ เป็น 127.0 .0.0/8 $(cmd) เพิ่มการปฏิเสธ ip จาก 127.0.0.0/8 ไปยัง #$(cmd) ใดๆ เพิ่มการปฏิเสธ ip จาก 172.16.0.0/16 ไปยังใดๆ ผ่าน $(IfOut) #$( cmd) เพิ่ม deny ip จาก 192.168 .1.0/24 ไปยัง any ผ่าน $(IfOut) $(cmd) เพิ่ม deny ip จาก any ถึง 10.0.0.0/8 ผ่าน $(IfOut) #$(cmd) เพิ่ม deny ip จาก any เป็น 172.16 .0.0/12 ผ่าน $( IfOut) #$(cmd) เพิ่ม deny ip จาก any ถึง 192.168.0.0/16 ผ่าน $(IfOut) $(cmd) เพิ่ม deny ip จาก any เป็น 0.0.0.0/8 ผ่าน $(IfOut) $(cmd) เพิ่มการปฏิเสธ ip จากใด ๆ ถึง 169.254.0.0/16 ผ่าน $(IfOut) $(cmd) เพิ่มการปฏิเสธ ip จากใด ๆ ถึง 192.0.2.0/24 ผ่าน $(IfOut) $(cmd) เพิ่มการปฏิเสธ ip จากใด ๆ ถึง 224.0.0.0/4 ผ่าน $ (IfOut) $(cmd) เพิ่มปฏิเสธ ip จากใด ๆ เป็น 240.0.0.0/4 ผ่าน $(IfOut) #################### ####### ######################## # ICMP ################ ######### ########################## $(cmd) เพิ่มปฏิเสธ icmp จากใด ๆ ไปยัง frag ใด ๆ $(cmd) เพิ่ม icmp บันทึกการปฏิเสธจากใด ๆ เป็น 255.255.255.255 ในผ่าน $(IfOut) $(cmd) เพิ่ม icmp บันทึกการปฏิเสธจากใด ๆ เป็น 255.255.255.255 ออกผ่าน $(IfOut) ############## ######### ############################ # NAT ########### ########### #############################$(cmd) เพิ่มการโอน 8668 ip จาก $ (NetIn) ไปยังใด ๆ ผ่านทาง $(IfOut) $ (cmd) เพิ่มการโอน 8668 ip จากใด ๆ ไปยัง $(IpOut) ผ่าน $(IfOut) #$(cmd) เพิ่มการโอน 8668 ip จากใด ๆ ไปยังใด ๆ ผ่านทาง $(IfOut) ## ########### ##################################### # ปิดกั้น ส่วนตัวสู่โลก ######## ######################################## #### $(cmd) เพิ่ม deny ip จาก 10.0.0.0/8 ไปยัง any ผ่าน $(IfOut) #$(cmd) เพิ่ม deny ip จาก 172.16.0.0/12 ไปยัง any ผ่าน $(IfOut) #$(cmd) เพิ่ม deny ip จาก 192.168.0.0/16 ไปยัง any ผ่าน $(IfOut) $(cmd) เพิ่ม deny ip จาก 0.0.0.0/8 ไปยัง any ผ่าน $(IfOut) $(cmd) เพิ่ม deny ip จาก 169.254.0.0/16 ถึง ใด ๆ ผ่านทาง $(IfOut) $(cmd) เพิ่ม deny ip จาก 192 0.2.0/24 ไปยังใดๆ ผ่าน $(IfOut) $(cmd) เพิ่ม deny ip จาก 224.0.0.0/4 ไปยัง any ผ่าน $(IfOut) $(cmd) เพิ่ม deny ip จาก 240.0.0.0/4 ไปยัง any ผ่าน $( หากออก) ################################################# # ## # ไวท์ลิสต์ ############################################# # #### $(cmd) เพิ่มอนุญาตทั้งหมดตั้งแต่ "table(0)" ถึง $(cmd) ใด ๆ เพิ่มอนุญาตทั้งหมดจาก "table(0)" ############# # ##################################### # บัญชีดำ ########## ### ####################################### $(cmd) เพิ่มปฏิเสธทั้งหมดจาก " ตาราง (1 )" ไปยัง ##################################################################### ### #### # ก่อตั้งต่อไป ######################################## ### ####### $(cmd) เพิ่มอนุญาต tcp จากใด ๆ ถึงฉันที่จัดตั้งขึ้น ########################### ### ################### # หลัก ########################## ### ##################### $(cmd) เพิ่มอนุญาต ip จากจุดใด ๆ ไปยัง frag ใด ๆ $(cmd) เพิ่มอนุญาต icmp จากจุดใด ๆ ถึง $(IpOut) icmptypes 0, 8,11 # dns $(cmd) เพิ่ม อนุญาต tcp จากใด ๆ ถึง $(IpOut) dst-port 53 การตั้งค่า $(cmd) เพิ่ม อนุญาต udp จากใด ๆ ถึง $(IpOut) dst-port 53 $(cmd) เพิ่ม อนุญาต udp จาก $(IpOut) 53 ถึง $(cmd) ใด ๆ เพิ่มอนุญาต udp จาก $(IpOut) ไปยัง dst-port 53 ใด ๆ keep-state # dns-client $(cmd) เพิ่ม อนุญาต tcp จากใด ๆ ถึง $(NetIn) dst - การตั้งค่าพอร์ต 53 $(cmd) เพิ่มอนุญาต udp จากใด ๆ ถึง $ (NetIn) dst-port 53 $ (cmd) เพิ่มอนุญาต udp จาก $ (NetIn) 53 ถึง $ (cmd) ใด ๆ เพิ่มอนุญาต udp จาก $ (NetIn) ถึง dst- พอร์ต 53 keep-state # เวลาใด ๆ $ (cmd) เพิ่มอนุญาต udp จาก $ (IpOut) ไปยัง dst-port 123 keep-state # time-client $ (cmd) เพิ่มอนุญาต udp จาก $ (NetIn) ไปยัง dst ใด ๆ - พอร์ต 123 Keep-state # ssh-in $(cmd) เพิ่มอนุญาตให้ tcp จากใดก็ได้ถึง $(IpOut) 22 $(cmd) เพิ่มอนุญาต tcp จาก $(IpOut) 22 ถึง # ssh-out $(cmd) เพิ่มอนุญาต tcp จาก $ (IpOut) ถึง 22 $(cmd) ใด ๆ เพิ่มอนุญาต tcp จาก 22 ใด ๆ ถึง $(IpOut) # http $(cmd) เพิ่มอนุญาต tcp จาก $(IpOut) ไปยัง dst-port ใด ๆ 80 # http-client $( cmd) เพิ่มอนุญาต tcp จาก $(NetIn) ไปยัง dst-port ใด ๆ 80 $(cmd) เพิ่มอนุญาต tcp จาก 80 ถึง $(NetIn) # smtp $(cmd) เพิ่มอนุญาต tcp จากใด ๆ ถึง $(IpOut) dst-port 25 การตั้งค่า # ส่งต่อ 8080 ถึง 81 $(cmd) เพิ่มอนุญาต tcp จากใด ๆ ถึง $(IpOut) dst-port 8080 $(cmd) เพิ่มอนุญาต tcp จาก $(IpOut) 8080 ถึง $(cmd) ใด ๆ เพิ่มอนุญาต tcp จากใด ๆ ถึง $(NetIn ) dst-port 81 $(cmd) เพิ่มอนุญาตให้ tcp จาก $(NetIn) 81 ไปยัง # out ใด ๆ $(cmd) เพิ่มปฏิเสธบันทึก tcp จากใด ๆ ไปยังใด ๆ ในผ่านการตั้งค่า $ (IfOut) #$ (cmd) เพิ่ม อนุญาต tcp จากการตั้งค่าใด ๆ ไปจนถึงการตั้งค่าใด ๆ ########################################### ### #### # เครือข่ายท้องถิ่น ######################################### ### ####### $(cmd) เพิ่มอนุญาตทั้งหมดจากใด ๆ ไปยังใด ๆ ผ่าน $ (IfIn) ######################## #### ####################### # ปฏิเสธทั้งหมด ##################### ##### ############################# $(cmd) เพิ่มปฏิเสธทั้งหมดจากใด ๆ ไปยังใด ๆฉันแสดงความคิดเห็นบางบรรทัดโดยเฉพาะที่นำแพ็กเก็ตจากเครือข่ายท้องถิ่น 192, 172 ไปยังอินเทอร์เฟซภายนอก เนื่องจากอินเทอร์เฟซภายนอกของฉันเป็นแบบท้องถิ่น ในความเป็นจริงแล้ว บรรทัดเหล่านี้จำเป็น เดินหน้าต่อไป == การตั้งค่า squid == ตอนนี้ฉันต้องการ squid - พร็อกซีเซิร์ฟเวอร์แคชที่สามารถกระจายอินเทอร์เน็ตไปยังผู้ใช้ทุกคนได้อย่างชาญฉลาดตามกฎที่กำหนดโดยผู้ดูแลระบบ pkg_add -r squid หมายเหตุ: แน่นอนว่าตัวเลือกที่ถูกต้องกว่าคือการสร้างซอฟต์แวร์จากพอร์ตใหม่และอัปเดต แต่เราประหยัดเวลาดังนั้นเราจึงติดตั้งในแพ็คเกจ สักวันหนึ่งเราจะอัปเกรดโดยใช้ portupgrade สำหรับ squid เราทำการตั้งค่าที่ง่ายที่สุด - แก้ไขไฟล์ /usr/local/etc/squid/squid.conf # การกำหนดค่าขั้นต่ำ SQUID acl src ทั้งหมด 0.0.0.0/0.0.0.0 acl manager proto cache_object acl localhost src 127.0.0.1/255.255.255.255 acl to_localhost dst 127.0.0.0/8 acl localnet src 172.16.0.0/255.255 0.0 a cl SSL_ports พอร์ต 443 วิธี acl CONNECT CONNECT http_access อนุญาตให้ผู้จัดการ localhost http_access อนุญาต localnet http_access ปฏิเสธผู้จัดการ http_access ปฏิเสธ !Safe_ports http_access ปฏิเสธ CONNECT !SSL_ports http_access ปฏิเสธ icp_access ทั้งหมด อนุญาต http_port 3128 hierarchy_stoplist cgi-bin ทั้งหมด ? acl QUERY urlpath_regex cgi-bin \? แคชปฏิเสธ QUERY cache_dir ufs /usr/local/squid/cache 100 16 256 access_log /usr/local/squid/logs/access.log squid cache_log /usr/local/squid/logs/cache.log cache_store_log /usr/local/squid /logs/store.log รีเฟรช_รูปแบบ ^ftp: 1440 20% 10080 รีเฟรช_รูปแบบ ^โกเฟอร์: 1440 0% 1440 รีเฟรช_รูปแบบ 0 20% 4320 acl apache rep_header เซิร์ฟเวอร์ ^ Apache Broken_vary_encoding อนุญาต apache cache_efficient_user squid cache_efficient_group squidvisible_hostname vm-freepro.local icp_port 0 error_directory /usr/local/etc/squid/errors/English coredump_dir /usr/local/squid/cacheฉันจงใจลบความคิดเห็นออกจากไฟล์กำหนดค่าเนื่องจากมีไม่มาก แต่มีจำนวนมาก อย่าลืมแก้ไข /etc/rc.conf โดยเพิ่มบรรทัด: squid_enable="YES" ถัดไป สร้างแคชใหม่และเริ่ม squid: # squid -z # /usr/local/etc/rc.d/squid เริ่มต้นสิ่งแรกที่เราทำหลังจากติดตั้งปลาหมึกคือการห้ามผู้ใช้ในพื้นที่ไม่ให้เข้าถึงอินเทอร์เน็ตผ่านพอร์ต 80 เราส่งต่อพอร์ต 80 ถึง 3128 - เช่น เราบังคับให้ผู้ใช้ทุกคนผ่านปลาหมึกเท่านั้น มีการจับเล็ก ๆ น้อย ๆ ที่นี่ การดำเนินการนี้สามารถทำได้โดยการแนะนำการรองรับ IPFW ในเคอร์เนลเท่านั้น ไม่เช่นนั้นการส่งต่อจะไม่ทำงาน ใช่แล้ว นั่นหมายความว่าตอนนี้เราจะต้องรวบรวมแกนกลางของเราแล้ว! ไม่ใช่เรื่องง่าย แต่มีประโยชน์ - หลังจากประกอบเคอร์เนลแล้ว ความเร็วของมันควรจะเพิ่มขึ้น และปริมาตรของมันควรจะลดลงอย่างเห็นได้ชัด ขั้นแรก ให้ใช้ sysinstall เพื่อติดตั้งแหล่งเคอร์เนล: # sysinstall ไปที่ /Configure/Distributions Mark ภายในส่วน src [X] base [X] sysตอนนี้เรามีเคอร์เนลซอร์สอยู่ในโฟลเดอร์ /usr/src จากนั้น คัดลอกการกำหนดค่า GENERIC ไปที่ “ของคุณ” MYKERNEL และแก้ไข MYKERNEL: # cd /usr/src/sys/i386/conf # cp ทั่วไป MYKERNEL # mcedit MYKERNELเมื่อแก้ไขการกำหนดค่า คุณต้องระบุตัวเลือกต่อไปนี้: # เปิดใช้งานไฟร์วอลล์ในตัวเลือกเคอร์เนล IPFIREWALL # เปิดใช้งานกลไกการบันทึกตัวเลือก "บันทึก" IPFIREWALL_VERBOSE # การ จำกัด บันทึก - การป้องกันจากตัวเลือกล้น IPFIREWALL_VERBOSE_LIMIT=50 # เปิดใช้งานตัวเลือกกลไกการเปลี่ยนเส้นทางแพ็คเก็ต IPFIREWALL_FORWARD # เปิดใช้งานตัวเลือกกลไกการแปลที่อยู่ NAT IPDIVERT # เปิดใช้งาน ตัวเลือกกลไกจำกัดความเร็วช่อง DUMMYNETและลบฮาร์ดแวร์ที่ไม่จำเป็นทั้งหมดที่คุณไม่มีอยู่ออกด้วย ตอนนี้เรามาสร้างเคอร์เนลกันดีกว่า การดำเนินการนี้อาจใช้เวลานานกว่าเล็กน้อย และอาจล้มเหลวโดยมีข้อผิดพลาด โดยต้องติดตั้งแหล่งเพิ่มเติมจาก sysinstall ขึ้นอยู่กับสิ่งที่คุณเขียนในการกำหนดค่า เราหวังว่าจะไม่มีอะไรฟุ่มเฟือยที่นั่น # cd /usr/src # สร้างเคอร์เนล KERNCONF=MYKERNEL # สร้างเคอร์เนลการติดตั้ง KERNCONF=MYKERNELตอนนี้คุณต้องรีบูท แต่ก่อนที่จะรีบูทอย่าลืมอ่านคู่มือในกรณีที่คุณไม่สามารถรีบูทได้ ฉันอยากให้สิ่งนี้ไม่เกิดขึ้นแน่นอน ดังนั้นเราจึงรีบูตและแก้ไข /etc/firewall.conf อีกครั้ง #!/bin/sh # การกำหนดค่า IPFW สำหรับเซิร์ฟเวอร์ NAT และพร็อกซี SQUID cmd="/sbin/ipfw -q" IfOut="em0" IpOut="192.168.1.10" NetOut="192.168.1.0/24" IfIn= "em1 " IpIn="172.16.0.1" NetIn="172.16.0.0/16" ############################## ## ################# # ชัดเจน ############################# ## #################### $(cmd) -f ล้าง $(cmd) ตาราง 0 ล้าง $(cmd) ตาราง 1 ล้าง ######## # ################################################################### # บัญชีขาว / บัญชีดำ #### ##############################################$(cmd) ตาราง 0 เพิ่ม 172.16.0.2 $(cmd) ตาราง 1 เพิ่ม 172.16.0.13 ################################## ################ # วนกลับ ################################ ################### $(cmd) เพิ่มอนุญาต ip จากใดก็ได้ไปยังที่ใดก็ได้ผ่าน lo0 ################## # ############################## # บล็อกโลกเป็นส่วนตัว ############# # ##################################### $(cmd) เพิ่มปฏิเสธ ip จากใด ๆ เป็น 127.0.0.0 0.0/ 8 $(cmd) เพิ่ม deny ip จาก 127.0.0.0/8 ไปยัง #$(cmd) ใด ๆ เพิ่ม deny ip จาก 172.16.0.0/16 ไปยัง any ผ่าน $(IfOut) #$(cmd) เพิ่ม deny ip จาก 192.168.168 1.0/ 24 ถึงใด ๆ ผ่าน $(IfOut) $(cmd) เพิ่มปฏิเสธ ip จากใด ๆ ถึง 10.0.0.0/8 ผ่าน $(IfOut) #$(cmd) เพิ่มปฏิเสธ ip จากใด ๆ ถึง 172.16.0.0/12 ผ่าน $(IfOut) ) # $(cmd) เพิ่มการปฏิเสธ ip จากใด ๆ ถึง 192.168.0.0/16 ผ่าน $(IfOut) $(cmd) เพิ่มการปฏิเสธ ip จากใด ๆ เป็น 0.0.0.0/8 ผ่าน $(IfOut) $(cmd) เพิ่มการปฏิเสธ ip จาก ใด ๆ ถึง 169.254.0.0/16 ผ่าน $(IfOut) $(cmd) เพิ่มปฏิเสธ ip จากใด ๆ ถึง 192.0.2.0/24 ผ่าน $(IfOut) $(cmd) เพิ่มปฏิเสธ ip จากใด ๆ ถึง 224.0.0.0/4 ผ่าน $( IfOut) $(cmd) เพิ่ม deny ip จากใดๆ เป็น 240.0.0.0/4 ผ่าน $(IfOut) ########################### ##### #################### # ICMP ####################### ##### ###################### $(cmd) เพิ่มปฏิเสธ icmp จากส่วนใด ๆ ไปยัง frag ใด ๆ $(cmd) เพิ่มปฏิเสธบันทึก icmp จากใด ๆ ถึง 255.255.255.255 เข้าผ่าน $(IfOut) $(cmd) เพิ่ม icmp บันทึกการปฏิเสธจาก any เป็น 255.255.255.255 ออกผ่าน $(IfOut) ##################### ##### ######################### # NAT ################## ####### ########################### $(cmd) เพิ่มการโอน 8668 ip จาก $(NetIn) ไปที่ใด ๆ ผ่าน $(IfOut) $(cmd) เพิ่มการโอน 8668 ip จากใด ๆ ไปยัง $(IpOut) ผ่าน $(IfOut) #$(cmd) เพิ่มการโอน 8668 ip จากใด ๆ ไปยังใด ๆ ผ่าน $(IfOut) ####### ######### ################################## # บล็อกส่วนตัวสู่โลก ## ######### ################################################################ $ (cmd) เพิ่มการปฏิเสธ ip จาก 10.0.0.0 /8 ไปยังรายการใด ๆ ผ่าน $(IfOut) #$(cmd) เพิ่มการปฏิเสธ ip จาก 172.16.0.0/12 ไปยังรายการใด ๆ ผ่าน $(IfOut) #$(cmd) เพิ่มการปฏิเสธ ip จาก 192.168 .0.0/16 ไปยังรายการใด ๆ ผ่านทาง $(IfOut ) $(cmd) เพิ่มการปฏิเสธ ip จาก 0.0.0.0/8 ไปยังรายการใด ๆ ผ่านทาง $(IfOut) $(cmd) เพิ่มการปฏิเสธ ip จาก 169.254.0.0/16 ไปยังรายการใด ๆ ผ่านทาง $(IfOut ) $(cmd) เพิ่ม deny ip จาก 192 0.2.0/24 ไปยังใดๆ ผ่าน $(IfOut) $(cmd) เพิ่ม deny ip จาก 224.0.0.0/4 ไปยัง any ผ่าน $(IfOut) $(cmd) เพิ่ม deny ip จาก 240.0.0.0/4 ไปยัง any ผ่าน $( หากออก) ################################################# # ## # ไวท์ลิสต์ ############################################# # #### $(cmd) เพิ่มอนุญาตทั้งหมดตั้งแต่ "table(0)" ถึง $(cmd) ใด ๆ เพิ่มอนุญาตทั้งหมดจาก "table(0)" ############# # ##################################### # บัญชีดำ ########## ### ####################################### $(cmd) เพิ่มปฏิเสธทั้งหมดจาก " ตาราง (1 )" ไปยัง ##################################################################### ### #### # ก่อตั้งต่อไป ######################################## ### ####### $(cmd) เพิ่มอนุญาต tcp จากใด ๆ ถึงฉันที่จัดตั้งขึ้น ########################### ### ################### # หลัก ########################## ### ##################### $(cmd) เพิ่มอนุญาต ip จากจุดใดก็ได้ไปยัง frag ใด ๆ $(cmd) เพิ่มอนุญาต icmp จากจุดใดก็ได้ถึง $(IpOut) icmptypes 0, 8,11 # dns $(cmd) เพิ่ม อนุญาต tcp จากใด ๆ ถึง $(IpOut) dst-port 53 การตั้งค่า $(cmd) เพิ่ม อนุญาต udp จากใด ๆ ถึง $(IpOut) dst-port 53 $(cmd) เพิ่ม อนุญาต udp จาก $(IpOut) 53 ถึง $(cmd) ใด ๆ เพิ่มอนุญาต udp จาก $(IpOut) ไปยัง dst-port 53 ใด ๆ keep-state # dns-client $(cmd) เพิ่ม อนุญาต tcp จากใด ๆ ถึง $(NetIn) dst - การตั้งค่าพอร์ต 53 $(cmd) เพิ่มอนุญาต udp จากใด ๆ ถึง $ (NetIn) dst-port 53 $ (cmd) เพิ่มอนุญาต udp จาก $ (NetIn) 53 ถึง $ (cmd) ใด ๆ เพิ่มอนุญาต udp จาก $ (NetIn) ถึง dst- พอร์ต 53 keep-state # เวลาใด ๆ $ (cmd) เพิ่มอนุญาต udp จาก $ (IpOut) ไปยัง dst-port 123 keep-state # time-client $ (cmd) เพิ่มอนุญาต udp จาก $ (NetIn) ไปยัง dst ใด ๆ - พอร์ต 123 Keep-state # ssh-in $(cmd) เพิ่มอนุญาตให้ tcp จากใดก็ได้ถึง $(IpOut) 22 $(cmd) เพิ่มอนุญาต tcp จาก $(IpOut) 22 ถึง # ssh-out $(cmd) เพิ่มอนุญาต tcp จาก $ (IpOut) ถึง 22 $(cmd) ใด ๆ เพิ่มอนุญาตให้ tcp จาก 22 ใด ๆ ถึง $(IpOut) # http $(cmd) เพิ่มอนุญาต tcp จาก $(IpOut) ไปยัง dst-port ใด ๆ 80 # http-client #$ (cmd) เพิ่มอนุญาต tcp จาก $(NetIn) ไปยัง dst-port 80 #$(cmd) เพิ่มอนุญาต tcp จาก 80 ถึง $(NetIn) # squid $(cmd) เพิ่มอนุญาตทั้งหมดจาก $(NetIn) ถึง $( IpIn) 3128 ผ่าน $(IfIn) $(cmd) เพิ่ม fwd $(IpIn),3128 tcp จาก $(NetIn) ถึง 80 # smtp $(cmd) เพิ่มอนุญาต tcp จากใดก็ได้ถึง $(IpOut) การตั้งค่า dst-port 25 # ออก $ (cmd) เพิ่มปฏิเสธบันทึก tcp จากใด ๆ ไปยังใด ๆ ในผ่านการตั้งค่า $ (IfOut) #$ (cmd) เพิ่มอนุญาต tcp จากการตั้งค่าใด ๆ ไปยังการตั้งค่าใด ๆ ################ ### ############################### # เครือข่ายท้องถิ่น ############# ### ################################## $(cmd) เพิ่มอนุญาตทั้งหมดจากใด ๆ ไปยังใด ๆ ผ่าน $ (ถ้าใน) ################################################ ### # ปฏิเสธทั้งหมด ############################################ ##### ### $(cmd) เพิ่มปฏิเสธทั้งหมดจากใดก็ได้เรารีสตาร์ทบริการและตรวจสอบ - ทุกอย่างใช้งานได้ และลูกค้าก็ผ่านระบบควบคุมโดยไม่มีใครสังเกตเห็น พักการตั้งค่าการควบคุมการเข้าถึงไว้ก่อนแล้วมาแก้ไขปัญหาสำคัญอีกประการหนึ่ง: การรับ DNS == การตั้งค่า DNS == ขณะนี้ลูกค้าของเรามีที่อยู่ DNS 192.168.1.1 ที่ลงทะเบียน - ภายนอกเครือข่ายภายใน 172.16.0.0/16 เราสามารถพูดได้ว่าลูกค้าปีนขึ้นไปเหนือเซิร์ฟเวอร์หลายพันครั้งต่อวันเพื่อค้นหาที่อยู่ มาทำให้ระบบดีขึ้นกันเถอะ - ตั้งค่าเซิร์ฟเวอร์แคช DNS ซึ่งจะช่วยให้เราหลีกเลี่ยงการเชื่อมต่อจากต้นทางถึงปลายทางไปยังภายนอก ช่วยลดปริมาณการรับส่งข้อมูล และเพิ่มความเร็วในการทำงานของเรา ก่อนที่จะดำเนินการนี้ อย่าลืมปฏิเสธการเข้าถึงภายนอกผ่านพอร์ต 53 สำหรับไคลเอนต์ทั้งหมด ในไฟล์ /etc/namedb/named.conf เราแก้ไขพารามิเตอร์ Listen-on, Forwarders: ตัวเลือก ( ไดเรกทอรี "/etc/namedb"; pid-file "/var/run/named/pid"; dump-file "/var/dump/named_dump.db"; สถิติไฟล์ "/var/stats/named.stats "; ฟังบน ( 127.0.0.1; 172.16.0.1; ); ปิดการใช้งาน - โซนว่าง "255.255.255.255.IN-ADDR.ARPA"; ปิดการใช้งาน - โซนว่าง "0.0.0.0.0.0.0.0.0.0.0.0 .0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.ARPA"; ปิดการใช้งาน-โซนว่าง "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0. 0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.ARPA"; ผู้ส่งต่อ ( 192.168.1.1; ); // ที่อยู่แหล่งที่มาของแบบสอบถาม * พอร์ต 53; );ในไฟล์ /etc/resolv.conf ให้สร้าง DNS ภายในเครื่องก่อน: เนมเซิร์ฟเวอร์ 127.0.0.1 เนมเซิร์ฟเวอร์ 192.168.1.1ใน /etc/firewall.conf เราห้ามไม่ให้ไคลเอนต์ใช้ DNS ภายนอก (เราแก้ไขส่วนด้วยความคิดเห็น dns-client) # dns-client # ปิดการใช้งาน DNS ภายนอก #$(cmd) เพิ่มอนุญาต tcp จากใด ๆ ถึง $ (NetIn) การตั้งค่า dst-port 53 #$ (cmd) เพิ่มอนุญาต udp จากใด ๆ ถึง $ (NetIn) dst-port 53 #$ ( cmd) เพิ่มอนุญาต udp จาก $(NetIn) 53 ไปยัง #$(cmd) ใด ๆ เพิ่มอนุญาต udp จาก $(NetIn) ไปยัง dst-port 53 keep-state ใด ๆ # อนุญาตเฉพาะ DNS ในเครื่องเท่านั้น $(cmd) เพิ่มอนุญาต tcp จาก $( NetIn) ถึง $(IpIn) dst-port 53 การตั้งค่า $(cmd) เพิ่มอนุญาต udp จาก $(NetIn) ถึง $(IpIn) dst-port 53มาเริ่มกันใหม่: # /etc/rc.d/named รีสตาร์ท # /etc/rc.d/ipfw รีสตาร์ทตอนนี้เรากลับมาที่ประเด็นการควบคุมการเข้าถึงอินเทอร์เน็ต มีสองวิธีในคราวเดียว ขั้นแรก ให้กำหนดค่านโยบาย acl ใน squid ประการที่สอง ติดตั้งและกำหนดค่า squidGuard - แอปพลิเคชันพิเศษสำหรับการควบคุมการเข้าถึง มาเริ่มกันตามลำดับ == การกำหนดค่า squid acl == acl เป็นกฎในการกำหนดค่า squid ที่ช่วยให้คุณสามารถจำกัดการไหลของข้อมูลที่ส่งผ่านพร็อกซีเซิร์ฟเวอร์ได้อย่างมีประสิทธิภาพ กล่าวโดยสรุป ด้วย ACL คุณสามารถฆ่าฝ่ายซ้ายที่ขัดขวางการทำงานของคุณได้อย่างรวดเร็ว การตั้งค่า ACL ทั้งหมดจะถูกเขียนโดยค่าเริ่มต้นในไฟล์ squid.conf แต่สามารถย้ายไปยังไฟล์ภายนอกได้ ตัวอย่างเช่น นี่คือส่วนหนึ่งของการกำหนดค่า: # เราห้ามการถ่ายโอนข้อมูลไฟล์สำหรับทุกคนที่ acl แชร์ dstdomain .rapidshare.com .webfile.ru http_access ปฏิเสธการแชร์ # เราห้ามทุกคนจากการร้องขอไซต์ผ่าน IP acl ip_urls url_regex http://+\.+\.+\.+[:/ ] http_access ปฏิเสธ ip_urls # ข้อ จำกัด กลุ่ม src group_strict (ip 172.16.0.20-172.16.0.25) src group_allow (ip 172.16.0.26-172.16.0.30) acl (group_allow (ผ่านใด ๆ ) group_strict (ผ่านในเครื่องไม่มี))มันดูดีมาก แต่เห็นได้ชัดว่าพร็อกซีที่ดีควรมีกฎดังกล่าวหลายกฎ - กฎเดียวสำหรับแต่ละ "รู" การค้นหา "รู" และการลงทะเบียนทีละรายการนั้นน่าเบื่อ แต่เช่นเคยมีวิธีแก้ปัญหาสำเร็จรูป - squidGuard - แอปพลิเคชันตัวกรองที่มีกฎชุดใหญ่ซึ่งโดยหลักการแล้วสามารถเติมได้แม้ตามกำหนดเวลา cron . เรากำลังศึกษาประเด็นนี้อยู่ == การตั้งค่า squidGuard == ตอนนี้เรามาลองติดตั้งและกำหนดค่า squidGuard กันดีกว่า นี่ไม่ใช่เรื่องยาก แต่คุณต้องระวัง ดังนั้น: # pkg_add -r squidGuard # cp /usr/local/etc/squid/squidGuard.conf.sample /usr/local/etc/squid/squidGuard.confไฟล์ squidGuard.conf เก็บการตั้งค่าทั้งหมด ซึ่งบางส่วนจะต้องได้รับการแก้ไขทันที ได้แก่: # ไฟล์ squidGuard.conf ... ไคลเอนต์ตัวอย่างแหล่งที่มา ( ip 172.16.0.0/16 ) ...มาผูก squidGuard กับ squid กัน - เพิ่ม 3 บรรทัดในไฟล์ squid.conf: เปลี่ยนเส้นทาง_บายพาสบน เปลี่ยนเส้นทาง_โปรแกรม /usr/local/bin/squidGuard -c /usr/local/etc/squid/squidGuard.conf เปลี่ยนเส้นทาง_เด็ก 10 squidGuard เก็บฐานข้อมูลการกำหนดค่าไว้ใน /var/db/squidGuard ก่อนการเปิดตัวครั้งแรกหรือหลังจากทำการเปลี่ยนแปลง จะต้องสร้างใหม่: # ปรับปรุงใหม่ # squidGuard -C ทั้งหมด # chown -R squid:squid /var/db/squidGuard # /usr/local/etc/rc.d/squid รีสตาร์ททุกอย่างเรียบร้อยดี แต่เมื่อลูกค้าพยายามไปยังไซต์ต้องห้าม เช่น http://3warez.com/ เราจะสังเกตเห็นเบรก ฉันต้องการที่จะได้รับข้อความที่เข้าใจได้บางอย่าง สำหรับสิ่งนี้เราต้องการ apache == การตั้งค่า apache == ดังที่กล่าวไปแล้ว เราต้องการ apache เพื่อแสดงข้อมูลเกี่ยวกับที่อยู่ที่ถูกบล็อกและเหตุผลในการบล็อก เราทำตามปกติ: # pkg_add -r apache22 # echo "apache22_enable="ใช่"" >> /etc/rc.confการตั้งค่า Apache อยู่ในไฟล์ /usr/local/etc/apache22/httpd.conf ก่อนเริ่มต้นคุณต้องตรวจสอบคำสั่ง DocumentRoot และ ServerName - ฉันจะละรายละเอียดเพราะ มีบทความมากมายบนอินเทอร์เน็ตเกี่ยวกับการตั้งค่าเซิร์ฟเวอร์นี้ เสร็จภายใน 1 วินาที มาเปิดตัวกัน: # echo "การเข้าถึงถูกปฏิเสธ" > /usr/local/www/apache22/data/index.html # /usr/local/etc/rc.d/apache22 เริ่มต้นมาแก้ไขการกำหนดค่า squidGuard.conf กันสักหน่อย: # ที่ส่วนท้ายสุดของไฟล์ acl ( ..... ค่าเริ่มต้น ( เปลี่ยนเส้นทาง http://172.16.0.1/index.html ) )== การกำหนดค่า dhcpd == และตอนนี้เราใกล้จะเสร็จสมบูรณ์แล้ว เครือข่ายได้รับการกำหนดค่าและทำงานได้อย่างยอดเยี่ยม ทุกอย่างอยู่ภายใต้การควบคุม ทุกอย่างถูกจำกัดอย่างเคร่งครัด แต่หลังจากทำเสร็จแล้ว ก็ถึงเวลาเสนอแครอทให้กับลูกค้า - ในรูปแบบของการกระจายที่อยู่ DHCP โดยอัตโนมัติ แน่นอนว่าผู้ดูแลระบบที่ดีก็จะโกงที่นี่เช่นกัน - เขาจะแจกจ่ายที่อยู่ผ่าน MAC เท่านั้น แต่เราจะนำสิ่งต่าง ๆ ไปในมุมมอง # pkg_add -r isc-dhcp3-server # cp /usr/local/etc/dhcpd.conf.sample /usr/local/etc/dhcpd.confเพิ่มบรรทัดต่อไปนี้ในไฟล์ /etc/rc.conf: dhcpd_enable="ใช่" dhcpd_flags="-q" dhcpd_ifaces="em1"คุณต้องแก้ไขการกำหนดค่าที่สำคัญที่สุด /usr/local/etc/dhcpd.conf: ตัวเลือกชื่อโดเมน "example.com"; ตัวเลือกโดเมนเนมเซิร์ฟเวอร์ 172.16.0.1; ตัวเลือกซับเน็ตมาสก์ 255.255.255.0; ค่าเริ่มต้นเวลาเช่า 3600; เวลาเช่าสูงสุด 86400; ddns-update-style ไม่มี; ซับเน็ต 172.16.0.0 netmask 255.255.0.0 ( ช่วง 192.16.0.11 172.16.0.15; เราเตอร์ตัวเลือก 172.16.0.1; )เปิดไฟฟ้า: # /usr/local/etc/rc.d/isc-dhcpd เริ่มต้นนั่นอาจเป็นทั้งหมดที่สำคัญที่สุด บทความนี้ไม่ได้เสแสร้งว่าให้ข้อมูลครบถ้วนสมบูรณ์ แต่อธิบายโดยย่อถึงขั้นตอนที่ต้องทำให้เสร็จเพื่อให้เซิร์ฟเวอร์กลับสู่สภาพการทำงาน เพิ่มเติม - ปรับแต่งและปรับแต่งอีกครั้งเท่านั้น อย่าลืมว่านี่ไม่ใช่วิธีเดียวในการกำหนดค่าเซิร์ฟเวอร์ - ใน Unix มีทางเลือกอื่นเสมอและคุณสามารถใช้แอปพลิเคชันที่แตกต่างไปจากเดิมอย่างสิ้นเชิง

คุณมีเครือข่ายท้องถิ่นของคุณเอง
คุณตัดสินใจว่าถึงเวลาแล้วที่คุณจะเชื่อมต่ออินเทอร์เน็ตผ่านสายเฉพาะ เป็นสิ่งที่ดีอะไรวันนี้ฉันจะลองเพื่อคุณ
ช่วยหน่อยในเรื่องนี้ :) มาเริ่มกันที่การติดตั้ง FreeBSD เนื่องจากเราหมกมุ่นอยู่กับมัน
ความปลอดภัยต้องดูแลล่วงหน้า :) ปิดทุกอย่างตอบทุกที่
ไม่แน่นอน :) เราจะเปิดใช้งานสิ่งที่เราต้องการในภายหลัง :) ระบบจะถามคุณระหว่างการติดตั้งระบบ
“คุณต้องการดูคอลเลกชันของพอร์ตหรือไม่” ตอบว่าใช่ ตอนนี้เราจะติดตั้งเพิ่มเติม
ซอฟต์แวร์. ไปที่ส่วนความปลอดภัยแล้วเลือกโปรแกรมชื่อ PortSentry เราจะต้องใช้ในภายหลัง :) หลังจากติดตั้งเราจะต้องคอมไพล์
เคอร์เนล... ลองใช้เคอร์เนล GENERIC สำเร็จรูปเป็นพื้นฐาน มันอยู่ที่ /sys/i386/conf เขียนเคอร์เนลใหม่สำหรับระบบอย่างระมัดระวัง ลบทุกสิ่งที่ไม่จำเป็นออก (เช่น ลบการรองรับ USB, COM, LPT, SCSI, RAID และอุปกรณ์อื่น ๆ ที่คุณจะไม่ใช้ในระบบ คุณไม่จำเป็นต้องใช้ USB คุณจะไม่เชื่อมต่อกับอุปกรณ์เราเตอร์ที่รองรับ USB และทำเช่นเดียวกันกับอย่างอื่น โดยเฉพาะอย่างยิ่งเนื่องจากจะเป็นการเพิ่มประสิทธิภาพของระบบโดยรวม... คุณจะพบข้อมูลโดยละเอียดเพิ่มเติมในไฟล์ LINT) . ถัดไป เพิ่มบรรทัดต่อไปนี้ในเคอร์เนลใหม่:

ตัวเลือก IPFIREWALL #เปิดใช้งานการสนับสนุนไฟร์วอลล์
ตัวเลือก IPDIVERT #ตัวเลือกนี้จำเป็นสำหรับ NAT ในการทำงาน
ตัวเลือก IPFIREWLL_VERBOSE #ให้ไฟร์วอลล์เขียนบันทึก
ตัวเลือก IPFIREWALL_VERBOSE_LIMIT=10 #จำกัดรายการบันทึกสำหรับเหตุการณ์
ตัวเลือก TCP_DROP_SYNFIN #ไม่รับแพ็กเก็ตซ้าย
ตัวเลือก ICMP_BANDLIMIT #นี่คือตัวเลือกในการป้องกันการโจมตี DOS :)
ตัวเลือก ACCEPT_FILTER_DATA #ฉันมักจะเปิดใช้งานตัวเลือกนี้ :)
ตัวเลือก TCP_RESTRICT_RST #ควรเปิดใช้งานตัวเลือกนี้ด้วย

config proxy, cd ../../compile/proxy, พึ่งพา, สร้าง, ทำการติดตั้ง

เพียงเท่านี้ ขอแสดงความยินดี คุณเพิ่งรวบรวมเคอร์เนลของคุณ หากมีอะไรใช้งานไม่ได้ ให้ทำการคอมไพล์
หยุด - ดูสิบางทีคุณอาจทำอะไรผิด สิ่งนี้เกิดขึ้นและลองสร้างเคอร์เนลใหม่อีกครั้ง จากนั้นเราจะรีบูทระบบ และเครื่องของเราควรจะบู๊ตด้วยเคอร์เนลใหม่ หากไม่เป็นเช่นนั้น
อย่าเพิ่งอารมณ์เสีย - ระบบสามารถบู๊ตด้วยเคอร์เนลเก่าได้ การทำเช่นนี้เมื่อ
boot เมื่อมีข้อความว่าถ้าคุณต้องการเข้าสู่โหมดการกู้คืน ให้กด Enter ตรงนั้น
ให้คำสั่ง unload จากนั้นโหลด kernel.old และบูต เพียงเท่านี้ระบบก็จะบู๊ตด้วยเคอร์เนลตัวเก่า

ตามค่าเริ่มต้น ระบบจะรอ 9 วินาทีก่อนบูต
เราไปที่โฟลเดอร์ /boot และแก้ไขไฟล์ loader.conf ที่นั่น เราต้องเพิ่มบรรทัดต่อไปนี้ที่นั่น
boot_autodelay=0 ซึ่งทำเพื่อให้ระบบไม่รอการตอบสนองของผู้ใช้เป็นเวลา 9 วินาที แต่เราต้องการให้ระบบรีบูตระบบจะออนไลน์อย่างรวดเร็ว :) ต่อไปเราไปที่
/etc และเริ่มแก้ไขไฟล์ rc.conf ด้านล่างนี้เป็นตัวอย่างพร้อมความคิดเห็น เพื่อให้คุณสามารถเข้าใจได้
มันจะไม่ใช่เรื่องยาก:

hostname="zlobix.evil.com" #ชื่อเครือข่ายของเครื่องของคุณ
firewall_enable="YES" #เปิดใช้งานไฟร์วอลล์
firewall_script="/usr/local/etc/firewall.conf" #path ไปยังไฟล์ที่มีนโยบายไฟร์วอลล์
firewall_type="close" #ประเภทไฟร์วอลล์ประเภทนี้ห้ามทุกอย่าง!
firewall_logging="YES" #มอบหมายให้ไฟร์วอลล์ของเราเขียนบันทึก
natd_program="/sbin/natd" #ไปที่ natd demon
natd_interface="ed0" #อินเทอร์เฟซใดที่ NAT หยุดทำงาน อินเทอร์เฟซควรหันหน้าไปทาง ISP (Inetrnet Service Provader)
tcp_extension="NO" #ปิดใช้งานส่วนขยายที่เป็นอันตรายสำหรับ TCP/IP
tcp_keepalive="YES" #ตั้งค่าตัวเลือกนี้ เราเตอร์ของคุณจะตื่นน้อยลง
ไวต่อการโจมตีของ DOS
tcp_drop_synfin="YES" #ไม่รับแพ็กเก็ตซ้าย
tcp_restrcit_rst="YES" #ฉันจำไม่ได้ว่าหมายถึงอะไร แต่ฉันแนะนำให้เปิดใช้งาน :)
icmp_drop_redirect="YES" #เราไม่ทำงานกับ ICMP
แพคเกจ
icmp_log_redirect="YES" #เราบันทึกแพ็กเก็ต ICMP
ifconfig_lo0="inet 127.0.0.1" #การกำหนดค่าที่อยู่ลูปแบ็ค
ปล่อยไว้ตามที่ระบุไว้ที่นี่

ifconfig_ed0="inet 167.65.89.147 nemask 255.255.255.192" #ในตัวอย่างนี้ เรามีสิ่งนี้
อินเทอร์เฟซหันหน้าไปทางผู้ให้บริการ โดยที่ ed0 คือชื่ออินเทอร์เฟซ inet
IP - ที่อยู่ที่ออกโดยผู้ให้บริการ, ซับเน็ตมาสก์ netmask

ifconfig_ed1="inet 192.168.0.1 netmask 255.255.255.0" #configuring อินเทอร์เฟซภายในนั่นคือซึ่งหันหน้าไปทางเครือข่ายท้องถิ่น

ifconfig_ed1_alias0="inet 192.168.1.1 netmask 255.255.255.0" # คุณสามารถเชื่อมต่ออินเทอร์เฟซเครือข่ายหลายรายการพร้อมกันได้
ที่อยู่ IP (นามแฝง IP) ในตัวอย่างนี้ สมมติว่าเครือข่ายของเราถูกแบ่งตามตรรกะออกเป็นสองเครือข่ายย่อย 192.168.0.0/24 และ 192.168.1.0/24 โดยที่ /24
- รหัสมาสก์โดยใช้วิธี CIDR ซึ่งสอดคล้องกัน
ซับเน็ตมาสก์ 255.255.255.0

syslogd_enable="YES" #เปิดใช้งาน daemon นั้น
จะรับผิดชอบบันทึก
inetd_enable="NO" #ปิดการใช้งานบริการนี้แน่นอน!
name_enable="NO" #ปิดอันนี้ด้วย คุณจะไม่ได้ใช้เราเตอร์ของคุณเป็นเซิร์ฟเวอร์ DNS :)
nfs_client_enable="NO" # พารามิเตอร์ด้านล่างสามตัวมีหน้าที่รับผิดชอบในการรองรับ Network File System คำแนะนำของฉันคือปิดมันด้วย
nfs_server_enbale = "ไม่"
nfs_reserved_port_only = "ไม่ใช่"
fsck_y_enable="ใช่"
portmap_enbale = "NO" #ปิดการใช้งาน portmapper
sshd_enbale="YES" #Enable ssh เพื่อให้เราสามารถจัดการเราเตอร์ของเราจากระยะไกล :)
sshd_programm="/usr/sbin/sshd/" #path ไปยัง ssh daemon
sshd_flags="" #Sshd แฟล็กเริ่มต้น หากคุณไม่ทราบ ให้ปล่อยไว้เหมือนเดิม
defaultrouter="167.65.89.1" #อัปสตรีมเราเตอร์ของผู้ให้บริการของเรา
getaway_enbale="YES" #เปิดใช้งานเกตเวย์บนเครื่องของเรา
icmp_bmcastecho="NO" #เราตัดการตอบสนองต่อข้อความสะท้อนของโปรโตคอล ICMP ซึ่งจะช่วยให้เราไม่ต้องกังวล :)
cron_enable="NO" #ฉันไม่รู้ แต่คนส่วนใหญ่เปิด Cron แต่ฉันปิดมันเพราะฉันไม่ต้องการมันบนเราเตอร์จริงๆ...
clear_tmp_enable="YES" #ล้างไดเร็กทอรี tmp ทุกครั้งที่บูตระบบ
lpd_enable="NO" #คุณจะไม่สามารถพิมพ์จากเราเตอร์ได้เช่นกัน ดังนั้นควรตัดออกด้วย
usbd_enable="NO" #ปิดการใช้งาน daemon เพื่อรองรับอุปกรณ์ USB
sendmail_enable="NO" #ตัด sendmail ซึ่งเป็นที่ที่รั่วที่สุดใน FreeBSD พวกเขาพบข้อผิดพลาดอยู่ตลอดเวลา :))))
kern_securelevel_enable="YES" #เปิดใช้งานความปลอดภัย
kern_securelevel="0" #ตั้งค่าประเภทความปลอดภัย

หลังจากที่เราจัดการกับ rc.conf แล้ว เราจำเป็นต้องกำหนดค่าเราเตอร์ของเราให้ทำงานกับ DNS โดยเปิดไฟล์ resolv.conf ในโฟลเดอร์เดียวกันแล้วเขียนสิ่งนี้ไว้ที่นั่น:

nameserver="167.65.88.18" #DNS ที่อยู่เซิร์ฟเวอร์ของผู้ให้บริการของเรา
nameserver="167.65.88.17" #Address ของเซิร์ฟเวอร์ DNS สำรองของผู้ให้บริการของเรา

ตามที่คุณเข้าใจแล้ว หลังจาก nameserver="" จะถูกระบุในเครื่องหมายคำพูด
ที่อยู่ IP ของเซิร์ฟเวอร์ DNS เป็นการดีกว่าที่จะไม่เพิ่มเซิร์ฟเวอร์ DNS ให้กับเครือข่ายท้องถิ่น พระเจ้าปกป้องสิ่งที่ดีที่สุด 🙂 มันมาถึง ssh
เราจำเป็นต้องรักษาความปลอดภัย 🙂 และเพิ่มความคุ้มครอง
ไปที่โฟลเดอร์ /etc/ssh แล้วเปิด sshd_config และเราแก้ไขสิ่งต่อไปนี้:

#sshd_config
พอร์ต 666 #พอร์ตนี้ทำให้ ssh สนุกสำหรับเรา :)
โปรโตคอล 2 #เราใช้วิธีการถ่ายโอนข้อมูลที่ปลอดภัยยิ่งขึ้น
PermitRootLogin no #Disable ความสามารถสำหรับผู้ใช้รูทในการเข้าสู่ระบบ ตามความต้องการของเรา เราจะสร้างผู้ใช้พิเศษขึ้นมา :)
PrintLastLog ใช่ #แสดงวันที่เข้าสู่ระบบครั้งล่าสุด
PermitEmptyPasswords ไม่ #ห้ามการเข้าสู่ระบบของผู้ใช้ด้วยรหัสผ่านที่ว่างเปล่า

หลังจากที่เราเข้าใจแล้ว เราก็ไปที่ไฟร์วอลล์กัน...