Softethervpn: NicSetSetting : VPN ν΄λΌμ΄μ–ΈνŠΈλ₯Ό μˆ˜λ™μœΌλ‘œ λ‹€μ‹œ μ‹œμž‘ν•  λ•ŒκΉŒμ§€ MAC μ£Όμ†Œ 변경이 μ μš©λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

에 λ§Œλ“  2015λ…„ 08μ›” 28일  Β·  4μ½”λ©˜νŠΈ  Β·  좜처: SoftEtherVPN/SoftEtherVPN

NicSetSetting을 μ‚¬μš©ν•˜μ—¬ ν—ˆλΈŒμ— κ°€μž…ν•˜λŠ” 가상 NIC의 MAC μ£Όμ†Œλ₯Ό μ„€μ •ν–ˆμŠ΅λ‹ˆλ‹€. 정적 μž„λŒ€λ₯Ό μ‚¬μš© ν–ˆμœΌλ―€λ‘œ MAC μ£Όμ†ŒλŠ” NICκ°€ κ°€μ Έμ™€μ•Όν•˜λŠ” IP μ£Όμ†Œλ₯Ό 효과적으둜 κ²°μ •ν•©λ‹ˆλ‹€.

κ·ΈλŸ¬λ‚˜ MAC μ£Όμ†Œμ˜ 변경은 Softether 데이터에 κΈ°λ‘λ˜μ–΄ μžˆμ§€λ§Œ VPN ν΄λΌμ΄μ–ΈνŠΈ 자체λ₯Ό λ‹€μ‹œ μ‹œμž‘ν•  λ•ŒκΉŒμ§€ μ‹€μ œ OS에 λ°˜μ˜λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 이것은 처음 연락 ν•  λ•Œ λ‚΄ NICκ°€ 잘λͺ»λœ IP μ£Όμ†Œλ‘œ κ΅¬μ„±λ˜μ—ˆμŒμ„ μ˜λ―Έν•©λ‹ˆλ‹€.

λ‚˜λŠ” λ˜ν•œ μ‹œλ„ν–ˆλ‹€ :

  • NIC ν™œμ„±ν™” 및 λΉ„ν™œμ„±ν™”
  • μ—¬λŸ¬ 번 μ„€μ •
  • 계정 연결을 λŠμ€ λ‹€μŒ λ‹€μ‹œ μ—°κ²°ν•©λ‹ˆλ‹€.

κ·ΈλŸ¬λ‚˜ vpnclient stop && vpnclient start μž‘λ™ν•©λ‹ˆλ‹€. 두 개의 κ°œλ³„ ν΄λΌμ΄μ–ΈνŠΈλ₯Ό μ‚¬μš©ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

  • Debian Wheezy의 버전 4.17 λΉŒλ“œ 9562
  • Raspbian의 버전 4.18 λΉŒλ“œ 9570

λ‘˜ λ‹€ λ™μΌν•œ λ™μž‘μ„ λ‚˜νƒ€λƒ…λ‹ˆλ‹€. λ²„κ·Έμž…λ‹ˆκΉŒ, κΈ°λŠ₯μž…λ‹ˆκΉŒ?

bug help wanted

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

@ moatazelmasry2 μ €λŠ” μ‹€μ œλ‘œ C ++ μ‚¬λžŒμ€ μ•„λ‹ˆμ§€λ§Œ 여기에 μ½”λ“œ λ‚΄λΆ€ λ˜λŠ” 주변에 λ¬Έμ œκ°€μžˆλŠ” 것 κ°™μŠ΅λ‹ˆλ‹€.

https://github.com/SoftEtherVPN/SoftEtherVPN/blob/bed99f9a56e29a0fcd7a9e3d02f84f9d8621eb3d/src/Cedar/Client.c#L8104

r 이 경우 r = Search(c->UnixVLanList, &t); 의 κ²°κ³Όμž…λ‹ˆλ‹€. κ·Έ ν›„ CiSaveConfigurationFile 및 CiNotify 및 CiSendGlobalPulse λŒ€ν•œ 호좜이 μžˆμŠ΅λ‹ˆλ‹€.이 쀑 μ–΄λŠ 것도 OS μˆ˜μ€€μ—μ„œ λ§Žμ€ μž‘μ—…μ„ μˆ˜ν–‰ν•˜μ§€ μ•ŠλŠ” 것 κ°™μŠ΅λ‹ˆλ‹€. κ·Έλ ‡λ‹€λ©΄ λ‚΄λΆ€ λͺ©λ‘μ— MAC을 μ„€μ •ν•˜κ³  ꡬ성에 μ €μž₯ ν•œ λ‹€μŒ μ‹€μ œλ‘œ 가상 μ–΄λŒ‘ν„° μ—…λ°μ΄νŠΈλ₯Ό μ‹œλ„ν•˜μ§€ μ•Šμ„ μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.

λ¬Όλ‘  ν΄λΌμ΄μ–ΈνŠΈκ°€ λ‹€μ‹œ μ‹œμž‘λ˜λ©΄ κ΅¬μ„±μ—μ„œ 찾은 λ‚΄μš©μœΌλ‘œ μ–΄λŒ‘ν„°λ₯Ό μ˜¬λ°”λ₯΄κ²Œ μ΄ˆκΈ°ν™”ν•©λ‹ˆλ‹€.

가상 NIC에 λŒ€ν•œ TAP μž₯치의 μ΄ˆκΈ°ν™”λ₯Ό μžμ„Ένžˆ μ‚΄νŽ΄λ³΄λ©΄ initμ—μ„œ MAC μ£Όμ†Œλ₯Ό μ„€μ •ν•˜λŠ” κ²ƒμ²˜λŸΌ λ³΄μ΄λŠ” λ‹€μŒ 쀄이 μžˆμŠ΅λ‹ˆλ‹€.

https://github.com/SoftEtherVPN/SoftEtherVPN/blob/d7d0e6d36fe1d73eca6205d9b2144ded67f52b13/src/Cedar/VLanUnix.c#L527

이것은 UnixCreateTapDeviceEx λΌλŠ” ν•¨μˆ˜μ— μžˆμŠ΅λ‹ˆλ‹€. κ·Έλž˜μ„œ μš°λ¦¬μ—κ²Œ ν•„μš”ν•œ 것은 UnixModifyTapDevice 호좜인데, μ‹€μ œλ‘œλŠ” μƒˆ MACμ—μ„œ ioctl λ₯Ό ν˜ΈμΆœν•©λ‹ˆλ‹€. 이것이 이미 μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ”λ‹€λŠ” 점을 κ°μ•ˆν•  λ•Œ μ•„λ§ˆλ„ 쒋은 μ΄μœ κ°€μžˆμ„ κ²ƒμž…λ‹ˆλ‹€!

λͺ¨λ“  4 λŒ“κΈ€

이 λ¬Έμ œκ°€ 계속 λ°œμƒν•˜λŠ”μ§€ 확인해 μ£Όμ‹œκ² μŠ΅λ‹ˆκΉŒ?

@ moatazelmasry2 응닡이 λŠλ €μ„œ μ£„μ†‘ν•©λ‹ˆλ‹€. λͺ‡ 달 λ™μ•ˆ Softetherλ₯Ό μ‚¬μš©ν•˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€.

였늘 μ €λŠ” 이것을 λ³΄μ•˜μŠ΅λ‹ˆλ‹€.

  • λ‚˜λŠ” μ„œλ²„μ™€ ν΄λΌμ΄μ–ΈνŠΈλ₯Ό μ„€μ •
  • ν΄λΌμ΄μ–ΈνŠΈ μ—°κ²°
  • 00 : AC : B2 : 5A : 26 : 93 인 MAC μ£Όμ†Œλ₯Ό ν™•μΈν–ˆμŠ΅λ‹ˆλ‹€.
  • vpncmd에 λ‘œκ·ΈμΈν•˜κ³  "NicSetSetting ether MAC : / 00-AC-BA-B5-B4-78
  • vpncmdμ—μ„œ 둜그 μ•„μ›ƒν•˜κ³  ifconfigλ₯Ό μ‹€ν–‰ν–ˆμŠ΅λ‹ˆλ‹€. μ—¬μ „νžˆ 93으둜 λλ‚˜λŠ” MAC
  • λ‹€μ‹œ μ‹œμž‘λœ vpnclient
  • ifconfigλ₯Ό μ‹€ν–‰ν•˜κ³  이제 MAC이 78둜 λλ‚˜λŠ” 것을 ν™•μΈν•©λ‹ˆλ‹€.

κ·Έλž˜μ„œμ΄ λ¬Έμ œλŠ” μ—¬μ „νžˆ μ‚΄μ•„μžˆλŠ” 것 κ°™μŠ΅λ‹ˆλ‹€. μ„œλ²„ 및 ν΄λΌμ΄μ–ΈνŠΈ 버전은 λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

  • ν΄λΌμ΄μ–ΈνŠΈ 버전 4.24, Ubuntu 16.06의 λΉŒλ“œ 9651
  • Ubuntu 16.06의 Server Ver 4.24, λΉŒλ“œ 9651

@ moatazelmasry2 μ €λŠ” μ‹€μ œλ‘œ C ++ μ‚¬λžŒμ€ μ•„λ‹ˆμ§€λ§Œ 여기에 μ½”λ“œ λ‚΄λΆ€ λ˜λŠ” 주변에 λ¬Έμ œκ°€μžˆλŠ” 것 κ°™μŠ΅λ‹ˆλ‹€.

https://github.com/SoftEtherVPN/SoftEtherVPN/blob/bed99f9a56e29a0fcd7a9e3d02f84f9d8621eb3d/src/Cedar/Client.c#L8104

r 이 경우 r = Search(c->UnixVLanList, &t); 의 κ²°κ³Όμž…λ‹ˆλ‹€. κ·Έ ν›„ CiSaveConfigurationFile 및 CiNotify 및 CiSendGlobalPulse λŒ€ν•œ 호좜이 μžˆμŠ΅λ‹ˆλ‹€.이 쀑 μ–΄λŠ 것도 OS μˆ˜μ€€μ—μ„œ λ§Žμ€ μž‘μ—…μ„ μˆ˜ν–‰ν•˜μ§€ μ•ŠλŠ” 것 κ°™μŠ΅λ‹ˆλ‹€. κ·Έλ ‡λ‹€λ©΄ λ‚΄λΆ€ λͺ©λ‘μ— MAC을 μ„€μ •ν•˜κ³  ꡬ성에 μ €μž₯ ν•œ λ‹€μŒ μ‹€μ œλ‘œ 가상 μ–΄λŒ‘ν„° μ—…λ°μ΄νŠΈλ₯Ό μ‹œλ„ν•˜μ§€ μ•Šμ„ μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.

λ¬Όλ‘  ν΄λΌμ΄μ–ΈνŠΈκ°€ λ‹€μ‹œ μ‹œμž‘λ˜λ©΄ κ΅¬μ„±μ—μ„œ 찾은 λ‚΄μš©μœΌλ‘œ μ–΄λŒ‘ν„°λ₯Ό μ˜¬λ°”λ₯΄κ²Œ μ΄ˆκΈ°ν™”ν•©λ‹ˆλ‹€.

가상 NIC에 λŒ€ν•œ TAP μž₯치의 μ΄ˆκΈ°ν™”λ₯Ό μžμ„Ένžˆ μ‚΄νŽ΄λ³΄λ©΄ initμ—μ„œ MAC μ£Όμ†Œλ₯Ό μ„€μ •ν•˜λŠ” κ²ƒμ²˜λŸΌ λ³΄μ΄λŠ” λ‹€μŒ 쀄이 μžˆμŠ΅λ‹ˆλ‹€.

https://github.com/SoftEtherVPN/SoftEtherVPN/blob/d7d0e6d36fe1d73eca6205d9b2144ded67f52b13/src/Cedar/VLanUnix.c#L527

이것은 UnixCreateTapDeviceEx λΌλŠ” ν•¨μˆ˜μ— μžˆμŠ΅λ‹ˆλ‹€. κ·Έλž˜μ„œ μš°λ¦¬μ—κ²Œ ν•„μš”ν•œ 것은 UnixModifyTapDevice 호좜인데, μ‹€μ œλ‘œλŠ” μƒˆ MACμ—μ„œ ioctl λ₯Ό ν˜ΈμΆœν•©λ‹ˆλ‹€. 이것이 이미 μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ”λ‹€λŠ” 점을 κ°μ•ˆν•  λ•Œ μ•„λ§ˆλ„ 쒋은 μ΄μœ κ°€μžˆμ„ κ²ƒμž…λ‹ˆλ‹€!

아직 ν…ŒμŠ€νŠΈν•˜μ§€ μ•Šμ•˜μ§€λ§Œ 이것은 맀우 쒋은 λΆ„μ„μ²˜λŸΌ λ³΄μž…λ‹ˆλ‹€. νž˜λ“  일!!!. 이제 μš°λ¦¬λŠ” 그것을 κ΅¬ν˜„ν•  λˆ„κ΅°κ°€κ°€ ν•„μš”ν•©λ‹ˆλ‹€ :)

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰