Freebsd 게이트웨이 설치. FreeBSD 기반 인터넷 게이트웨이 설정. iftop을 사용하여 freebsd의 네트워크 활동 분석

이 기사에서는 방화벽 설치를 통해 인터넷 게이트웨이 역할을 하고 로컬 네트워크에서 mac 주소의 정적 arp 테이블을 지원하는 FreeBSD 기반 라우터를 설정하는 방법에 대해 설명합니다. 특히 FreeBSD 4.0에 포함된 최신 버전에서 오류를 수정하고 인터페이스에서 대역폭을 제한하는 올바른 기능(bw 옵션과 함께 파이프 사용)을 추가한 이후로 수년 동안 FreeBSD에서 충실하게 서비스를 제공해 온 IPFW에 대해 이야기하겠습니다. 세 개의 네트워크 카드가 있는 라우터가 있다고 가정해 보겠습니다. 그 중 하나(vx0, IP 200.200.200.1)는 인터넷을 향하고 두 번째(vx1, IP 200.200.200.2)는 로컬 네트워크를 향합니다. 실제 18개의 IP 주소(서브넷 200.200.200.0/28 넷마스크 255.255.255.240). 세 번째 네트워크 카드(vx2 IP 192.168.1.1 및 네트워크 192.168.1.0/28)는 이웃 사무실의 10Mb 네트워크에 연결됩니다. 우리에게 설정된 작업은 다음과 같습니다. 1. 포트 135,137,139를 통해 외부에서 내부 네트워크에 대한 액세스를 차단합니다. 2. 로컬 네트워크 사용자가 메일 작업을 수행하고 다른 회사의 WWW, FTP 서버를 사용하여 브라우저에서 작업할 수 있도록 합니다. 3. 라우터에서 SYN Flood, ICMP Flood와 같은 공격 가능성을 차단합니다. 4. 로컬 네트워크 내에서만 이 WWW 서버에 제출된 보고서 작업에 사용되는 회사 WWW, FTP 서버(200.200.200.5)에 대한 액세스를 닫고 IP 190.190.190.5를 가진 지점에서 액세스합니다. 5. 이 라우터 구성을 위한 공개 액세스 특정 시스템 관리자 호스트에서. 6. Vasya가 www.playboy.com에서 의심스러운 콘텐츠 사진을 다운로드하는 데 한 달 내내 소비했다는 사실을 나중에 증명하기 위해 로컬 네트워크의 IP 주소로 트래픽을 계산합니다. 7. 같은 건물에 있고 10Mb로 우리 라우터에 연결된 회사의 친숙한 클라이언트에 대해 세 번째 네트워크 카드에서 트래픽을 64Kb로 제한하고 해당 클라이언트 측에서 우리 회사 로컬 네트워크에 대한 액세스를 차단합니다. 그럼 시작해 보겠습니다. 1. 시작된 스크립트에 대한 커널 및 옵션을 구성합니다. 다음 옵션을 커널에 입력해야 합니다. 옵션 IPFIREWALL(커널에서 패킷을 필터링하기 위한 코드 포함) 옵션 IPFIREWALL_VERBOSE(필터링 규칙 및 패킷 전달에 따라 로그를 유지하는 기능 포함) 옵션 IPFIREEWALL_VERBOSE_LIMIT=10(숫자 목록 제한) syslog가 넘치지 않도록 로그에 기록된 패킷) 옵션 TCP_DROP_SYNFIN(SYN 및 FIN이 포함된 TCP 패킷 삭제) 결과적으로 시스템이 재부팅되면 기본적으로 모든 IP 트래픽 통과를 차단하는 방화벽이 제공됩니다. 모든 인터페이스. 다음으로, 사용자가 작업하는 데 필요한 TCP 또는 UDP 포트만 여는 규칙을 정의하겠습니다. 다른 접근 방식("먼저 모든 것을 연 다음 닫습니다")을 따르는 경우 커널에서 다음 옵션을 지정해야 합니다: options IPFIREWALL_DEFAULT_TO_ACCEPT /etc/defaults/rc.conf에서 다음을 지정합니다. : tcp_extensions="NO" (RFC1323 TCP 확장에서 "위험한" 확장을 비활성화) tcp_drop_synfin="YES" (SYN + FIN 삭제) icmp_drop_redirect="YES" (리디렉션된 ICMP 패킷 무시) icmp_log_redirect="YES" (ICMP REDIRECT 로깅 활성화) Firewall_enable="YES"(방화벽 사용 활성화) 2. IPFW 구성. 이제 IPFW 규칙 작성을 시작해 보겠습니다. 구문에 대한 더 자세한 설명은 핸드북이나 man ipfw에서 찾을 수 있습니다. 자체 구성("회사")을 생성하므로 이를 rc.firewall에 설명합니다. # 네트워크 및 인터페이스를 설명합니다. fw="200.200.200.1" local="200.200.200.2" client="192.168.1.1" net ="200.200.200.0/28" Mask="255.255.255.255.240" # 로컬 인터페이스의 트래픽 허용 $(fwcmd) add pass all from any to any via lo0 # 로컬 네트워크 내에서만 트래픽 허용 $(fwcmd) add pass all from any to any via vx1 # 조각화된 패킷의 통과를 거부 $(fwcmd) add denial icmp from any to any frag # ICMP 패킷의 통과 허용 $(fwcmd) add pass ICMP from any to any # SMTP 프로토콜 $(fwcmd) add pass tcp from any to any 25 out $(fwcmd) add pass tcp from any 25 to any out # HTTPS 프로토콜 작업 허용 $(fwcmd) add pass tcp from any to any 443 out $( fwcmd) add pass tcp from any 443 to any out # 회사 내부 서버를 통한 외부 작업을 금지합니다. $(fwcmd) add pass tcp from 199.199.199.10 to 200.200.200.5 80 via vx0 $(fwcmd) add pass tcp from 200.200.200.5 80 to 199.199.199.10 via vx0 # 내부 회사 서버로부터의 외부 작업을 금지합니다. $(fwcmd) add 거부 tcp from any to 200.200.200.5 80 in via vx0 # HTTP 프로토콜 작업 허용 $(fwcmd) add pass tcp from any to any 80 out via vx1 $(fwcmd) add pass tcp from any 80 to any out via vx1 # # 우리 회사의 로컬 네트워크에서만 모든 프로토콜을 통한 작업 허용 $(fwcmd) add all from any to any via vx1 # DNS 서버 작업 허용 $(fwcmd) add pass udp from any to any 53 $(fwcmd) add pass udp from any 53 to any # NEWS 서버 작업 허용 $(fwcmd) add pass udp from any to any 119 out via vx1 $(fwcmd) add pass udp from any 119 to any out via vx1 # POP3 프로토콜을 통한 메일 수집 허용 $(fwcmd) add pass udp from any to any 110 $(fwcmd) add pass udp from any 110 to any # FTP 서버 작업 허용 # TCP 프로토콜의 포트 20은 21개 포트 외에 # 데이터 전송에 사용됩니다. $(fwcmd) add pass tcp form any 21 to any $(fwcmd) add pass tcp from any to any 21 $(fwcmd) add pass tcp from any 20 to any $(fwcmd) add pass tcp from any to any 20 # 허용 관리자의 홈 컴퓨터에서 SSH를 통해 액세스 # IP 200.200.200.15 $(fwcmd) add pass tcp from 200.200.200.15 22 to (isp) $(fwcmd) add pass tcp from (isp) to 200.200.200.15 22 # 트래픽 제한 from 우리 회사의 로컬 네트워크 #에 대한 네트워크 vx2 카드 $(fwcmd) vx1을 통해 192.168.1.0/24에서 $(net):$(mask)까지 모두 거부 $(fwcmd) 추가 $(net)에서 모두 거부: $(mask) to 192.168.1.0/24 via vx1 # vx2 인터페이스의 기본 TCP 포트에서 작업 허용 $(fwcmd) add pass tcp from 192.168.1.0/24 to any 25 via vx2 $(fwcmd) add pass tcp from any vx2 $(fwcmd)를 통해 25에서 192.168.1.0/24로 vx2 $(fwcmd)를 통해 192.168.1.0/24에서 임의의 110으로 tcp를 전달 추가 vx2 $(fwcmd)를 통해 임의의 110에서 192.168.1.0/24로 tcp를 전달 추가 vx2 $(fwcmd)를 통해 192.168에서 53으로 udp를 전달합니다. vx2 $(fwcmd)를 통해 53에서 192.168.1.0/24로 udp를 전달합니다. vx2 $를 통해 192.168.1.0/24에서 80으로 tcp를 전달합니다. (fwcmd) add pass tcp from any 80 to 192.168.1.0/24 via vx2 # vx2 인터페이스의 대역폭을 64Kb로 제한합니다. # 들어오는 트래픽의 경우 $(fwcmd) vx0을 통해 임의에서 임의의 파이프 1 IP 추가 $(fwcmd) 추가 파이프 1 구성 bw 64Kbit/s # vx2 인터페이스의 대역폭을 64Kb로 제한합니다. # 나가는 트래픽 $(fwcmd) vx0을 통해 모든 외부로 파이프 2 IP 추가 $(fwcmd) 파이프 2 구성 bw 64Kbit/s 추가 규칙을 확인하려면 널리 사용되는 TCP/IP NMAP 스캐너(FreeBSD에 포함됨)를 사용할 수 있습니다. ) 예를 들어, 네트워크 주소 범위 밖에 있는 동안 nmap 200.200.200.1 또는 nmap 200.200.200.2 명령을 제공하거나 ISP에 이에 대해 문의합니다. 3. MAC 주소 스푸핑 방지 네트워크 범위 200.200.200.0/28 내에서 합법적인 TCP/IP 패킷으로 가장하여 외부에서 로컬 네트워크에 들어갈 수 있는 IP 주소가 포함된 패킷을 수락할 가능성으로부터 라우터를 보호해야 합니다. 이런 일이 발생하더라도 이 경우에는 ISP의 네트워크 카드 및 라우터의 MAC 주소에 단단히 연결된 IP 주소 테이블이 있습니다. 때때로 이것은 호스트의 IP 주소를 예를 들어 소유자가 휴가 중이거나 거물인 다른 PC의 주소로 변경하는 부도덕한 직원에 대한 조치로 필요합니다. 그에게 떨어질 것입니다;) 먼저 MAC 주소 테이블을 만들어야 합니다. 해당 테이블의 형식은 petya 00:20:af:4a:3e:e3 vasya 00:20:fg:3a:3e:21 sasha 00:20: fg:3a:3e:21 Marina 00:20:fg:3a:3e:21 /etc/ethers와 같은 파일에 저장합니다. 호스트의 이더넷 주소를 찾으려면 arp -a를 입력하면 됩니다. 라우터에서 arp -f /etc/ethers를 실행하면 ARP 프로토콜이 실행 중일 때 네트워크 카드의 IP 주소와 MAC 주소 간의 대응에 대한 모든 정보가 /etc/ether 파일에서 가져와 고정됩니다. 이 프로세스는 라우터에서 arpwatch를 실행하고(FreeBSD 포트에서 사용 가능) 위 형식의 name_hosts IP_adress 및 /etc/ethers 쌍에 대한 설명과 함께 각 호스트에 /etc/hosts 파일을 만들어 자동화할 수 있습니다. IP 주소가 스푸핑되면 arpwatch는 무슨 일이 일어났는지 설명하는 편지를 보내고 arp 테이블은 고정됩니다. 4. 통계를 설정합니다. 계층화를 생성하기 위해 우리는 FreeBSD 패키지에 포함된 ipfm을 사용할 것입니다. 설치하는 동안 /usr/local/etc/rc.d에 ipfm.sh 파일이 생성되고 /usr/local/etc에 ipfm.conf 파일이 생성됩니다. 이것이 바로 우리가 편집해야 할 내용입니다. 그럼 시작하겠습니다: ##### FIRST LOGGING CONFIGURATION ##### # 통계를 수집하는 내부 네트워크를 설명하겠습니다. LOG 200.200.200.0/255.255.255.240 NOT WITH 200.200.0.0/255.255.0.0 # 이름 지정 통계 수집용 파일에 FILENAME / var/log/ipfm/local_net-%d.%m-%H.%M.%S # 로그 기록 기간을 설정합니다. 여기서는 로그가 # 매주 업데이트됩니다. day SORT IN RESOLVE ##### 두 번째 로깅 구성 ##### NEWLOG # 클라이언트의 내부 네트워크를 설명하겠습니다. 192.168.1.0/24 서브넷 192.168.1.0/255.255.255.0 NOT WITH 192.168.0.0/255.255.0.0 # 이 경우 로그 기록 기간을 1일로 설정 FILENAME /var/log /ipfm/ipfm-%d.%m-%H.%M.%S # 1주일 동안 로그인 TIME 1일 SORT IN RESOLVE 프로토콜 및 전송된 패킷 수에 대한 더 자세한 정보가 필요하면 ipfw에서 count 옵션을 사용할 수 있습니다. # HTTP 프로토콜을 통해 들어오고 나가는 트래픽을 계산합니다. ipfw add count tcp from any to any 80 in via vx0 ipfw add count tcp from any to any 80 out via vx0 # 클라이언트용 HTTP 프로토콜을 통해 들어오고 나가는 트래픽 계산 ipfw add count tcp from any to any 80 in via vx2 ipfw add count tcp from any to any 80 out via vx2 ipfw add count tcp from any to any 21 in via vx2 ipfw add count tcp from any to any 21 out via vx2 특정 IP 주소의 통계에 관심이 있는 경우 간단히 다음과 같이 지정하면 됩니다. ipfw add count tcp from any to 200.200.200.3 in via vx1 여기서 200.200. 200.3은 www.playboy.com에서 매월 그래픽 파일을 다운로드하는 Vasya와 같은 사용자의 IP 주소입니다. 예를 들어 다음과 같은 방법으로 이 사이트에 대한 액세스를 차단할 수도 있습니다. ipfw add log 액세스 시도 로그와 함께 www.playboy.com에 대한 모든 것을 거부합니다. 그래픽 통계는 라우터에서 실행되는 snmp 에이전트를 사용하는 MRTG(Multi Router Transfeer Grapheer) 패키지를 사용하여 구축됩니다. 라우터에 공격 탐지 도구를 설치하는 것도 필요하지만 이는 다른 기사의 주제입니다.

자신만의 로컬 네트워크가 있고,
이제 전용선을 통해 인터넷에 연결해야 한다고 결정했습니다. 글쎄요, 정말 다행이네요. 오늘은 제가 당신을 위해 노력하겠습니다.
이것에 대해 조금 도와주세요 :) 우리는 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 #이 옵션도 활성화되어야 합니다

구성 프록시, cd ../../compile/proxy, make dependency, make, make install

그게 다입니다. 축하합니다. 방금 커널을 컴파일했습니다. 뭔가 작동하지 않으면 컴파일하세요.
중지됨 - 보세요, 뭔가 잘못했을 수도 있습니다. 이런 일이 발생하면 커널을 다시 재구축해 보세요. 그런 다음 시스템을 재부팅합니다. 그리고 우리 머신은 새로운 커널로 부팅되어야 합니다. 그렇지 않은 경우
이런 일이 일어났으니 당황하지 마세요. 시스템은 기존 커널로 부팅할 수 있습니다. 이렇게 하려면 언제
부팅 후 복구 모드로 들어가려는 경우 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" #방화벽 정책이 포함된 파일 경로
Firewall_type="close" #방화벽 유형, 이 유형은 모든 것을 금지합니다!
Firewall_logging="YES" #방화벽에 로그 작성 작업을 요청합니다.
natd_program="/sbin/natd" #natd 악마에게로 이동
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 - 공급자가 발급한 주소, 넷마스크 서브넷 마스크.

ifconfig_ed1="inet 192.168.0.1 netmask 255.255.255.0" # 내부 인터페이스 구성, 즉 로컬 네트워크를 향하는 구성

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" # 해당 데몬을 활성화합니다.
로그를 담당하게 됩니다
inetd_enable="NO" #이 서비스를 확실히 비활성화하세요!
명명된_enable="NO" # 이것도 끄면 라우터를 DNS 서버로 사용하지 않게 됩니다 :)
nfs_client_enable="NO" # 아래 세 매개변수는 네트워크 파일 시스템 지원을 담당합니다. 이 매개변수도 끄는 것이 좋습니다.
nfs_server_enbale="아니요"
nfs_reserved_port_only="아니요"
fsck_y_enable="예"
portmap_enbale="NO" #portmapper 비활성화
sshd_enbale="YES" #Ssh를 활성화하면 라우터를 원격으로 관리할 수 있습니다 :)
sshd_programm="/usr/sbin/sshd/" # ssh 데몬 경로
sshd_flags="" #Sshd 시작 플래그, 모르시면 그대로 두세요
defaultrouter="167.65.89.1" #우리 공급자의 업스트림 라우터
getaway_enbale="YES" #우리 머신에서 게이트웨이를 활성화합니다
icmp_bmcastecho="NO" #ICMP 프로토콜의 에코 메시지에 대한 응답을 차단합니다. 이렇게 하면 신경을 덜 쓸 수 있습니다 :)
cron_enable="NO" #모르겠지만 대부분의 사람들이 크론을 켜두는데 저는 공유기에서는 별로 필요하지 않아서 꺼두는데...
clear_tmp_enable="YES" #시스템이 부팅될 때마다 tmp 디렉터리를 지웁니다.
lpd_enable="NO" #라우터에서도 인쇄할 수 없으니 라우터도 잘라주세요
usbd_enable="NO" #USB 장치를 지원하도록 데몬을 비활성화합니다.
sendmail_enable="NO" #FreeBSD에서 가장 누출이 많은 곳인 sendmail을 차단하면 그들은 끊임없이 오류를 발견합니다 :))))
kern_securelevel_enable="YES" #보안 활성화
kern_securelevel="0" #보안 유형 설정

따라서 rc.conf를 처리한 후 DNS와 작동하도록 라우터를 구성해야 합니다. 이렇게 하려면 동일한 폴더에서 resolv.conf 파일을 열고 다음을 작성하십시오.

nameserver="167.65.88.18" #우리 공급자의 DNS 서버 주소
nameserver="167.65.88.17" #공급업체의 백업 DNS 서버 주소

이미 이해하셨듯이 nameserver="" 뒤에는 따옴표가 표시되어 있습니다.
DNS 서버 IP 주소. 로컬 네트워크에 DNS 서버를 추가하지 않는 것이 좋습니다. 하나님이 가장 잘 보호하십니다 🙂 SSH로 왔습니다.
우리는 그것을 보호해야 합니다 🙂 보호를 강화하고,
/etc/ssh 폴더로 이동하여 sshd_config를 엽니다. 그리고 다음을 편집합니다.

#sshd_config
포트 666 #이 포트는 SSH를 재미있게 만듭니다 :)
프로토콜 2 #보다 안전한 데이터 전송 방법을 사용합니다
PermitRootLogin no #루트 사용자 로그인 기능을 비활성화합니다. 필요에 따라 특수 사용자를 생성합니다 :)
PrintLastLog yes #마지막 로그인 날짜를 표시합니다.
PermitEmptyPasswords no #빈 비밀번호를 사용하는 사용자의 로그인을 금지합니다.

알아낸 후 방화벽으로 이동해 보겠습니다.

얼마 전까지만 해도 피시방에 인터넷 게이트를 설치해야 했던 일이 있었습니다. 카페에서는 이더넷 인터페이스가 있는 ADSL 모뎀과 고정 주소가 있는 50대의 컴퓨터를 위한 로컬 네트워크를 통해 인터넷에 액세스할 수 있었습니다. NAT가 포함된 일반 라우터를 구입하는 대신 게이트웨이를 설치하기로 결정했습니다. 라우터는 여전히 간단한 Linux를 실행하고 PC 기반 게이트웨이에는 훨씬 더 많은 기능이 있기 때문입니다. 게다가 컴퓨터가 너무 많아서 프록시 서버를 사용하여 웹 페이지를 캐시하면 트래픽이 어느 정도 절약되었습니다. 이 기계에는 256Mb RAM을 갖춘 Pentium2-600 수준 매개변수가 있었습니다. 전력이 약하고 신뢰성이 낮으며 유연성이 부족하여 주제를 벗어난 설치 옵션이 제거되었습니다. 또한 FreeBSD는 리소스 요구 사항이 낮고 안정적인 작동으로 인해 게이트에 이상적입니다. 내가 홈 제공업체로부터 아는 한, FreeBSD의 게이트는 최대 500-600mbit/sec의 대역폭에 쉽게 도달할 수 있습니다.

따라서 컴퓨터에 FreeBSD를 설치하고, NAT를 구성하고, 투명 프록시를 구성하는 것이 당연합니다.

설치에 대한 설명이 자세히 설명되어 있고 그림으로 설명되어 있으므로 독자를 지루하게 하지 않겠습니다.
설치 후 추가 옵션을 포함시켰습니다.

옵션 IPFIREWALL #방화벽 지원 추가
옵션 IPFIREWALL_VERBOSE #logging
options IPFIREWALL_VERBOSE_LIMIT=100 #로그 항목 수 제한
옵션 IPFIREWALL_DEFAULT_TO_ACCEPT #firewall은 기본적으로 "열림"입니다.
옵션 IPFIREWALL_FORWARD
옵션 IPDIVERT # 패킷 리디렉션 지원 활성화
options DUMMYNET #속도를 제한하는 데 필요할 수 있습니다.

커널을 재구축한 후 NAT를 활성화하기 위해 /etc/rc.conf를 편집해야 했습니다. NAT는 별도의 데몬으로 사용됩니다. 게이트웨이에는 2개의 네트워크 카드가 있었는데, 하나는 모뎀(브리지 모드로 구성)을 통해 인터넷에 연결되었고, 두 번째는 로컬 네트워크에 연결되었습니다.
따라서 첫 번째는 re0이고 213.230.x.x와 같은 주소를 가지며, 두 번째 rl0은 192.168.0.1과 같은 주소를 가집니다.

/etc/rc.conf 편집

defaultrouter=213.230.x.x # 기본 게이트웨이 지정
ifconfig_re0="inet 213.230.x.x netmask 255.255.255.252" #외부 인터넷 주소 설정
ifconfig_rl0="inet 192.168.0.1 넷마스크 255.255.255.0" #내부 주소 설정
Gateway_enable="YES" # 게이트웨이 모드 활성화
natd_enable="YES" #NAT 활성화
nat_interface="re0" # natable 인터페이스를 지정합니다.
nat_flags="-f /etc/natd.conf" #NAT 데몬 구성 파일
Firewall_enable="예"

네임서버 195.158.0.1
네임서버 195.158.0.3

저장하고 재부팅한 후(필수는 아니며 재부팅하지 않고도 인터페이스와 데몬을 올릴 수 있지만 모든 것이 어떻게 올라가는지 확인해야 함) 인터넷에서 로컬 시스템과 호스트에 핑을 보내 두 그리드 모두에서 가용성을 확인합니다.
이미 이 단계에서는 로컬 컴퓨터에서 인터넷을 사용할 수 있으며 추가로 구성해야 하는 유일한 것은 기본 게이트웨이 192.168.0.1을 가리키고 DNS 서버 줄에 192.168.0.1을 입력하는 것뿐입니다.

오징어를 설치할 차례입니다. 먼저 업데이트를 해보겠습니다.
업데이트가 성공적으로 완료되면 실제 설치를 진행합니다.

#cd /usr/ports/www/squid31/
#깨끗하게 설치

설치가 완료되면 /usr/local/etc/squid/squid.conf에 있는 squid 구성 파일을 편집하십시오.


# 검색 위치에서 (내부) IP 네트워크를 나열하도록 적응
# 허용되어야 한다
#여기에 프록시에 액세스할 수 있는 하위 그리드가 있습니다. 하위 그리드는 192.168.0.0이므로 그것만 남겨둡니다.
#acl localnet src 10.0.0.0/8 # RFC1918 가능한 내부 네트워크
#acl localnet src 172.16.0.0/12 # RFC1918 가능한 내부 네트워크
acl localnet src 192.168.0.0/24 # 네트워크 192.168.0.1-254 지정
#IPv6을 사용할 수 없음:acl localnet src fc00::/7 # RFC 4193 로컬 개인 네트워크 범위
#IPv6을 사용할 수 없음:acl localnet src fe80::/10 # RFC 4291 링크-로컬(직접 연결된) 시스템

acl SSL_ports 포트 443
acl Safe_ports 포트 80 # https
acl Safe_ports 포트 21 # ftp
acl Safe_ports 포트 443 # httpss
acl Safe_ports 포트 70 # 고퍼
acl Safe_ports 포트 210 # wais
acl Safe_ports port 1025-65535 # 등록되지 않은 포트
acl Safe_ports 포트 280 # https-mgmt
acl Safe_ports 포트 488 # gss-https
acl Safe_ports 포트 591 # 파일 메이커
acl Safe_ports 포트 777 # 다중화 https
acl CONNECT 메소드 CONNECT

#
# 권장되는 최소 액세스 권한 구성:
#
# localhost에서만 캐시mgr 접근을 허용합니다.
https_access 허용 관리자 localhost
https_액세스 거부 관리자

# 안전하지 않은 특정 포트에 대한 요청을 거부합니다.
https_액세스 거부 !Safe_ports

# 보안 SSL 포트가 아닌 다른 포트에 대한 CONNECT 거부
https_access 거부 CONNECT !SSL_ports

# 무고한 사람을 보호하기 위해 다음 내용은 주석 처리를 해제할 것을 강력히 권장합니다.
# 프록시 서버에서 실행되는 웹 애플리케이션
# "localhost"에서 서비스에 접근할 수 있는 사람은 로컬 사용자이다
#https_access 거부 to_localhost

#
# 클라이언트의 액세스를 허용하려면 여기에 자신만의 규칙을 삽입하세요.
#

# 로컬 네트워크로부터의 액세스를 허용하는 예제 규칙.
# ACL 섹션에서 localnet을 조정하여 (내부) IP 네트워크를 나열합니다.
# 브라우징이 허용되어야 하는 곳
https_access 로컬넷 허용
https_access는 localhost를 허용합니다

# 마지막으로 이 프록시에 대한 다른 모든 액세스를 거부합니다.
https_접속 모두 거부

# Squid는 일반적으로 포트 3128을 수신합니다 - 프록시가 중단될 포트
https_port 127.0.0.1:3128 3.1 이하 버전의 경우 #transparent를 차단합니다.

# 최소한 다음 줄을 사용하는 것이 좋습니다.
Hierarchy_stoplist cgi-bin ?

# 디스크 캐시 디렉터리를 추가하려면 다음 내용을 주석 해제하고 조정하세요.
캐시_디렉터리 ufs /var/squid/cache 500 16 256
캐시_메모리 256MB
# 첫 번째 캐시 디렉토리에 코어 덤프를 남겨둡니다
coredump_dir /var/squid/cache

# 이 위에 자신만의 Refresh_pattern 항목을 추가하세요.
새로고침_패턴 ^ftp: 1440 20% 10080
새로 고침_패턴 ^고퍼: 1440 0% 1440
Refresh_pattern -i (/cgi-bin/|?) 0 0% 0
새로고침_패턴 . 0 20% 4320

#/usr/local/sbin/squid -z

시작하자

#/usr/local/etc/rc.d/squid -시작

Squid가 성공적으로 실행되면 브라우저를 열고 192.168.0.1:3128 형식의 프록시를 지정한 다음 동일한 google.com 등을 열어보세요.
열렸나요? 좋습니다. /etc/rc.conf에 추가하세요.

squid_enable="예"

그리고 방화벽에 규칙을 추가하여 이를 투명하게 만듭니다.

ipfw는 192.168.0.0/24에서 fwd 192.168.0.1,3128 tcp를 80에 추가합니다.

그런 다음 클라이언트 컴퓨터의 브라우저에서 프록시를 제거하고 다른 페이지를 열려고 시도합니다. 동시에 프록시에 대한 호출을 기록하는 /var/log/squid/access.log 파일을 볼 수 있습니다. 모든 것이 작동하면 로그에 항목이 나타납니다. 축하합니다. 이제 클라이언트 컴퓨터의 모든 웹 요청이 투명하게 캐시되어 트래픽이 절약됩니다.
이것으로 초기 게이트 설정이 완료되었습니다.

UPD. 로컬 네트워크의 모든 사람이 아닌 일부 사용자에게 인터넷을 배포해야 하는 경우도 있습니다. 그런 다음 SQUID에 승인을 첨부할 수 있습니다. 이는 구성에 추가하여 수행됩니다.

auth_param 기본 프로그램 /usr/local/libexec/squid/ncsa_auth /usr/local/etc/squid/internet_users
auth_param 기본 하위 5
auth_param 기본 영역 Squid 프록시 캐싱 웹 서버
auth_param 기본 자격 증명ttl 2시간
auth_param 기본 대소문자 구분 꺼짐

ACL Squidusers Proxy_auth 필수

# htpasswd -c /etc/squid/internet_users 시너지스
새 비밀번호: *******
새 비밀번호를 다시 입력하세요: *******
사용자 synergix의 비밀번호 추가

-c 스위치는 비밀번호가 포함된 파일을 생성할 때 한 번만 지정해야 합니다. 앞으로는 이 키가 없는 사용자를 추가해야 합니다. 그래서 우리는 대략 다음과 같은 내용의 파일을 받았습니다.


시너지스:89XzEEI/P0e56

synergix는 사용자 이름이고 89XzEEI/P0e56은 비밀번호의 해시입니다. 기존 파일에 새 사용자를 추가하려면 다음 명령을 실행해야 합니다.

# htpasswd -b /etc/squid/internet_users second_user 1234567
사용자 second_user의 비밀번호 추가

어디 보자 -

# 고양이 /etc/squid/internet_users
sienrgix:89XzEEI/P0e56
second_user:EAJezc5eLXrV2

파일에 대한 권한 설정

# chmod 440 /usr/local/etc/squid/internet_users
# chown squid:squid /usr/local/etc/squid/internet_users

#/usr/local/etc/rc.d/squid 다시 로드

외부 세계와 통신하기 위해 소형 라우터에서 FreeBSD를 사용하는 것은 오랫동안 뛰어난 것이 아닙니다. 사용하기 쉽고 리소스가 적으며 유지 관리가 적은 운영 체제는 이러한 문제를 해결하는 데 거의 이상적입니다.

우리는 필요할 것입니다

하드웨어. 내부 네트워크를 인터넷에 연결하려면 Pentium III 600MHz 컴퓨터, 256MB RAM, 10GB HDD, 네트워크 카드 2개면 충분합니다. 소규모 사무실 네트워크(사용자 약 50명)의 본격적인 운영을 위해서는 128MB RAM을 갖춘 Pentium II 400MHz이면 충분합니다. 그러나 나중에 동일한 게이트웨이에 프록시 서버를 설치하려는 경우에는 더 높은 수준의 구성을 선택하는 것이 좋습니다.

운영 체제: FreeBSD 5.5 또는 6.1.

추가로:이 컴퓨터는 계속해서 사용해야 하기 때문에 케이스 내부에 팬을 추가하여 냉각을 위한 강제 공기 유입/배출을 권장합니다. 거의 모든 최신 ATX 케이스에서 이 작업을 수행할 수 있습니다.

필요한 모든 모듈이 운영 체제에 포함되어 있으므로 다른 것이 필요하지 않습니다.

네트워크 인터페이스 설정

운영 체제가 인식하는 네트워크 카드 인터페이스의 이름을 명확히 할 필요가 있습니다.

다음과 같은 내용이 나타나야 합니다.

rl0: 플래그=8843 mtu 1500
옵션=8
에테르 00:xx:xx:xx:xx:xx

상태: 활성
xl0: 플래그=8843mtu 1500
옵션=9
에테르 00:zz:zz:zz:zz:zz
미디어: 이더넷 자동 선택(100baseTX)
상태: 활성
plip0: 플래그=108810 mtu 1500
lo0: 플래그=8049 mtu 16384
inet6::1 접두사len 128


컴퓨터에는 인터페이스 이름이 rl0 및 xl0인 두 개의 네트워크 카드가 설치되어 있습니다.

우리의 경우 인터페이스 rl0은 외부 세계를 "감시"하고 xl0은 내부 네트워크를 "감시"합니다. 내부 인터페이스 IP 주소: 192.168.9.2, 서브넷 마스크 255.255.255.0, 인터페이스 이름 xl0; 외부 인터페이스 IP 주소 83.xxx.xxx.xxx, 서브넷 마스크 255.255.255.224, 인터페이스 이름 rl0.

/usr/src/sys/i386/conf 디렉토리에 있는 GENERIC 파일을 보면 특정 네트워크 주소에 해당하는 제조업체의 네트워크 카드를 찾을 수 있습니다.

# 더 /usr/src/sys/i386/conf/ 일반

그 안에 해당 줄이 있습니다.

장치 rl # RealTek 8129/8139

장치 xl # 3Com 3c90x (“부메랑”, “사이클론”)

따라서 rl0 인터페이스는 RealTek 8129/8139 네트워크 카드 및 해당 카드에 해당합니다. xl0 네트워크 인터페이스는 3Com 네트워크 카드에 해당합니다.

GENERIC 파일을 별도로 언급할 가치가 있습니다. FreeBSD 설치 시 기본적으로 설치되는 커널 구성 파일입니다. 지정된 네트워크 카드를 포함하여 가장 많이 사용되는 대부분의 장치를 시스템이 지원할 수 있도록 구성되어 있습니다. 커널에 대한 추가 수정 사항이 이 파일의 수정된 복사본에 구축되는 경우가 많습니다. 이 경우 우리가 할 일은 정확히 다음과 같습니다.

공급자의 게이트웨이는 기본적으로 83.xxx.xxx.1입니다.
네트워크에는 192.168.9.31, 192.168.9.32라는 사용자 컴퓨터가 있습니다.
우리 도메인은 (조건부) ourdomain.ru입니다.
호스트 이름(컴퓨터) – ourhost.ourdomain.ru.

네트워크 카드를 구성합니다. sysinstall 유틸리티(FreeBSD 5.5의 경우 /stand/sysinstall, FreeBSD 6.1의 경우 /usr/sbin/sysinstall)를 사용할 수 있습니다. 그러나 우리는 필요한 모든 매개변수를 알고 있으므로 프로세스를 단순화하고 시간을 절약하기 위해 해당 매개변수를 편집하여 매개변수를 설정하겠습니다. 구성 파일.

편집을 위해 거의 모든 UNIX 시스템에 존재하는 텍스트 편집기 vi를 사용합니다. 아직 편집기에 익숙하지 않은 관리자를 위해 Maxim Moshkov의 멋진 기사(http://www.lib.ru/unixhelp/vi.txt 및 http://www.lib.ru/unixhelp/vibegin)를 추천할 수 있습니다. txt.

FreeBSD의 네트워크 인터페이스 설정은 /etc/rc.conf 파일에 저장됩니다. 편집을 위해 엽니다.

# vi /etc/rc.conf

그리고 다음 줄을 추가하세요.

# 내부 인터페이스 설정
ifconfig_xl0="inet 192.168.9.2 넷마스크 255.255.255.0"
# 외부 인터페이스 설정
ifconfig_rl0="inet 83.xxx.xxx.xxx 넷마스크 255.255.255.224"
# 기본 공급자 게이트웨이를 설정합니다.
기본 라우터="83.xxx.xxx.1"
# 호스트 이름
호스트 이름="ourhost.ourdomain.ru"
# 서버가 라우터 역할을 함을 나타냅니다.
Gateway_enable="예"

그런 다음 컴퓨터를 재부팅합니다.

현재로서는 컴퓨터를 재부팅할 필요가 없습니다. 하지만 인터페이스가 올바르게 설치되어 작동하는지 확인하고 싶으므로 재부팅하는 것이 좋습니다.

로딩 후 다음을 확인합니다.

Ifconfig 명령 출력:

rl0: 플래그=8843 mtu 1500
옵션=8
inet6 fe80::215:58ff:fe3e:8fb1%rl0 prefixlen 64 범위 ID 0x1
inet 83.xxx.xxx.xxx 넷마스크 0xffffffe0 브로드캐스트 83.xxx.xxx.yyy
에테르 00:xx:xx:xx:xx:xx
미디어: 이더넷 자동 선택(100baseTX)
상태: 활성
xl0: 플래그=8843mtu 1500
옵션=9
inet6 fe80::20a:5eff:fe62:ade2%xl0 prefixlen 64 범위 ID 0x2
inet 192.168.9.2 넷마스크 0xffffff00 브로드캐스트 192.168.9.255
에테르 00:zz:zz:zz:zz:zz
미디어: 이더넷 자동 선택(100baseTX)
상태: 활성
plip0: 플래그=108810 mtu 1500
lo0: 플래그=8049 mtu 16384
inet6::1 접두사len 128
inet6 fe80::1%lo0 prefixlen 64 범위 ID 0x4
inet 127.0.0.1 넷마스크 0xff000000

내 생각에는 rc.conf 파일이 핵심 구성 파일이라고 할 수 있다. 시스템에서 사용하는 매우 많은 수의 매개변수가 이 파일에 해당 변수로 지정됩니다. 당사가 사용하는 네트워크 인터페이스, 방화벽 및 NAT에 대한 설정을 포함합니다.

게이트웨이 설정

우리는 FreeBSD의 기본 IPFW 방화벽을 사용할 것입니다. 이를 위해서는 시스템의 핵심을 일부 변경해야 합니다. 커널 재컴파일에 대해 추가 질문이 있는 경우 추가 자료(http://freebsd.org.ru/how-to/kernelconfig.html)를 읽어 보시기 바랍니다.

적절한 아키텍처에 대한 커널 소스를 사용해야 합니다. 우리 컴퓨터의 아키텍처는 i386 플랫폼을 기반으로 하기 때문에 커널은 플랫폼에 맞게 컴파일되어야 합니다. 다른 플랫폼의 컴퓨터 소유자의 경우 관련 문헌을 참조하는 것이 좋습니다.

커널 소스는 기본적으로 /usr/src/sys/i386/conf 디렉토리에 있습니다. 따라서 다음 디렉토리로 이동합니다.

# cd /usr/src/sys/i386/conf

일반적으로 기본 커널 옵션이 포함된 GENERIC 파일이 수정됩니다. 이렇게 하려면 다음 파일의 복사본을 만드세요.

# cp 일반 커널

편집을 위해 새 파일 ourkernel을 엽니다.

그리고 다음 옵션을 추가하세요:

#
옵션 IPFIREWALL #방화벽
옵션 IPFIREWALL_VERBOSE ?
#syslogd에 로깅을 활성화합니다(8)
옵션 IPFIREWALL_FORWARD ?
#투명 ​​프록시 지원 활성화
options IPFIREWALL_VERBOSE_LIMIT=100 #상세한 내용 제한
옵션 IPFIREWALL_DEFAULT_TO_ACCEPT #기본적으로 모든 것을 허용
#
옵션 더미넷
#
옵션 IPDIVER #전환 소켓

변경이 완료된 후 커널 재컴파일을 시작할 수 있습니다.

다음 명령을 실행합니다.

#우리커널설정
# cd /usr/src/sys/i386/compile/ourkernel
# 의존하게 만든다
# 만들다
# 설치를 해준다

재부팅 중:

재부팅 후 서버가 정상적으로 작동하면 방화벽 설정을 진행합니다.

방화벽 작동을 구성하기 위해 다음 변수가 사용되며 필요한 경우 rc.conf 파일에 추가됩니다.

방화벽 사용을 허용하거나 거부합니다.

# 방화벽 기능을 활성화하려면 YES로 설정하세요.
Firewall_enable="아니요"

방화벽 초기화를 담당하는 파일의 이름과 위치입니다.

# 방화벽을 설정하기 위해 실행할 스크립트
Firewall_script="/etc/rc.firewall"

이 규칙을 "YES"로 설정하면 다음 표시가 억제됩니다.

Firewall_quiet="아니요"

이벤트 로깅 허용/비활성화:

Firewall_logging="아니요"

방화벽 설정 유형:

Firewall_type="알 수 없음"

기본적으로 FreeBSD는 /etc/rc.firewall 파일의 규칙을 사용합니다.

여기에는 기성 템플릿이 여러 개 있습니다.

개방형 - 방화벽이 모든 패킷의 통과를 허용합니다.

클라이언트 - 이 컴퓨터만 보호하는 데 권장됩니다. 즉, 방화벽이 표준 클라이언트 컴퓨터로 구성됩니다. 포트 25의 연결을 제외하고 나가는 모든 연결을 허용하고 들어오는 모든 연결을 거부합니다.

simple - 간단한 게이트웨이 등을 설정하기 위한 것입니다. 즉, 외부 침투로부터 내부 네트워크를 보호하는 간단한 방화벽으로 사용됩니다. 우리는 보다 유연한 규칙 시스템을 설정할 것이므로 이 템플릿을 사용하지 않을 것입니다.

폐쇄 – 로컬 인터페이스 lo0을 통한 트래픽이 허용됩니다. 나머지 트래픽은 기본 규칙에 따라 결정됩니다. 원칙적으로 이는 내부 인터페이스 lo0을 제외한 모든 액세스를 거부하는 것입니다(간단히 말하면 "자신에 대한" 액세스만 허용됩니다).

UNKNOWN – 기본 구성 스크립트에서 방화벽 규칙을 로드하는 것을 금지합니다. 방화벽은 어떤 방식으로도 구성할 수 없습니다. 트래픽 전달 여부는 시스템 커널 구성에 따라 다릅니다. 기본적으로 사용됩니다.

"filename" - "file_name" 값의 동일한 변수를 사용하여 방화벽에 대한 자체 구성 파일을 설정할 수 있습니다.

예를 들어:

Firewall_type="/etc/rc.firewall.newconfig"

생성된 /etc/rc.firewall.newconfig 파일에서 설정을 로드합니다.

"firewall_flags=""" – 파일 이름 값과 함께 Firewall_type을 사용할 때 추가 인수를 전달하는 역할을 합니다.

우리의 임무는 다음 기준을 충족하는 시스템을 만드는 것입니다.

관리 용이성.

사용자가 눈치채지 못하는 상태에서 "즉시" 수정 가능성. 따라서 연결 끊기, 특히 재부팅과 같은 작업은 바람직하지 않습니다.

우리는 우리 시스템이 대부분의 기계에서 작동할 것을 보장합니다.

예제 스크립트에서 로컬 네트워크의 모든 컴퓨터는 두 개의 조건부 그룹으로 나뉩니다. 한 그룹은 권한이 있습니다. 이들은 다음과 같이 가장 일반적으로 사용되는 서비스를 사용하여 인터넷에 액세스할 수 있는 그룹입니다.

HTTP– 포트 80;
HTTPS– 포트 443;
FTP– 포트 20, 21 및 1025~65535
SMTP 프로토콜메일 전달용 – 포트 25;
POP3 프로토콜메시지 수신용 – 포트 110.

IP 주소가 83.xxx.xxx.2(SMTP 및 POP3 프로토콜만 해당)인 외부 회사 서버에만 액세스할 수 있는 컴퓨터인 또 다른 그룹이 있습니다.

가능하다면 설정된 연결을 끊지 않고 "즉시" 특권 그룹을 변경할 수 있는지 확인해야 합니다. 이를 위해 스크립트에서 추가 스크립트 rc.firewall.local.inet를 호출합니다. 다른 모든 방화벽 설정에 영향을 주지 않고 이 추가 스크립트를 편집하고 다시 시작하는 것으로 충분합니다.

또한 공급자 게이트웨이의 IP 주소와 같은 네트워크 매개변수가 변경되는 상황에 대비해야 합니다. 이를 위해 스크립트에서 로컬 변수를 사용합니다. 예를 들어 기본 게이트웨이를 변경하는 경우 intgateway 변수의 값을 변경하고 rc.firewall.run 스크립트를 다시 시작하면 됩니다.

예제 스크립트는 다음과 같습니다.

# vi rc.firewall.run
#!/bin/sh
extip="83.xxx.xxx.xxx"
intip="192.168.9.2"
intnet="192.168.9.0/24"
메일서버="83.xxx.xxx.2"
intgateway="83.xxx.xxx.1"
#
/sbin/ipfw -f 플러시 &
#
/sbin/ipfw $(intnet)에서 xmit fxp0으로 180 전환 natd ip를 추가합니다.
/sbin/ipfw 190 divert natd ip from any를 $(extip)에 추가합니다.
# ICMP
/sbin/ipfw add 500 모든 항목에서 임의 항목으로 ICMP 허용
# SSH
/sbin/ipfw 추가 10000 임의에서 임의의 22까지 tcp 허용
/sbin/ipfw add 10010 22에서 임의의 tcp 허용
# DNS
/sbin/ipfw 추가 11000 임의에서 임의의 53까지 tcp 허용
/sbin/ipfw add 11010 모든 53에서 임의의 tcp 허용
/sbin/ipfw 11020 추가 udp를 any에서 any로 허용 53
/sbin/ipfw 11030 추가 53에서 임의의 udp 허용
# 웹 FTP
/sbin/ipfw 12000을 추가하면 20,21,80,443에 TCP를 허용할 수 있습니다.
/sbin/ipfw 12010 추가 20,21,80,443의 TCP를 나에게 허용
/sbin/ipfw 12020 추가 udp를 20.21로 허용
/sbin/ipfw 12030 추가 20,21의 UDP를 나에게 허용
#
# 권한 그룹을 위한 스크립트
/bin/sh /etc/rc.firewall.local.inet
# LAN의 다른 컴퓨터 거부
/sbin/ipfw $(intnet)의 12960 거부 tcp를 20,21,80,443에 추가합니다.
/sbin/ipfw 추가 12970 20,21,80,443의 TCP 거부를 $(intnet)에 추가
/sbin/ipfw $(intnet)의 12980 거부 udp를 20.21에 추가합니다.
/sbin/ipfw 추가 12990 20.21의 udp 거부를 $(intnet)에 추가
#
#
/sbin/ipfw add 13000 $(intnet)에서 $(mailserver)로 tcp 허용 25,110
/sbin/ipfw add 13010 $(mailserver) 25,110에서 $(intnet)까지 TCP 허용
#
/sbin/ipfw 55010 추가 1024-65534에서 임의의 TCP 허용
/sbin/ipfw 55020 추가 1024-65534에서 임의의 tcp 허용
/sbin/ipfw 55030 추가 1024-65534에서 임의의 tcp 허용
/sbin/ipfw 55040 추가 1024-65534에서 임의의 TCP 허용
/sbin/ipfw 55050 추가 udp를 1024-65534로 허용
/sbin/ipfw 55060을 추가하면 1024-65534에서 udp를 허용합니다.
/sbin/ipfw 55070을 추가하면 1024-65534에서 udp를 허용합니다.
/sbin/ipfw 55080 추가 udp를 1024-65534로 허용
# 모두 거부
/sbin/ipfw 추가 65534 모든 항목에서 모든 항목의 IP 거부

권한 있는 주소 그룹과 작업하기 위해 rc.firewall.local.inet 스크립트를 생성하고 편집합니다.

# vi /etc/ rc.firewall.local.inet
#!/bin/sh
intnet="192.168.9.0/24"
개인 그룹=(31,32)
#
/sbin/ipfw 삭제 12310
/sbin/ipfw 삭제 12320
/sbin/ipfw 삭제 12330
/sbin/ipfw 삭제 12340
#
/sbin/ipfw 추가 12310 $(intnet)$(privgroup)에서 20,21,80,443,1025-65535까지 TCP 허용
/sbin/ipfw 추가 12320 20,21,80,443,1025-65535의 TCP를 $(intnet)$(privgroup)에 허용
/sbin/ipfw 추가 12330 $(intnet)$(privgroup)에서 20,21,1025-65535로 udp 허용
/sbin/ipfw 추가 12340 20,21,1025-65535에서 $(intnet)$(privgroup)으로 udp 허용

스크립트에서 권한 있는 그룹의 구성을 변경하려면 로컬 서브넷에서 호스트 번호를 추가/제거하여 privgroup 변수를 편집해야 합니다.
예를 들어, IP 주소가 192.168.9.33 및 192.168.9.45인 두 대의 컴퓨터를 추가하려면 "privgroup=(31-33,45)"를 작성해야 합니다.

그러한 규칙이 없는데 시스템 시작 시 "/sbin/ipfw delete NNNNN"과 같은 규칙을 사용하는 것은 약간 보기 흉합니다. 존재하지 않는 규칙을 삭제하려고 하면 시스템 콘솔에 다음 메시지가 표시됩니다.

ipfw: 규칙 13031: setockopt(IP_FW_DEL): 잘못된 인수

그러나 시스템은 계속 정상적으로 작동합니다.

모든 작업을 엄격하게 수행한다면 두 개의 스크립트를 생성해야 합니다. 하나는 시작 시 실행할 것이고, 두 번째는 실행 중 변경 사항이 적용될 때입니다. 그러나 두 스크립트를 모두 적절하게 변경해야 합니다. 주요 목표는 관리하기 쉬운 시스템을 만드는 것이므로 우리의 경우에는 이 문제를 무시할 수 있습니다.

그러나 이제는 적절하게 변경한 후 권한 있는 그룹에 대한 스크립트를 다시 시작할 수 있습니다.

# /bin/sh rc.firewall.local.inet

rc.firewall.run 스크립트를 변경하고 다시 시작할 수도 있지만, 설계상 권한 있는 그룹 스크립트의 경우보다 이 작업을 훨씬 덜 자주 수행해야 합니다.

# /bin/sh rc.firewall.run

기존 규칙을 무효화하고 대체 방화벽 구성을 시작하는 스크립트를 자체 작성했기 때문에 이를 실행하는 방법에 대해 생각해 볼 필요가 있습니다.

FreeBSD에는 사용자 프로그램을 시작하는 훌륭한 메커니즘인 rc.local 파일이 있습니다. 기본적으로 시스템에는 존재하지 않습니다.

이 파일은 이미 생성 중이므로 NAT 지원을 담당하는 natd 데몬을 시작하는 명령을 파일에 추가하겠습니다.

natd 데몬은 rc.conf 파일에서 시작됩니다. (이 파일은 실제로 FreeBSD 시스템 전체에 핵심적인 역할을 합니다!)

rc.conf에서 이 파일을 실행하는 메커니즘은 다음 변수를 통해 수행됩니다.

# -- natd 파일 자체의 경로
natd_program="/sbin/natd"
# NAT 활성화(firewall_enable == YES인 경우)
natd_enable="예"
# 사용할 외부 인터페이스 또는 IP 주소
natd_interface=""
# 추가 natd 시작 플래그
natd_flags=""

하지만 이 경우에는 rc.local을 통해 natd 데몬 호출을 사용합니다. 팀:

# vi /etc/rc.local

자동으로 /etc/rc.local 파일을 생성하고 편집을 위해 엽니다.

다음 줄을 추가합니다.

# natd를 실행하는 명령
/sbin/natd -n rl0
# 여기서 "-n rl0"은 NAT가 실행 중인 인터페이스의 이름입니다.
#
# 그리고 스크립트를 실행하여 방화벽 규칙을 설정합니다.
/bin/sh /etc/rc.firewall.run

재부팅하고 로컬 네트워크의 컴퓨터에서 필요한 인터넷 리소스에 대한 액세스를 확인합니다.

1. 에비 네메스, 가스 스나이더, 스콧 시배스, 트렌트 R. 하인. 유닉스. 시스템 관리자 안내서. "BHV", "피터", 2004
2. Alexey Fedorchuk, Alexey Thorne. FreeBSD. 설치, 구성, 사용. BHV, 2003
3. 필립 토친스키. UNIX 관리자를 위한 실용 가이드입니다. "상징", 2003

DHCP 및 DNS 서버가 있는 Wi-Fi 라우터 FreeBSD 8.2

우리가 받고 싶은 것:
- Wi-Fi 클라이언트가 유선 클라이언트와 동일한 서브넷에 있도록 합니다.
- 유무선 클라이언트가 DHCP를 통해 자동으로 주소를 수신하도록 합니다.
- 캐싱 DNS를 갖기 위해
- 물론 우리는 모두가 온라인에 접속하기를 원합니다.
- RDP를 통해 내부 서버에 액세스

일반적으로 우리는 Dlink DIR-300 라우터와 기능면에서 비슷한 것을 원합니다.

우리가 가진 것:
Celeron 700, 256MB RAM, 80GB IDE 나사 및 ACPI가 비활성화된 상태에서만 정상적으로 작동하는 이상한 마더보드
네트워크 카드:

LAN - rl0(10\100 일종의 Realtek, 직장 옷장 뒤에서 발견됨) rl0@pci0: 1 :8 :0 :class=0x020000 카드=0x813910ec 칩=0x813910ec rev=0x10 hdr=0x00 공급업체 = "Realtek Semiconductor" 장치 = Realtek RTL8139 제품군 PCI FastEthernet NIC RTL- 8139 /8139C/8139D 클래스 = 네트워크 하위 클래스 = 이더넷 WAN - stge0(10\100\1000 asus 어댑터) stge0@pci0: 1 :5 :0 :class=0x020000card=0x81801043chip=0x102313f0 rev=0x41 hdr=0x00 공급업체 = "Sundance Technology Inc" 장치 = "IC Plus IP1000 제품군 기가비트 이더넷 어댑터" 클래스 = 네트워크 하위 클래스 = 이더넷 WLAN - ral0(Dlink의 저렴한 Wi-Fi 카드) 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 주소:
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 OS 설치:

# uname -a FreeBSD GATE 8 .2 -FreeBSD 출시 8 .2 -풀어 주다 #0:토요일 4월 9일 20:13:28 OMSST 2011루트@GATE:/usr/src/sys/i386/compile/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 # 패킷 필터를 방화벽으로 사용합니다 # 대기열 알고리즘 지원(트래픽 우선순위 지정)옵션 ALTQ 옵션 ALTQ_CBQ # 클래스 베이스 큐(CBQ) 옵션 ALTQ_RED # 무작위 조기 탐지(RED)옵션 ALTQ_RIO # RED 입/출력 옵션 ALTQ_HFSC # 계층적 패킷 스케줄러(HFSC) options ALTQ_PRIQ # 우선순위 큐(PRIQ) # 단일 코어 프로세서를 사용하므로 많은 코어에 대한 지원이 필요하지 않습니다. #options ALTQ_NOPCC # SMP 빌드에 필요

커널을 컴파일하고 설치합니다:

# CD /usr/src # 빌드커널 KERNCONF=GATE && \를 만듭니다. installkernel을 KERNCONF=GATE로 만드세요.

재부팅하고 무슨 일이 일어나는지 확인하세요.

8843 MTU 1500 옵션=8209b 에테르 01 :01 :01 :01 :01 :01 inet 9 .9 .9 .9 9 .9 .9 .255 8802 미터법 0 MTU 1500 옵션 = 3808 에테르 00 :50 :fc :ef:4d: 75 inet 192 .168 .0 .1 넷마스크 0xffffff00 브로드캐스트 192 .168 .0 .255 미디어: 이더넷 자동 선택(100baseTX 8802 미터법 0 MTU 2290 에테르 00 :26 :5a: 77 :38 :ba 미디어 : IEEE 802 .11 무선 이더넷 자동 선택(autoselect) 상태: 캐리어 없음 lo0: 플래그 = 8049 MTU 16384 옵션 = 3 inet 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="wlanmodehostap" ifconfig_wlan0="up mediaopthostap" # rl0 인터페이스에서 IP 주소를 제거합니다. #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 up" ifconfig_rl0="up" # 액세스 포인트 기능을 활성화합니다 hostapd_enable="예"

재부팅합시다. 무슨 일이 일어났는지 봅시다:

# ifconfig stge0: 플래그 = 8843 MTU 1500 옵션=8209b 에테르 01 :01 :01 :01 :01 :01 inet 9 .9 .9 .9 넷마스크 0xffffff00 브로드캐스트 9 .9 .9 .255 미디어: 이더넷 자동 선택(100baseTX ) 상태 : 활성 rl0: 플래그 = 8943 MTU 1500 옵션 = 3808 에테르 00 :50 :fc :ef:4d: 75 미디어: 이더넷 자동 선택(100baseTX ) 상태 : 활성 ral0: 플래그 = 8843 미터법 0 MTU 2290 에테르 00 :26 :5a: 77 :38 :ba 미디어 : IEEE 802 .11 상태: 실행 중 lo0: 플래그 = 8049 미터법 0 MTU 16384 옵션 = 3 inet 127 .0 .0 .1 넷마스크 0xff000000 브리지0:플래그 = 8843 MTU 1500 에테르 a6: 09 :ed :c1: 23 :38 inet 192 .168 .0 .1 넷마스크 0xffffff00 브로드캐스트 192 .168 .0 .255 ID 00 :00 :00 :00 :00 :00 우선 사항 32768 안녕하세요 2 앞으로 지연 15 최대 20 홀드컨트 6 프로토 rstp maxaddr 100 시간 초과 1200 루트 ID 00 :00 :00 :00 :00 :00 우선 사항 32768 ifcost 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 국가 미국 인증 모드 WPA2/ 802 .11i 개인 정보 보호 혼합 deftxkey 2 AES-CCM 2 :128 -비트 AES-CCM 3 :128 -비트 txpower 0 스캔 유효 60 protmode CTS dtim기간 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 "와IP=" 9 .9 .9 .9 "서버=" 192 .168 .0 .3 "관리자=" 192 .168 .0 .2 "RDP_PORT=" 3389 "EXTRDP_PORT=" 33389 " # 이 포트를 오가는 트래픽은 외부 인터페이스에서 거부됩니다. DROP_PORTS="(135: 139 ,445}" # 패킷이 차단 규칙(차단)에 도달한 후 수행할 작업 # 블록 정책 삭제 설정 - 패킷을 삭제하고 아무것도 하지 않음 # 블록 정책 거부 설정 - 패킷을 폐기하고 오류 메시지를 보냅니다. # 그것을 보낸 호스트에게.차단 정책 삭제 설정 # lo0의 트래픽을 확인하지 마세요 lo0에 건너뛰기 설정 # bridge0 인터페이스에서는 트래픽을 확인하지 않습니다(내부 제한은 없습니다).$LAN에서 건너뛰기 설정 # 패킷의 "정규화". 제 생각에는 이 옵션에 대한 설명으로 충분합니다. # 모호하지만 일부 유형의 네트워크 공격에 대해 도움이 되기를 바랍니다.모두 문지르세요 #내 속도는 ~5000kbps입니다. 여기에 속도를 입력해야 합니다.$WAN priq 대역폭 5000Kb 대기열의 altq(개인, 기타) # 대기열이 2개 있습니다 # 우선순위가 높은 트래픽의 경우(서버의 RDP)대기열 개인 정보 제한 25 우선 사항 14 프리크(빨간색) # 다른 모든 사람들을 위해대기열 다른 qlimit 30 우선 사항 10 프리크(기본값) # 대기열 크기는 최고 수준에서 가져온 것이라고 할 수 있습니다. # 집중해주세요. 대기열 크기를 직접 선택해 보세요. # LAN 네트워크의 외부 인터페이스에서 NAT를 활성화합니다.$LAN_POOL에서 임의의 경로로 $WAN의 NAT -> ($WAN ) # 포트를 서버로 전달합니다. 표준 포트와 다른 포트를 전달합니다. # 표준 포트를 스캔하는 무차별 공격으로부터 보호합니다.$WAN IP \ 포트 $EXTRDP_PORT -> $SERVER 포트 $RDP_PORT로 $WAN proto tcp의 rdr # 우리 주소에 대한 핑 요청을 차단합니다모든 것에서 $WANIP icmp-type으로 $WAN proto icmp에서 빠른 차단 8 # 외부 인터페이스에는 NETBIOS로부터의 트래픽이 없어야 합니다.모든 포트에서 $WAN proto(tcp udp)에 대한 빠른 차단 $DROP_PORTS # WAN 인터페이스에서 스푸핑 방지를 활성화합니다. # http://openbsd.corebsd.or.id/faq/pf/ru/filter.html을 인용합니다: # 공격자가 원본을 위조하면 주소가 스푸핑됩니다. # 패킷의 IP 주소는 실제 주소의 셸로 전송되거나, # 또는 사용자가 스푸핑된 후 네트워크의 다른 노드를 가장합니다. # 실제 소스를 노출하지 않고도 네트워크 공격을 시작할 수 있습니다. # 공격하거나 네트워크 서비스에 액세스하려고 시도합니다. # 특정 IP 주소로 제한됩니다.$WAN에 대한 빠른 스푸핑 방지 #명시적으로 승인되지 않은 모든 트래픽을 금지합니다.모두 차단 # ### 들어오는 트래픽 # 특권 트래픽$WAN proto tcp에서 any에서 $WANIP 포트로 빠르게 전달 $EXTRDP_PORT queue priv # 일반 트래픽은 $WAN에서 any에서 $WANIP로 빠르게 전달 상태 대기열 유지 other # 실제로 PF의 우선순위 지정은 들어오는 트래픽에는 작동하지 않지만 규칙이 있습니다. #아직 썼다. # ### 나가는 트래픽 # 특권 트래픽$WANIP \ 포트 $EXTRDP_PORT에서 $WAN proto tcp를 빠르게 전달하여 모든 유지 상태 대기열로 전달 priv # 일반 트래픽은 $WANIP에서 $WANIP에서 모든 유지 상태 대기열로 빠르게 전달 other
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 가져오기 portsnap.FreeBSD.org 미러 검색 중... 5 거울 발견. portsnap5.FreeBSD.org에서 스냅샷 태그를 가져오는 중... 완료되었습니다. 스냅샷 메타데이터를 가져오는 중... 완료되었습니다. 6월 수요일부터 업데이트 15 14 :21 :31 MSD 2011 ~ 7월 21 11 :37 :27 MSD 2011 . 가져오는 중 3 메타데이터 패치.. 완료. 메타데이터 패치 적용 중... 완료되었습니다. 가져오는 중 3 메타데이터 파일... 완료되었습니다. 가져오는 중 9656 패치..... 10 .... <Часть вывода удалена> ...........9650 ...완료. 패치 적용 중... 완료되었습니다. 가져오는 중 1282 새로운 포트나 파일이... 완료되었습니다. # portsnap 추출 /usr/ports/.cvsignore /usr/ports/CHANGES .................<Часть вывода удалена>............. /usr/ports/x11/yelp/ /usr/ports/x11/zenity/ 새로운 INDEX 파일을 만드는 중... 완료되었습니다.

캐싱 DNS 서버로 djbdns 패키지의 dnscache를 사용합니다. 왜냐하면 이 dnscache는 FreeBSD에 포함된 BIND DNS 서버보다 더 적은 메모리를 소비하고 더 안전한 것으로 간주되기 때문입니다.

djbdns를 설치합니다:

# cd /usr/ports/dns/djbdns && 설치를 깨끗하게 만듭니다.

우리는 다음 옵션을 사용하여 조립하고 설치합니다.

dnscache용 DUMPCACHE 영구 캐시 IPV6 IPv6 지원(Felix von Leitner) IGNOREIPignoreip2 패치(Russell Nelson) JUMBO 점보 패치(Claudiu Costin [X] MAN 매뉴얼 페이지(Gerritt Pape)) PERSISTENT_MMAP 영구 mmap 패치(Lennert Buytenhek [X] SRV SRV 레코드 패치(Michael Handler))

djbdns는 daemontools 포트도 가져옵니다. daemontools는 데몬을 시작하고 작업을 모니터링하도록 설계되었습니다. 즉, 해당 제어 하에 있는 일부 데몬이 "떨어지면" daemontools가 이를 다시 시작합니다.

dnscache 자체와 dnslog(djbdns용 로거)가 시작될 사용자를 포함하는 dnsusers 그룹을 만듭니다.

dnslog에 대한 사용자를 생성합니다:

# 비밀번호 사용자add dnslog -s /sbin/nologin -d /dev/null -G dnsusers

daemontools 콘텐츠가 작동하는 폴더를 만듭니다.

데몬툴을 실행합니다:

dnscache 구성은 /usr/local/etc/djbdns에 있고 daemontools는 /var/service 폴더에서 작동하므로 링크를 만듭니다.

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

/usr/local/etc/dnscache/env 폴더에는 고급 dnscache 구성이 포함된 파일이 포함되어 있지만 이 경우 기본값에 매우 만족합니다.

서버가 정상적으로 동작하기 위해서는 상위 서버의 주소를 설정해야 합니다. 각 영역에는 /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 SSL/TLS를 통한 LDAP 연결 지원

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의 기능이 구현되었습니다.



질문이 있으신가요?

오타 신고

편집자에게 전송될 텍스트: