|
(광고) 단통법 시대의 인터넷가입 가이드(ver2.0) (234) |
백메가 |
2015-12 |
1712943 |
25 |
2015-12
1712943
1 백메가
|
|
[필독] 처음 오시는 분을 위한 안내 (735) |
정은준1 |
2014-05 |
5179493 |
0 |
2014-05
5179493
1 정은준1
|
109189 |
쌍인두 vs 히트건... (6) |
호박고구마 |
2023-09 |
1466 |
0 |
2023-09
1466
1 호박고구마
|
109188 |
기초적인 MS CAL 등록 방법에 대한 질의 |
레반터스 |
2023-09 |
1800 |
0 |
2023-09
1800
1 레반터스
|
109187 |
중국에서 작동하는 vpn (10) |
berak |
2023-09 |
1764 |
0 |
2023-09
1764
1 berak
|
109186 |
요즘 회사 업무용 차량을 줄이고 있습니다. 이유가 몰까요? (7) |
Th2n |
2023-09 |
1879 |
0 |
2023-09
1879
1 Th2n
|
109185 |
MZ32-AR0 메인보드에 관해 여쭙습니다.. (9) |
Fentanest |
2023-09 |
2242 |
0 |
2023-09
2242
1 Fentanest
|
109184 |
가성비 괜찮은 32인치 모니터암 추천해주세요 (4) |
김황중 |
2023-09 |
1598 |
0 |
2023-09
1598
1 김황중
|
109183 |
불법 프로그램 (6) |
미담 |
2023-09 |
1297 |
0 |
2023-09
1297
1 미담
|
109182 |
한글 관련해서 여쭙고 싶습니다. (4) |
장동건2014 |
2023-09 |
1934 |
0 |
2023-09
1934
1 장동건2014
|
109181 |
(초긴급 도와주세요) 혹시 이 전선과 터미널 결선을 어떻게 해결해야할까요? (18) |
Nicoffeine |
2023-09 |
3445 |
0 |
2023-09
3445
1 Nicoffeine
|
109180 |
(의견/조언요청) Intel Xeon 6430 32 cores 270W * 2 vs 라이젠 스레드리퍼 5995WX (20) |
나루비이 |
2023-09 |
4898 |
0 |
2023-09
4898
1 나루비이
|
109179 |
[솔루션문의] (5) |
마스코트 |
2023-09 |
1995 |
0 |
2023-09
1995
1 마스코트
|
109178 |
신병 6화 최종회 때 마지막에 나온 신병은 누구일까요? (6) |
정은준1 |
2023-09 |
10926 |
0 |
2023-09
10926
1 정은준1
|
109177 |
야외 CCTV 무선통신 구축 조언부탁드립니다 - 2 (7) |
I적우 |
2023-09 |
2364 |
0 |
2023-09
2364
1 I적우
|
109176 |
dell 5820... 부팅이 안됩니다.... (6) |
블루영상 |
2023-09 |
4327 |
0 |
2023-09
4327
1 블루영상
|
109175 |
E5-1630 v4 에서 CPU 클럭 속도 (7) |
무아 |
2023-09 |
2874 |
0 |
2023-09
2874
1 무아
|
109174 |
DDR4 상위 보드는 하위 클럭 RAM 도 지원도 되나요? (10) |
미친감자 |
2023-09 |
1837 |
0 |
2023-09
1837
1 미친감자
|
109173 |
코로케이션 비용 관련해서... (6) |
프로게이머 |
2023-09 |
1533 |
0 |
2023-09
1533
1 프로게이머
|
109172 |
LTE 라우터 지원 밴드 (6) |
봉래 |
2023-09 |
1441 |
0 |
2023-09
1441
1 봉래
|
109171 |
외부에서 집으로 원격 접속을 하려고 하는 일반입니다. (5) |
한성제 |
2023-09 |
2351 |
0 |
2023-09
2351
1 한성제
|
109170 |
SAS RAID 컨트롤러 추천 부탁드립니다. (2) |
IT왕초보 |
2023-09 |
1707 |
0 |
2023-09
1707
1 IT왕초보
|
클라이언트측에서 기존 IP 사용가능하게 해달라고 하면 이전 사용한 IP의 현재상태를 확인해서 사용하지 않는경우에 한해 이전것으로 할당해주는 것은 있습니다.
DHCP 임대시간이 지나서 요청해도 IP가 같은 것도 궁금했었는데 같이 해결되었습니다.
감사합니다.
맨처음 공유기가 동작하면서 DHCP서버가 동작하면 DHCP서버 셋팅값에서 가장 작은 IP번호부터 셋팅된 네트워크 안에서 스캐닝하며
준비된 DHCP 클라이언트의 맥어드레스를 번호와 매칭시킨다라고 생각합니다..
한번 등록된 맥어드레스는 공유기가 다시 시작하지 않는 한 바뀌지 않기에 장비를 끄거나 제거한 후에 좀 시간이 지나고
다시 그 장비를 동작시키면 그 맥어드레스를 기억하는 공유기의 DHCP 서버 때문에 그 IP 번호는 바뀌지 않습니다..
하나의 C클래스 IP 대역을 가지는 DHCP 서버에서 가끔 IP번호가 꼬이거나 잦은 DHCP 서버의 재시작으로 인해 클라이언트의 DHCP 번호가
변하여 왔다갔다 하는 경우가 있는데 이럴때는 클라이언트 DHCP IP번호를 수동으로 지정하여 고정해주는 편이 사용하기 편합니다.. (특히나 프린트 서버)
DHCP 서버의 IP 범위도 클라이언트가 많지 않다면 어느 정도 갯수를 줄이는것이 DHCP서버의 IP 스캐닝시 시간을 단축하기에
좀 더 빠른 공유기의 동작을 기대할 수 있습니다..
이 질문 올리게 된 계기가 iptime 사용했을 때랑 달라서 였습니다.
iptime에선 클라이언트 장비가 많아도 IP 맨 뒤에 숫자가 50이 넘은 적이 없었던 듯합니다.
dnsmasq 라는 소형 DHCP/DNS 서버 프로그램이 있습니다. (소스는 https://thekelleys.org.uk/dnsmasq/ )
IP 할당하는 부분을 찾아보면 dhcp.c 에 address_allocate라는 함수에서 처리하는 것 같습니다.
HW MAC 어드레스를 해시함수(sdbm hash) 돌린 후 이를 기반으로 IP를 할당하는 부분이 있습니다.
간단하게 신규 할당할 때만 보면 아래 과정으로 이루어지는군요.
(재 할당 시에는 netid로 할당된 기존 할당된 ip를 다시 리턴)
1. 랜카드의 MAC address를 Seed 값으로 사용
00:03:47:B2:59:3C
2. sdmb 라는 해시 알고리즘을 돌림 (string --> int)
5644212570012911586919917584275020807673170692121545560107482439325811798923254
3. 2의 결과를 할당할 수 있는 사이즈로 나눈 나머지 값을 얻음
2의 값 mod 254
4. 시작 주소값에 3의 값을 더함
192.168.0.1 + 14
5. 결과값 192.168.0.15
리턴하기 전에 사용 중인지 핑으로 체크하고 사용 중이면 미사용 ip가 나올때까지 값을 증가.
추가로 알게 된 것들...
1. sdmb라는 해시 알고리즘이 생각보다 많이 쓰이는 것을 알게 됨.
2. 내부적으로는 ip주소(str)를 int로 변환해서 많이 쓰는데, socket.inet_aton, inet_ntoa 같은 함수들이 유용함.
파이썬으로 대충 ...
코드 :
from socket import *
import struct
import getmac
def sdbm(plain_text: str) -> int:
hash_value = 0
for plain_chr in plain_text:
hash_value = (
ord(plain_chr) + (hash_value << 6) + (hash_value << 16) - hash_value
)
return hash_value
HWADDR = getmac.get_mac_address()
b_ip = '192.168.0.1'
pool_size = 254
s_addr = int.from_bytes(inet_aton(b_ip)) + (sdbm(HWADDR) % pool_size)
t_addr = inet_ntoa(struct.pack('!L', s_addr))
print(f"MAC address: {HWADDR}")
print(f"Hash Value : {sdbm(HWADDR)}")
print(f"Temp Value : {(sdbm(HWADDR) % pool_size)}")
print(f"ip address : {t_addr}")
출력 :
MAC address: 0e:c9:b6:33:ea:41
Hash Value : 5644307572320518795668905132228045064013545965067596936257857263082430642659208
Temp Value : 22
ip address : 192.168.0.23