Bluetooth 5.0과 Bluetooth 4.2 차이점

블루투스 5.0 및 4.2는 전송 효율, 전송 거리, 브로드 캐스트 모드 정보 용량 및 전력 소비가 서로 다릅니다.

블루투스 5.0 대 블루투스 4.2 :

1, 전송 효율이 2 배 증가했습니다.

Bluetooth 5.0은 현재 전송 속도를 2 배 증가 시켰습니다. Bluetooth 4.2는 최대 통신 속도가 1Mbps이고 Bluetooth 5.0은 최대 통신 속도가 2Mbps입니다. 빠른 전송 속도는 데이터 전송 속도를 두 배로 높이며 전력 소비를 크게 증가 시키며 오리지널 블루투스 4.0에서 20 단어의 단일 패킷으로 오디오와 같은 새로운 고 처리량 애플리케이션을 가능하게합니다. 이 섹션은 Bluetooth의 256 바이트까지 확장됩니다. 4.2. 이러한 개선은 의료, 피트니스, 야외, 스포츠 및 기타 제품 응용 분야에서 Bluetooth 경험을 향상시킵니다.

2. 전송 거리가 4 배 증가했습니다.

블루투스 5.0 표준의 범위는 300 미터 (1 미터 = 1 미터) 인 블루투스 4.2의 4 배가 될 것입니다.

3. 브로드 캐스트 모드 정보 용량이 8 배 증가했습니다.

방송 통신 용량이 블루투스 4.2에서 255 바이트로 31 바이트에서 업그레이드되었습니다. 향상된 브로드 캐스트 기능은 위치 기반 실내 위치 서비스 및 탐색 서비스를 더 많이 생성하여 페어링 및 연결없이 데이터 전송을 가능하게하는 향상된 비콘으로 이어질 것입니다. 실내 측위 정확도가 1 미터 미만이며 실내 측위 정확도 기능이 개선되었습니다.

4, 저전력 소모, 이전 Bluetooth 버전과 호환 가능

사물의 모바일 인터넷에 대한 요구에 대응하여, 전력 소모가 적고 구형 블루투스 버전과 호환됩니다. 주요 반도체 제조업체들은 블루투스 5.0 표준을위한 새로운 MCU를 SIG 사양을 충족하도록 설계하고, 노르딕은 nRF52840 및 nRF52832를, TI 반도체는 하드웨어 특성에서 CC2640R2F를 지원하는 블루투스 5를, 노르딕의 nRF52840 및 nRF52832 통합 수면보다는 CC2640R2F를 도입 할 예정이다. 10 배 더 낮아서 착용 할 수있는 의료 장비, 야외 장비, 스마트 여행, 스마트 홈 및 기타 산업에 큰 의미가 있습니다.

Bluetooth 5.0은 2016 년에 Bluetooth Technology Alliance에서 제안한 Bluetooth 기술 표준입니다. Bluetooth 5.0은 이에 따라 저전력 장치 속도가 향상되고 최적화되었습니다. 실내 위치를 지원하여 전송 속도를 개선하고 유효 작동 거리를 늘리기 위해 wifi와 결합 된 Bluetooth 5.0

Ubuntu 18.04 Netplan을 사용한 Static IP 설정

Ubuntu는 한 3년전부터인가 CentOS보단 개인적으로 더 주력으로 많이 사용했던거 같다.

16.04 LTS 나올때부터 꾸준히 쓰긴 했었는데 어느샌가 벌써 18.04가 LTS 버전으로 나왔다.

16.04로 바꿔서 쓸때도 systemctl 때문에 한동안 매우 힘들었는데 18.04 올라가고 벌써부터 바뀐 것들이 너무 많다. 뭐 이리 배울게 많아 ㅠㅠ

어찌됐든 또 잊어버리기 전에 다음에 헤매지 않게 기억해본다.

Static IP 설정

첫번째 난관은 네트워크 인터페이스 설정이다.

17.10부터 네트워크 인터페이스 설정이 NetPlan이라는 새로운 네트워크 설정 시스템으로 변경된 것 같다.

확실히 기존의 인터페이스 설정(/etc/network/interfaces)보다는 더 간결하고 쉽게 YAML을 사용하여 관리가 가능하다.

 /etc/netplan/*.yaml 

해당 위치에 인터페이스 설정이 가능하고 NetworkManager와 networkd 두개의 렌더러를 사용할 수 있다.

NetworkManger 렌더러를 사용하는 경우에는 X Window 환경에서만 사용하고 나머지 경우는 networkd 렌더러를 사용하면 된다.

네트워크 인터페이스 확인

우선 ifconfig -a 를 통해 설정할 네트워크 인터페이스를 확인한다.

user@canary-test-server:~$ ifconfig -a
 enp0s3: flags=4163  mtu 1500
         inet 10.0.2.15  netmask 255.255.255.0  broadcast 10.0.2.255
         inet6 fe80::a00:27ff:fe57:92b1  prefixlen 64  scopeid 0x20

         ether 08:00:27:57:92:b1  txqueuelen 1000  (Ethernet)
         RX packets 375  bytes 314494 (314.4 KB)
         RX errors 0  dropped 0  overruns 0  frame 0
         TX packets 178  bytes 18901 (18.9 KB)
         TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
 enp0s8: flags=4098  mtu 1500
         ether 08:00:27:22:8f:0b  txqueuelen 1000  (Ethernet)
         RX packets 0  bytes 0 (0.0 B)
         RX errors 0  dropped 0  overruns 0  frame 0
         TX packets 0  bytes 0 (0.0 B)
         TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
 lo: flags=73  mtu 65536
         inet 127.0.0.1  netmask 255.0.0.0
         inet6 ::1  prefixlen 128  scopeid 0x10
         loop  txqueuelen 1000  (Local Loopback)
         RX packets 28  bytes 2208 (2.2 KB)
         RX errors 0  dropped 0  overruns 0  frame 0
         TX packets 28  bytes 2208 (2.2 KB)
         TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

enp0s8 인터페이스를 NetPlan을 통해 설정해보자.

netPlan을 통한 Static IP 설정

아마 디폴트로 세팅했다면 아래와 같이 기본 인터페이스 설정이 존재한다.

/etc/netplan/50-cloud-init.yaml
 This file is generated from information provided by
 the datasource.  Changes to it will not persist across an instance.
 To disable cloud-init's network configuration capabilities, write a file
 /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
 network: {config: disabled}
 network:
     ethernets:
         enp0s3:
             addresses: []
             dhcp4: true
             optional: true
     version: 2

dhcp로 설정된 enp0s3 인터페이스가 보일 것이다.

새로운 인터페이스인 enp0s8번을 설정해보자

 $ sudo vi /etc/netplan/01-netcfg.yaml 

나는 virtualbox 호스트네트워크를 사용한 인터페이스를 추가해서 ethernets 섹션의 ip를 192.168.56.100/24로 설정하고 기타 아래와 같이 gateway와 dns 정보를 입력한다.

This file describes the network interfaces available on your system
 For more information, see netplan(5).
 network:
  version: 2
  renderer: networkd
  ethernets:
    enp0s8:
      dhcp4: no
      dhcp6: no
      addresses: [192.168.56.100/24]
      gateway4: 192.168.56.1
      nameservers:
        addresses: [8.8.8.8,8.8.4.4]

다른 섹션은 볼 필요 없고 ethernets 섹션만 정확하게 설정하고 저장한다.

  • dhcp4 : IPv4 dhcp 설정
  • dhcp6 : IPv6 dhcp 설정
  • addresses : ,로 구분한 IP 멀티로 가능
  • gateway4 : IPv4 gateway 설정
  • nameservers : dns 설정 ,로 구분 멀티로 설정 가능 [생략 가능]

설정 재적용

새 설정을 적용하려면 아래의 명령어를 실행한다.

 $ sudo netplan apply 

다시 ifconfig -a 해서 네트워크 인터페이스 정보를 확인한다.

enp0s3: flags=4163  mtu 1500
         inet 10.0.2.15  netmask 255.255.255.0  broadcast 10.0.2.255
         inet6 fe80::a00:27ff:fe57:92b1  prefixlen 64  scopeid 0x20

         ether 08:00:27:57:92:b1  txqueuelen 1000  (Ethernet)
         RX packets 1566  bytes 400006 (400.0 KB)
         RX errors 0  dropped 0  overruns 0  frame 0
         TX packets 980  bytes 153691 (153.6 KB)
         TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
 enp0s8: flags=4163  mtu 1500
         inet 192.168.56.100  netmask 255.255.255.0  broadcast 192.168.56.255
         inet6 fe80::a00:27ff:fe22:8f0b  prefixlen 64  scopeid 0x20

         ether 08:00:27:22:8f:0b  txqueuelen 1000  (Ethernet)
         RX packets 0  bytes 0 (0.0 B)
         RX errors 0  dropped 0  overruns 0  frame 0
         TX packets 5  bytes 386 (386.0 B)
         TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
 lo: flags=73  mtu 65536
         inet 127.0.0.1  netmask 255.0.0.0
         inet6 ::1  prefixlen 128  scopeid 0x10
         loop  txqueuelen 1000  (Local Loopback)
         RX packets 40  bytes 3108 (3.1 KB)
         RX errors 0  dropped 0  overruns 0  frame 0
         TX packets 40  bytes 3108 (3.1 KB)
         TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

정상적으로 변경된 것을 확인 할 수 있다.

MacBook-Pro:~ user$ ssh [email protected]
The authenticity of host ‘192.168.56.100 (192.168.56.100)’ can’t be established.
ECDSA key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ‘192.168.56.100’ (ECDSA) to the list of known hosts.
[email protected]’s password:
Welcome to Ubuntu 18.04 LTS (GNU/Linux 4.15.0-22-generic x86_64)

  • Documentation: https://help.ubuntu.com
  • Management: https://landscape.canonical.com
  • Support: https://ubuntu.com/advantage

외부에서도 정상적으로 세팅된 IP로 접속 가능한 것을 볼 수 있다.

IIS Express 외부 IP로 접속하기 (디버깅)

1. 기본적으로 IIS Express는 localhost만 접속이 가능하다.
2. 외부 아이피 즉, 192.168.0.13혹은 127.0.0.1으로 접속시 아래와 같은 에러가 발생한다.

Http error 503, The service is unavailable.

3. 현재 실행하고자하는 프로젝트로 우선 이동한다. 그리고 폴더 옵션에서 숨김 폴더를 표시를 한 뒤, .vs 디렉토리을 찾아야한다. 그리고 config 폴더에 applicationhost.config 를 실행한다.

{내 프로젝트} -> .vs -> config -> applicationhost.config

참고로 2015 이하 버전에서는 .vs가 보이지 않았다.
IIS Express의 C:\Users{유저이름}\Documents\IISExpress\config 폴더 안에 있는 applicationhost.config 를 수정해야했다.

4. 밑으로 내려가다보면 라는 부분이 있는데, 자신이 실행하고자 하는 포트를 찾으면 보일것이다. 이것을 localhost를 삭제한 뒤, 저장한다.

bindingInformation=”:내포트:localhost” -> bindingInformation=”:내포트:” 으로 변경

<site name="WebSite1" id="1" serverAutoStart="true">
    <application path="/">
        <virtualDirectory path="/" physicalPath="D:\workspace\cshap\-\-" />
    </application>
    <bindings>
        <binding protocol="http" bindingInformation=":8080:localhost" />
    </bindings>
</site>

<site name="FC2014_Provider" id="2">
    <application path="/" applicationPool="Clr4IntegratedAppPool">
        <virtualDirectory path="/" physicalPath="D:\workspace\cshap\-\-" />
    </application>
    <bindings>
        <binding protocol="http" bindingInformation="*:내포트:localhost" />
    </bindings>
</site>Code language: HTML, XML (xml)

5. 서버를 실행할 PC 서버의 방화벽을 해제 하니,이제 외부 아이피로 접속시 접속이 잘 되는것을 확인했다.

ubuntu에서 외부 접속을 좀 더 안전하게 설정하기 (우분투 ssh 접속 보안 설정)

1. 소개
우분투 서버를 관리하고 사용하는데 외부접속을 좀더 제한하여 보안을 강화한다.
보안강화는 접속 제한 두가지를 두고 SSH키 자체에 암호를 거는 것. 이렇게 세가지를 통합합니다.

2. 사용자 생성
우선은 sudo 권한이 있는 계정으로 서버접을 합니다.

3. RSA키 생성

# ssh-keygen -t rsa 

위의 명령어를 이용해서 RSA 방식의 개인키와 공개키를 생성합니다. 명령어를 실행하면 아래와 같이 키를 저장할 디렉토리와 파일명을 입력하라고 합니다. 보통 디폴트로 되어 있는 위치로 생성하면 됩니다. 현재 계정 아래의 .ssh 디렉토리 아래에 생성이 됩니다.

Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):

다음은 암호를 입력하라고 나옵니다. 만약 퍼블릭 키를 이용해서 리모트로 암호 없이 바로 접속할려면 암호를 입력하지 않고 엔터를 치면 됩니다.

Enter passphrase (empty for no passphrase):
Enter same passphrase again:

마지막으로 아래와 같은 메시지가 출력되면서 파일이 생성됩니다.

The key fingerprint is:
e9:54:90:a3:5d:ba:7b:34:f2:30:76:f5:c7:4c:d3:25 root@aaa
The key's randomart image is:
+--[ RSA 2048]----+
|        ..       |
|        o..   E .|
|       o +.    .o|
|      . oo  .  .o|
|        S. . . +.|
|       o* +   . +|
|       ..O .   . |
|        . o      |
|         .       |
+-----------------+

아래와 같이 id_rsa 개인키 파일과 id_rsa.pub공개키 파일이 생성됩니다.

total 16
-rw-r--r-- 1 root root  399  4월  9 18:10 authorized_keys
-rw------- 1 root root 1679  4월 10 17:24 id_rsa
-rw-r--r-- 1 root root  399  4월 10 17:24 id_rsa.pub
-rw-r--r-- 1 root root  444  4월  9 21:06 known_hosts

공개키를 이용한 ssh 접속

위에서 생성한 SSH 키를 이용해서 다른 서버에 접속할 때는 접속할려는 서버 계정의 홈 디렉토리 아래의 .ssh/authorized_keys 파일을 생성한 후 위에서 생성한 공개키 스트링을 넣어두면 됩니다.

# cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADDQABAAABAQCgatkuBNq72JGIR59+D5Xh271RcLgH+C/eydKHOoqdX5hpZuLnh4/72LagQuqEd6SXi/Obv4iEgyhp+qfmP0ub9gddAHPwCn3ZLgEc6VQoNgtToO9gdXXHKfIH5R4QmJGqCZwWrhyBlIVM6SYmb3mT29EUkVq4F3YEuHW2lF5K258p6O9flG5ONf9CopQhWtatCflmOV/SUEBZbEdq7AFW9WHGdWo9g7XVVQ0MEuoRfJL9cKF30e5BmlFqu1eWSCrf6PIGpVsH2ikpKm8OihfIn62eLD1qJJLMeagGHoe+Zce3++iUHrzj0EdM/L7Y9EKI9cq089mOfNkv0sCMY1xt root@aaa

이 공개키 값을 카피 후 접속할려는 서버의 ~/.ssh/authorized_keys 파일에 카피 합니다.

# cat ~/.ssh/authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAADDQABAAABAQCgatkuBNq72JGIR59+D5Xh271RcLgH+C/eydKHOoqdX5hpZuLnh4/72LagQuqEd6SXi/Obv4iEgyhp+qfmP0ub9gddAHPwCn3ZLgEc6VQoNgtToO9gdXXHKfIH5R4QmJGqCZwWrhyBlIVM6SYmb3mT29EUkVq4F3YEuHW2lF5K258p6O9flG5ONf9CopQhWtatCflmOV/SUEBZbEdq7AFW9WHGdWo9g7XVVQ0MEuoRfJL9cKF30e5BmlFqu1eWSCrf6PIGpVsH2ikpKm8OihfIn62eLD1qJJLMeagGHoe+Zce3++iUHrzj0EdM/L7Y9EKI9cq089mOfNkv0sCMY1xt root@aaa

이 후부터는 원격 서버에 접속시에 현재 서버의 개인키와 원격 서버의 공개키값이 조합되어 암호 없이 ssh 접속이 가능해 집니다.

# ssh -p 14101 sshtest.fun25.co.kr
Last login: Fri Apr 10 15:37:18 2015 from 211.239.124.233
[email protected]:~#

보안 상이 이유로 ssh 서버에 위의 키 방식만 가능하게 하고 암호를 통한 접속은 불가능하도록 할려면 아래와 같이 sshd 설정을 하면 됩니다.

# vi /etc/ssh/sshd_config

sshd 설정파일을 편집해서 아래 옵션을 추가하면 암호를 통한 접속은 불가능합니다.

PermitRootLogin without-password

ssh 서비스를 리로딩합니다.

# service ssh reload

Visual studio Extension 설치시 에러

Visual studio extension 설치시 위와같은 에러가 발생하였다. 다른 확장을 설치해도 마찬가지..

1/9/2020 5:03:59 PM - Microsoft VSIX Installer
1/9/2020 5:03:59 PM - -------------------------------------------
1/9/2020 5:03:59 PM - Initializing Install…
1/9/2020 5:03:59 PM - Extension Details…
1/9/2020 5:03:59 PM -     Identifier      : AStyle.6b52ccde-8ae4-4233-bccd-6b9b0ba06a56
1/9/2020 5:03:59 PM -     Name            : AStyle Extension 2020
1/9/2020 5:03:59 PM -     Author          : C
1/9/2020 5:03:59 PM -     Version         : 3.0.0.0
1/9/2020 5:03:59 PM -     Description     : An extension for Artistic Style.
1/9/2020 5:03:59 PM -     Locale          : en-US
1/9/2020 5:03:59 PM -     MoreInfoURL     : 
1/9/2020 5:03:59 PM -     InstalledByMSI  : False
1/9/2020 5:03:59 PM -     SupportedFrameworkVersionRange : [0.0,2147483647.2147483647]
1/9/2020 5:03:59 PM - 
1/9/2020 5:03:59 PM -     Supported Products : 
1/9/2020 5:03:59 PM -         Microsoft.VisualStudio.Community
1/9/2020 5:03:59 PM -             Version : [15.0,)
1/9/2020 5:03:59 PM -         Microsoft.VisualStudio.Pro
1/9/2020 5:03:59 PM -             Version : [15.0,)
1/9/2020 5:03:59 PM -         Microsoft.VisualStudio.Enterprise
1/9/2020 5:03:59 PM -             Version : [15.0,)
1/9/2020 5:03:59 PM -         Microsoft.VisualStudio.IntegratedShell
1/9/2020 5:03:59 PM -             Version : [15.0,)
1/9/2020 5:03:59 PM - 
1/9/2020 5:03:59 PM -     References      : 
1/9/2020 5:03:59 PM - 
1/9/2020 5:03:59 PM - Searching for applicable products…
1/9/2020 5:03:59 PM - Found installed product - Global Location
1/9/2020 5:03:59 PM - Found installed product - AtmelStudio
1/9/2020 5:03:59 PM - Found installed product - ssms
1/9/2020 5:03:59 PM - VSIXInstaller.NoApplicableSKUsException: This extension is not installable on any currently installed products.
    at VSIXInstaller.App.InitializeInstall(Boolean isRepairSupported)
    at VSIXInstaller.App.InitializeInstall()
    at System.Threading.Tasks.Task.InnerInvoke()
    at System.Threading.Tasks.Task.Execute()

더블클릭해서 설치하지말고 해당 확장으 마우스 오른쪽 버턴을 클릭해서 VSLauncher.exe로 열기를 선택해주면 정상적으로 설치할 수 있다.