hashicorp

http://longbe00.blogspot.kr/2017/08/consul.html


http://tech.kakao.com/2017/01/25/nomad/

http://teddykwon.com/2017/01/18/consul-install.html

http://teddykwon.com/2017/01/19/docker-swarm-consul.html

http://rootkey.tistory.com/12

https://blog.outsider.ne.kr/1266

'Docker' 카테고리의 다른 글

docker-compose 부팅시 자동 시작하기 / 서비스로 등록하기  (0) 2018.08.14
consul, nomad, vault  (0) 2018.03.18



시작하기

일반적으로 SoftLayer API를 호출하기 위해서는 인증을 위한 API Key 가 있어야 합니다.
하지만 유일한 예외가 있습니다. 그것은 인스턴스 자기 자신의 메타 데이터 정보 를 호출 할 때입니다.
SoftLayer_Resource_Metadata 라는 Service는 어디에서 호출되었는지 만 중요하고, 사전에 API Key를 얻는 필요는 없습니다.
만약 slcli 명령을 사용하더라도 API Key없이 사용할 수 있습니다.

http://sldn.softlayer.com/reference/services/SoftLayer_Resource_Metadata

사용 조건

사용 조건은 다음과 같습니다.

  • 실제로 SoftLayer에서 실행되는 서버에서 실행
  • Private 통해 API 액세스 할 수 있는 서버에서 실행 (Public을 통해서는 동작하지 않습니다.)

예를 들어 관리 콘솔 등의 권한이 없어도 자신의 서버가 어떤 데이터 센터에서 움직이고 있는지 알 수 있습니다.

사용 방법(curl)

기본적으로 json 포맷으로 반환됩니다. (값만 반환)
하지만 .xml 확장자를 주면 xml 형식으로 반환됩니다.
또는 .json 처럼 명시적으로 .json을 붙여도 됩니다.
즉, getID인경우 getID.json 또는 getID.xml 로 쓸수도 있습니다.

  • DeviceID (Baremetal이라면 HardwareId VM라면 VirtualGuestId)

    # curl -s https://api.service.softlayer.com/rest/v3.1/SoftLayer_Resource_Metadata/getId
    
  • 호스트 이름, 도메인 이름, FQDN

    # curl -s https://api.service.softlayer.com/rest/v3.1/SoftLayer_Resource_Metadata/getHostname
    # curl -s https://api.service.softlayer.com/rest/v3.1/SoftLayer_Resource_Metadata/getDomain
    # curl -s https://api.service.softlayer.com/rest/v3.1/SoftLayer_Resource_Metadata/getFullyQualifiedDomainName
    
  • Public/Private PrimaryIPAddress

    # curl -s https://api.service.softlayer.com/rest/v3.1/SoftLayer_Resource_Metadata/getPrimaryIpAddress
    # curl -s https://api.service.softlayer.com/rest/v3.1/SoftLayer_Resource_Metadata/getPrimaryBackendIpAddress
    
  • Public/Private MACAddress

    # curl -s https://api.service.softlayer.com/rest/v3.1/SoftLayer_Resource_Metadata/getFrontendMacAddresses
    # curl -s https://api.service.softlayer.com/rest/v3.1/SoftLayer_Resource_Metadata/getBackendMacAddresses
    
  • 라우터 정보 (상기 방법으로 얻은 MAC 주소를 파라미터로 끝에 넣어 주어야 합니다)

    # curl -s https://api.service.softlayer.com/rest/v3.1/SoftLayer_Resource_Metadata/getRouter/06:5c:99:52:1a:60
    
  • VLAN 정보 (상기 방법으로 얻은 MAC 주소를 파라미터로 끝에 넣어 주어야 합니다)

    # curl -s https://api.service.softlayer.com/rest/v3.1/SoftLayer_Resource_Metadata/getVlanIds/06:5c:99:52:1a:60
    # curl -s https://api.service.softlayer.com/rest/v3.1/SoftLayer_Resource_Metadata/getVlans/06:5c:99:52:1a:60
    
  • 데이터 센터 정보

    # curl -s https://api.service.softlayer.com/rest/v3.1/SoftLayer_Resource_Metadata/getDatacenterId
    # curl -s https://api.service.softlayer.com/rest/v3.1/SoftLayer_Resource_Metadata/getDatacenter
    
  • 프로비저닝 상태

    # curl -s https://api.service.softlayer.com/rest/v3.1/SoftLayer_Resource_Metadata/getProvisionState
    
  • 태그 정보

    # curl -s https://api.service.softlayer.com/rest/v3.1/SoftLayer_Resource_Metadata/getTags
    
  • UserData 정보

    # curl -s https://api.service.softlayer.com/rest/v3.1/SoftLayer_Resource_Metadata/getUserMetadata
    
  • 서비스 자원 정보

    # curl -s https://api.service.softlayer.com/rest/v3.1/SoftLayer_Resource_Metadata/getServiceResources
    

사용 방법 - slcli 사용

다시말하지만, slcli 명령을 사용하여도 metadata 정보의 취득에 관해서는 사전에 API Key의 설치는 필요하지 않습니다.

  • 명령 예시

      # slcli metadata -h
      Usage: slcli metadata [OPTIONS] PROP
    
        Find details about this machine
    
        PROP Choices
        *backend_ip
        *backend_mac
        *datacenter
        *datacenter_id
        *fqdn
        *frontend_mac
        *id
        *ip
        *network
        *provision_state
        *tags
        *user_data
    
        Examples :
        slcli metadata backend_ip
        slcli metadata backend_mac
        slcli metadata datacenter
        slcli metadata datacenter_id
        slcli metadata fqdn
        slcli metadata frontend_mac
        slcli metadata id
        slcli metadata ip
        slcli metadata network
        slcli metadata provision_state
        slcli metadata tags
        slcli metadata user_data
    
      Options:
        -h, --help  Show this message and exit.
    
        These commands only work on devices on the backend SoftLayer network. This
        allows for self-discovery for newly provisioned resources.
    
  • network 정보 확인

    # slcli metadata network
    :...............:...................:
    :      name     :       value       :
    :...............:...................:
    : mac addresses : 06:90:31:e4:0c:90 :
    :     router    :    fcr01.sng01    :
    :     vlans     :        xxxx       :
    :    vlan ids   :       xxxxxx      :
    :...............:...................:
    :...............:...................:
    :      name     :       value       :
    :...............:...................:
    : mac addresses : 06:18:10:e0:91:17 :
    :     router    :    bcr01.sng01    :
    :     vlans     :        xxxx       :
    :    vlan ids   :       xxxxxx      :
    :...............:...................:
    




https://softlayer.github.io/reference/services/SoftLayer_Resource_Metadata/ 참고

getBackendMacAddresses
A list of backend MAC addresses
getDatacenter
The name for the datacenter which the resource is in
getDatacenterId
The id for the datacenter which the resource is in
getDomain
A resource's domain
getFrontendMacAddresses
A list of frontend MAC addresses
getFullyQualifiedDomainName
A resource's fully qualified domain name
getGlobalIdentifier
A resource's globalIdentifier
getHostname
A resource's hostname
getId
A resource's id
getPrimaryBackendIpAddress
The primary backend IP address for the resource
getPrimaryIpAddress
The primary IP address for the resource
getProvisionState
Obtain the provision state for a resource
getRouter
The router associated with a network component
getServiceResource
Obtain a specific service resource associated with the resource
getServiceResources
Obtain service resources associated with the resource
getTags
Obtain tags associated with the resource
getUserMetadata
Obtain user data associated with the resource
getVlanIds
A list of VLAN ids for a network component
getVlans
A list of VLAN numbers for a network component

 


랜덤 내용의 더미 파일 만들기

linux

dd if=/dev/urandom of=1G.bin bs=16M count=64


windows

Null파일

fsutil file createnew D:\myfile.txt 1073741824


랜덤 내용은 툴 써야 함.

http://www.mynikko.com/dummy/dummy12.zip

'OS > Linux' 카테고리의 다른 글

firewalld 설정  (0) 2018.11.04
SAMBA 설치 at CentOS 7  (0) 2018.08.29
vimdiff 사용법  (0) 2018.04.21
Linux 에서 IP 추출  (0) 2018.04.21
랜덤 내용 특정 사이즈 더미 파일 만들기  (0) 2018.02.21
StrongSwan으로 Cloud끼리 VPN 설정 해보기  (0) 2017.12.17

Proxy 테스트 할때 ICP 회피 할려다 하다 보니...  생각난 방법이다.

도메인으로 접속해야만 하는 경우 ICP가 없으면 17년 6월부터 사이버 보안법 때문에 vendor 차원에서 짤없이 차단이다.

그냥 IP로 접속하면 되겠지만, 본 경우는 WebServer는 vhost설정이 되어 있어서 IP로 접속할 수 없고 실제로 도메인으로 접속해야하는 경우다. 

즉, 테스트 서버는 IP로 접속해야 하고, 실제 대상 웹서버에는 도메인을 달고 들어가야 하는 경우.

방법은 간단하게 접속시 Host를 바꿔치기 하면 된다.

location / {
  proxy_pass http://origin.opencloud.kr;
proxy_set_header Host www.opencloud.kr;
}



약간의 응용을 하면 조건을 걸 수도 있다. 특정 도메인으로 접속시에만 호스트 바꾸기

poc.opencloud.kr로 접속 했을 경우에만 test.opencloud.kr로 host를 바꾸고, 나머지는 원래 접속한 도메인으로 보내는 방법

set $my_host $http_host;
if ($http_host = "poc.opencloud.kr") {
  set $my_host "test.opencloud.kr";
}
location / {
  proxy_pass http://origin.opencloud.kr;
proxy_set_header Host $my_host; }


https://www.fun25.co.kr/blog/linux-centos-7-change-timezone/?page=9


CentOS 7 에서 타임존 변경 방법입니다.

사용가능한 타임존

# timedatectl list-timezones | grep Seoul
Asia/Seoul

타임존 변경

# timedatectl set-timezone Asia/Seoul


수동으로 변경해야 할 경우는 기존의 /etc/localtime 파일을 삭제 후

# ln -s /usr/share/zoneinfo/Asia/Seoul /etc/localtime

타임존 확인

# date
2016. 01. 18. (월) 21:12:30 KST


https://aws.amazon.com/ko/blogs/korea/the-floodgates-are-open-increased-network-bandwidth-for-ec2-instances/

요약:

  • EC2 - S3
    기존 5Gbps -> 25Gbps

  • EC2 - EC2
    5Gbps(단일 흐름 트래픽) , 25Gbps(다중 흐름 트래픽) , Multi-AZ 포함

  • EC2 - EC2(클러스터 배치 그룹)
    10Gbps(단일 흐름 트래픽) , 25Gbps(다중 흐름 트래픽) , Placement Group이므로 Single-AZ




INTEL CPU 버그 -> 커널 스페이스 메모리가 유저 스페이스로 유출


https://lkml.org/lkml/2017/12/27/2

https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/diff/?id=a89f040fa34ec9cd682aed98b8f04e3c47d998bd

Xen : XSA-253 : https://xenbits.xen.org/xsa/advisory-253.html


Xen은 Paravirtual만 해당 된다는 얘기가 있다. AWS Korea는 전부 HVM이므로 해당이 없을지도..


Softlayer는 1월 6일 00시부터 이틀에 걸처 전체 Host를 리부팅 해서 패치 한다.


패치로 인해 성능이 5%~30% 저하된다는 벤치마크 결과가 있다. 특히 IO 쪽이 문제되는 듯.

http://www.phoronix.com/vr.php?view=25767


=======================================================================

지난 10 년 동안 생산 인텔 프로세서는 치명적인 칩 수준의 보안 버그를 가지고 있습니다.  OS 레벨에서 수정 사항이 나와야한다고보고하고, 수정본을 사용할 수있는 경우에도 주목할만한 성능 저하가있을 것입니다.

 

이 보고서는이 시점에서 버그에 대해 알려진 바가 크지 않다고 설명하지만, "지난 10 년 간 생산 된 최신 인텔 프로세서에 존재하는"근본적인 설계 결함 "이라고 지적했다.


이 버그로 인해 사용자 프로그램은 보호 된 커널 메모리의 내용을 식별 할 수있게되어 해커가 다른 보안 버그를보다 쉽게 ​​악용 할 수 있습니다. 등록 메모에 따르면, 실제로는 그보다 더 나쁠 수 있습니다. 커널 메모리에 대한 액세스를 제공하는이 버그는 "프로그램과 로그인 한 사용자가 커널 메모리의 내용을 읽을 때 악용 될 수 있습니다."


커널의 메모리 공간은 암호, 로그인 키, 디스크에서 캐시 된 파일 등과 같은 모든 종류의 비밀을 포함 할 수 있으므로 사용자 프로세스 및 프로그램에서 숨겨집니다. 브라우저에서 실행되는 JavaScript 또는 공유 된 공용 클라우드 서버에서 실행되는 악성 소프트웨어가 민감한 커널 보호 데이터를 스니핑 할 수 있다고 상상해보십시오.


이 칩 레벨 보안 버그에 대한 패치도 그리 좋지 않습니다. 이 보고서는이 시점에서 더 구체적인 정보가 명확하지 않더라도 수정으로 인해 5 % ~ 30 %의 속도 저하가 발생할 수 있다고 설명합니다. 속도 저하는 프로세서가 캐시 된 데이터를 덤프하고 메모리에서 정보를 다시로드해야하는 방식으로 인해 발생합니다.


현재 Microsoft 및 Linux 개발자는이 문제를 해결하기 위해 노력하고 있습니다. 이 결함은 인텔의 x86 하드웨어에 결함이 있기 때문에 인텔 기반 맥에도 영향을 미치지 만, 애플의 수정 작업은 불분명하다. 결함이 하드웨어 자체에 있기 때문에 정상적인 마이크로 코드 업데이트로 해결할 수는 없지만 오히려 OS 레벨의 수정이 필요합니다.


이러한 커널 페이지 테이블 격리 패치는 커널을 완전히 별도의 주소 공간으로 이동하므로 실행중인 프로세스에서 보이지 않을뿐 아니라 전혀 존재하지 않습니다. 실제로는 필요하지 않지만 Intel의 실리콘에는 커널 액세스 보호가 어떤 식 으로든 무시 될 수있는 결함이 있습니다.


이 분리의 단점은 모든 시스템 호출과 하드웨어의 모든 인터럽트에 대해 두 개의 개별 주소 공간을 전환하는 것은 비교적 비용이 많이들고, 시간이 많이 걸린다는 점입니다. 이러한 컨텍스트 스위치는 즉시 발생하지 않으며 프로세서가 캐시 된 데이터를 덤프하고 메모리에서 정보를 다시로드하도록합니다. 이렇게하면 커널의 오버 헤드가 증가하고 컴퓨터 속도가 느려집니다.


개발자가 패치 작업을 할 때 버그에 대한보다 구체적인 정보가 현재 금하고 있다고 추측합니다. 다음 주 곧 Intel에서 직접 더 많은 세부 정보를 얻을 수 있습니다.

/etc/strongswan/ipsec.confLinux는 IPSec VPN을  위해서 기본적으로 OpenSwan 또는 StrongSwan 패키지를 지원한다.

Windows도 RRAS를 통해 자체적으로 지원한다. 

http://docs.aws.amazon.com/ko_kr/AmazonVPC/latest/NetworkAdminGuide/customer-gateway-windows-2012.html

http://techgenix.com/configure-vpn-windows-server-2012-r2/


아무래도 Linux가 설정이나 트러블 슈팅하기가 더 쉽다. Linux 머신만 있으면 VPN장비 부럽지 않다.

고급 설정이 좀 더 가능한 StrongSwan을 사용해보자. (물론 여기서 고급기능을 쓰지는 않지만...)


사실 AWS, Azure, Softlayer, Alibaba 아무관계가 없다. 모두 IPSec VPN 서비스가 있지만, 가끔 이렇게 직접 구축이 필요할 때가 있다.

다만 Softlayer는 Router Roll은 vyatta에 한정되어 있으므로, 서버에 VPN을 구축할 경우

모든 서버의 라우팅에 VPN서버를 별도 추가 해주어야 하는 불편함은 있다. (하지만, 그냥 하면 되므로 불편한거지 어려운 부분은 아니다)

vyatta을 쓰면 vyatta에서 모두 지원하므로 이렇게 쓸일이 없지만, vyatta는 비싸므로 서버만 쓰는 경우를 예로 든다.


CentOS7 기준으로 설명한다. 

설정 편의를 위해 PSK(PreSharedKey)로 설정한다. 네트워크 정보는 아래를 예시로 했다.

 

 VPN 서버 Public IP

 Network 사설 대역

 A쪽 Network

 169.11.22.33

 10.100.50.0/24

 B쪽 Network

 211.66.77.88

 192.168.20.0/24


일단 ip_forward를 활성화한다. 그리고 strongswan을 설치 및 자동 실행 설정을 한다.

echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.d/ip_forward.conf
sysctl -p /etc/sysctl.d/ip_forward.conf
cat /proc/sys/net/ipv4/ip_forward

yum install -y epel-release
yum install -y strongswan

systemctl enable strongswan
systemctl start strongswan


설정은 ipsec.conf 만 해주면 되고, PSK는 ipsec.secret에 적어주면 끝이다.

아래 설정은 A쪽 설정이다, B쪽은 left와 right쪽 정보만 반대로 해주면 된다.

/etc/strongswan/ipsec.conf

# ipsec.conf
config setup
  strictcrlpolicy=no
  uniqueids=no
  charondebug="cfg 2, ike 2, knl 2"
#  charondebug="dmn 2, mgr 2, ike 2, chd 2, job 2, cfg 2, knl 2, net 2, enc 2, lib 2"

conn %default
  ikelifetime=14400
  keylife=3600
  keyexchange=ikev2

conn sample
  authby=secret
  auto=start
  type=tunnel
  leftauth=psk
  rightauth=psk
  left=169.11.22.33
  right=211.66.77.88
  leftsubnet=10.100.50.0/24
  rightsubnet=192.168.20.0/24
  ike=aes256-sha256-modp2048
  esp=aes256-sha256-modp2048


/etc/strongswan/ipsec.secret

# ipsec.secret
169.11.22.33 : PSK "Cloud1004@Test"
211.66.77.88 : PSK "Cloud1004@Test"


양단 설정이 다 되었으면 재 시작 하고 터널 상태를 확인한다.

strongswan restart
strongswan statusall



잘 안될경우 로그를 확인한다.  로그 레벨과 파트는 ipsec.conf에서 charondebug 부분을 참조 해서 변경한다. 경우에 따라 tcpdump 를 볼 필요성도 있다.

tail -f /var/log/message /var/log/secure

AWS/Alibaba는  라우팅 설정에서 상대편 대역은 해당 서버로 가게 끔 추가 해 준다.

IBM Cloud는 vyatta를  안쓰면 라우팅 설정을 못 바꾸므로 연결되는 모든 서버에서 각각 라우팅을 추가 해주어야 한다.
(VPN 장비의 사설 IP가 10.100.50.100 이라고 할 때)

리부팅 되도 유지되도록 설정한다.

Windwos의 경우 route add 명령에 -p 옵션만 주면 영구 설정이 되며 재부팅시 유지된다.
실제 다음 레지스트리에 기록된다.
HKEY_LOCAL_MACHINE\SYSTEM\CURRENTCONTROLSET\SERVICES\TCPIP\PARAMETERS\PERSISTENTROUTES

route -p add 10.100.50.0 MASK 255.255.255.0 10.100.50.100 METRIC 1
route print

Linux는 /etc/sysconfig/network-scripts/route-eth0 넣고 
systemctl restart network 해주면 된다.

echo "10.100.50.0/24 via 10.100.50.100" >> /etc/sysconfig/network-scripts/route-eth0
systemctl restart network
ip route


단순히 테스트 할 때는 아래 처럼 하면 된다. 

Windows

route add 10.100.50.0 MASK 255.255.255.0 10.100.50.100 METRIC 1
route print

Linux

ip route add 10.100.50.0/24 via 10.100.50.100
ip route


'OS > Linux' 카테고리의 다른 글

firewalld 설정  (0) 2018.11.04
SAMBA 설치 at CentOS 7  (0) 2018.08.29
vimdiff 사용법  (0) 2018.04.21
Linux 에서 IP 추출  (0) 2018.04.21
랜덤 내용 특정 사이즈 더미 파일 만들기  (0) 2018.02.21
StrongSwan으로 Cloud끼리 VPN 설정 해보기  (0) 2017.12.17

정확하게는 Reverse Proxy 형태의 포트 포워딩 되시겠다.

방법은 여러가 지가 있겠으나... 일단 TCP 레벨이 가능한 아래 2가지를 먼저 해본다.

NGINX/HAProxy를 쓰는 방법

IPTables(CentOS6) 또는 FirewallD(CentOS7)를 쓰는 방법

NGINX 설정

sudo su -
yum install -y nginx nginx-mod-stream
vi /etc/nginx/nginx.conf
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;

# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;

events {
    worker_connections 1024;
}

stream {
    server {
        listen     443;
        proxy_pass s3.ap-northeast-2.amazonaws.com:443;
    }
}
#자동 시작 설정 및 서비스 시작
systemctl enable nginx
systemctl start nginx

#동작 테스트
curl -v --insecure https://localhost

+ Recent posts