2020-01-13

[EVE-NG] Linux Host - A Start job is running for Raise network interface


Linux Host 이미지 추가 후 부팅을 하게 되면 아래와 같이 "A Start job is running for Raise network interface" 라는 메지지가 뜨면서 5분동안 IP를 할당받으려고 대기를 하게 된다. 5분이 지나면 IP할당 실패 후 부팅이 된다.


이를 해결하기 위한 방법은 여러가지가 있는데 본인이 원하는 구성에 맞게 설정 하면 된다.



1. 고정 IP 세팅

인터페이스가 DHCP로 할당되도로고 되어 있는 구성을 고정IP 할당해 주면 된다.

vi /etc/network/interfacesauto ens3 iface ens3
inet static address xxx.xxx.xxx.xxx
netmask xxx.xxx.xxx.xxx
gateway xxx.xxx.xxx.xxx
dns-nameservers xxx.xxx.xxx.xxx


## 본인이 구성하려는 네트워크 구성에 맞는 정보 입력.

네트워크 재시작.

/etc/init.d/networking restart


2. DHCP Timeout 값 변경.

DHCP 할당 체크 시간을 기본 5분에서 10초로 변경해 준다.

vi /lib/systemd/system/networking.service

기본 값은 5min으로 되어 있으며, "TimeoutStartSec=10sec" 로 변경 후 재부팅.



3. Management Network 연결 후 부팅

Linux 인터페이스에 VMWare의 Bridge 네트워크 로부터 DHCP IP를 할당하도록 변경한다.이 경우 본인 PC에서 Linux Host 이미지에 할당된 IP로 Telnet 등 원격 접근이 가능하다.
가상 장비 Management를 위해 주로 사용하는 방법이다.
VMWare Network 모드가 bridge로 되어 있고, Linux Host 이더넷에 Management Network 를 연결하면 VMWare에서 DHCP IP를 할당받게 된다.

- Management Type의 네트워크 추가.



- Linux Host Image Ethernet 에 연결 후 부팅.


- 부팅 후 ifconfig로 보면 VMWare의 DHCP 대역 IP를 할당받은 것을 확인할 수 있다. 


[EVE-NG] How to Use Linux Image - EVE-NG 에서 리눅스 이미지 사용하기)


EVE-NG에 네트워크 장비 이외에 Linux 이미지를 추가하여 사용하는 방법이다.

고맙게도 EVE 사이트에서 EVE-NG에서 사용할 수 있는 Linux 이미지 다운로드 링크를 제공하고 있어서 해당 이미지를 다운로드 받은 후 EVE-NG 서버에 업로드하여 사용할 수 있다.

1. 아래의 다운로드 링크 접속하여 적절한 이미지를 다운로드 받는다.

Download Linux Image

2. 아래의 이미지 중 원하는 이미지 더블 클릭 후 PC에 다운로드 받는다.


여기서는 linux-ubuntu-srv-16.04.4-webmin.tar.gz 이미지를 사용하였다.


3. 다운로드가 완료 되면 Winscp를 이용하여 EVE-NG 서버에 파일을 업로드 한다.업로드 경로는 /opt/unetlab/addons/qemu/ 이다.



4. 업로드가 완료 되면 Putty 나 SecureCRT등을 사용하여 EVE-NG SSH 접속 후 업로드한 파일 압축을 풀어준다.
※ 압축을 풀면 linux-ubuntu-srv-16.04.4-webmin 디렉토리 안에 virtioa.qcow2 파일이 생성이 된다.

root@eve-ng:/opt/unetlab/addons/qemu# tar zxvf linux-ubuntu-srv-16.04.4-webmin.tar.gz
linux-ubuntu-srv-16.04.4-webmin/
linux-ubuntu-srv-16.04.4-webmin/virtioa.qcow2
root@eve-ng:/opt/unetlab/addons/qemu# 


5. 기존 압축 파일은 삭제한다.

rm -f linux-ubuntu-srv-16.04.4-webmin.tar.gz

6. Permision 수정

/opt/unetlab/wrappers/unl_wrapper -a fixpermissions

7. 만약 여러개의 이미지를 사용하고 싶다면 위의 이미지 업로드 방법을 반복하면 된다.

8. EVE-NG 웹 접속 후 신규 Node를 추가하면 아래와 같이 Linux 항목이 활성화 되고 이미지를 사용할 수 있게 된다.


9. Linux 이미지 qemu vga 옵션 값 변경 ( std 를 qxl 로 변경 후 저장)


10. EVE-NG 화면의 Linux Node Start




11. 부팅이 되면 파란색으로 변경이 되며 더블클릭후 ultravnc 앱으로 연결하면 된다.


12. 부팅이 완료 되면 root/root 입력 후 로그인후 사용하면 된다.







Putty Session List Export / Import


Putty에 등록된 세션 리스트 정보를 백업하여 다른 곳에 그대로 사용할 경우 아래과 같이 Registry에 등록 된 값을 이용할 수 있다. 

1. Putty Session Export 
1) cmd.exe
Session 만 내보내기 ( Only Sessions )
regedit /e "%USERPROFILE%\Desktop\putty-sessions.reg" HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\Sessions

모든 세팅 정보 내보내기 ( All Settings)
regedit /e "%USERPROFILE%\Desktop\putty.reg" HKEY_CURRENT_USER\Software\SimonTatham

2) powershell.exe
Session 만 내보내기( Only Sessions )
reg export HKCU\Software\SimonTatham\PuTTY\Sessions ([Environment]::GetFolderPath("Desktop") + "\putty-sessions.reg")

모든 세팅 정보 내보내기( All Settings)
reg export HKCU\Software\SimonTatham ([Environment]::GetFolderPath("Desktop") + "\putty.reg")

2. Putty Session Import
1) cmd.exe
## Only Sessions List
regedit /i putty-sessions.reg 

## All Setting Info
regedit /i putty.reg

2) Powershell.exe
## Only Sessions List
reg import putty-sessions.reg

## All Setting Info
reg import putty.reg

Ansible Backup Cisco IOS Switch Config

Ansible은 누구나 쉽게 인프라를 관리할 수 있는 자동화 도구로 Agent가 필요하지 않으며, 특히 네트워크 장비를 가장 완벽하게 관리할 수 있는 자동화 도구이다.

Ansible은 기타 다른 자동화 도구와는 다르게 Agent가 필요없으며, 기본적으로 SSH를 통한 암호화 통신을 통해 원격 접근 및 자동화 관리가 가능하다. 따라서 Cisco 스위치를 Ansible을 이용해서 관리하기 위해서는 SSH 통신이 되도록 우선 설정이 되어 있어야 한다.
  Cisco 장비 SSH 설정방법은 아래 블로그 내용을 확인해 보면 된다.

Cisco Switch SSH 접속 설정 하기



네트워크 엔지니어로 가장 중요한 스위치 Config 백업을 Ansible을 활용하여 구성하는 방법에 대해 설명해보도록 하겠다.  

1. Ansible host에 스위치 정보 입력.

 - vi /etc/ansible/hosts

## Host 그룹 및 host 지정
## []에 그룹명을 지정해 주고 하위에 hostname 및 host ip 정보등을 입력해 주면 그룹에 host가 등록이 된다.
[CiscoSW]
SW01 ansible_host=192.168.254.101

## 그룹에 대한 환경 변수 등록.
## [groupname:vars]형식으로 작성
[CiscoSW:vars]
ansible_network_os=ios
ansible_user=backup             ## User name 입력.
ansible_password=backupPW       ## User password 입력.
ansible_authorize=yes
ansible_connection=network_cli  
ansible_become=yes
ansible_become_method=enable
ansible_become_pass=enablePW    ## enable passwd 입력. ansible-vault를 이용하여 패스워드 등 
                                ## 중요한 정보를 암호화 하여 처리할 수 있다. 
                                ## vault에 대해서는 나중에 별도 섹션으로 포스팅하도록 하겠다.
                                


2. Ansible 스위치 Config Backup Playbooks 작성.

   - vi /etc/ansible/playbooks/swbackup.yaml 

---
- hosts: CiscoSW
  gather_facts: no

  tasks:
    
    - name: Backup switch (ios)
      ios_config:
        backup: yes
      register: backup_ios_location
      when: ansible_network_os == 'ios'

    - name: Create backup dir    ## 백업 Directory 경로 설정(없을 경우 자동 생성)
      file:
        path: "/tmp/backups/{{ inventory_hostname }}"
        state: directory
        recurse: yes

    - name : copy switch config backup to backup directory
      copy:
       src: "{{ backup_ios_location.backup_path }}"
       dest: "/tmp/backups/{{ inventory_hostname }}/{{ inventory_hostname }}_running-config.txt"


3. ansible-playbooks 실행

[root@ansible]# ansible-playbook /etc/ansible/playbooks/swbackup.yaml 

4. 실행 결과

[root@ansible]# ansible-playbook /etc/ansible/playbooks/swbackup.yaml 

PLAY [CiscoSW] *************************************************************************************************
TASK [Backup switch (ios)] *************************************************************************************
changed: [SW01]

TASK [Create backup dir] ***************************************************************************************
changed: [SW01]

TASK [copy switch config backup to backup directory] *******************************************************
changed: [SW01]

PLAY RECAP ****************************************************************************************************
SW01                       : ok=3    changed=3    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

[root@ansible]#


5. 백업 파일 확인.

[root@ansible]# cd /tmp/backups/SW01/
[root@office_zabbix SW01]# ls -al
drwxr-xr-x 2 root root    37 1227 18:03 .
drwxr-xr-x 4 root root    31 1227 18:03 ..
-rw-r--r-- 1 root root 10506 1227 18:03 SW01_running-config.txt
[root@ansible]#


  /tmp/backups/SW01/ 경로에 SW01_running-config.txt 이름으로 스위치 Config가 백업 된 것을 확인할 수 있다.

위에서는 1대의 장비만 가지고 구성하였는데 수십대 및 수백대의 장비가 있다고 하더라고 Hosts 파일에 등록 해 놓으면 아주 편하게 스위치 장비를 백업 할 수 있다. 

Centos Ansible Install


Centos Ansible 설치 방법
  1. 최신버전 설치를 위한 epel-release 업데이트
    - yum install epel-relrease -y
  2. Ansible install
    - yum install ansible -y
 # ansible 설치 위치 :  /etc/ansible
 # ansible 구성 파일  /etc/ansible/ansible.cfg  

Ansible(앤서블) 이란?





Ansible - Introduction
IT Automation & ConfigurationManagement
www.slideshare.net




Strongswan IPSEC-VPN Configuration For CentOS


구글 이나 AWS 등의 Public Cloud 를 사용하는 경우, 또 해외 등에 IDC를 운영할 경우 터미널이나 중요한 포트 접근시 중계서버를 거치거나 공인IP를 통해 접속을 해야하는 경우가 발생하게 된다.

 이 경우 DB 서버나 개인정보등 중요한 데이터를 보관하고 있는 서버는 공인IP가 아닌 사설 IP만으로 통신하게 구성하는것이 안전하다. 이를 위해서는 VPN 가상 사설 망을 구성하여 내부 사설 IP끼리 통신이 가능하도록 구성할 수 있다.

  AWS나 구글 클라우드와 같은 유명 클라우드 업체에서는 전용 VPN 솔루션을 제공해 주고 있으며 약간의 비용을 지불하여 해당 VPN을 사용하는 것이 운영 측면에서 훨신 편리하다.  
 그러나 VPN 을 제공해주지 않는 업체도 있어서 이럴경우에 오픈소스를 활용하여 별도 VPN을 구축하여 사용할 수 있다. 이 글에서는 오픈소스 VPN 중 StrongSwan 에 대해 알아보고 설치 및 설정하는 방법을 설명하려고 한다. 

StrongSwan
  - StrongSwan은 OpenSource IPsec 기반 VPN 솔루션으로 IKEv1 및 IKEv2 ( RFC 7296 ) 키 교환 프로토콜을 모두 구현하며, 가장 강력한 인증 메커니즘에 포커스를 맟춘 프로젝트 이다.
  - 또한 멀티플랫폼 IPSEC을 구현하여, 타사 벤더의 방화벽이나 VPN 장비와 문제 없이 연동이 가능하다.

<구성도 예시 >
 아래와 같이 본사 방화벽과 클라우드간 VPN 을 구성하려고 한다. 


1. StrongSwan 설치.
  - strongswan Repository 추가 및 설치
     wget http://download-ib01.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-7-12.noarch.rpm 
     rpm -Uvh epel-release-7-12.noarch.rpm 
     yum install strongswan

2. 패킷 포워딩 활성화
  - vi 편집기 로 /etc/sysctl.conf 파일 내용 추가

net.ipv4.ip_forward=1net.ipv4.conf.all.accept_redirects = 0net.ipv4.conf.all.send_redirects = 0net.ipv4.ip_no_pmtu_disc = 1

3. ipsec.conf 터널 파일 설정

# ipsec.conf - strongSwan IPsec configuration file
# basic configuration
    strictcrlpolicy=no
    uniqueids = no
    charondebug="cfg 2, ike 2, knl 2"
# Add connections here.
conn officevpn
    authby=secret
    auto=start
    type=tunnel
    leftauth=psk
    rightauth=psk
    left=2.2.2.2          // Local IP Assress 
    leftsubnet=10.10.10.0/24,10.10.20.0/24  // Local VPN 사용 대역
    right=1.1.1.1       // Remote VPN IP
    rightsubnet=192.168.0.0/24, 172.16.100.0/24  // Remote VPN 대역 IP
    leftfirewall=no
    keyexchange=ikev2         // ikev2 사용(Multisubnet 지원)
    ike=aes128-sha1-modp2048    // pharse 1 인증 방식 설정.
    ikelifetime=28800             // pharse 1 key lifetime
    esp=3des-md5-modp2048     // pharse 2 인증 방식 설정.
    lifetime=3600                 // pharse 2 key lifetime
    compress=no
    keyingtries=%forever

※ 참고로 MultiSubnet을 사용할 경우 인증키는 ikev1이 아닌 ikev2로 사용을 해야 한다. 확인해본 결과 ikev1은 여러개 서브넷을 지원하지 않고 가장 마지막에 설정한 IP대역만 할당하는 것을 확인하였다. 

4. 암호화 인증키 값 설정
 인증방법은 인증서를 사용하거나 presharedkey 값을 통한 인증방식이 있으며, 여기서는 presharedkey를 통한 인증 방법을 사용하였다. 추후 기회가 되면 인증서를 활용하는 방법에 대해서도 포스팅을 해 보겠다.
 - ipsec.secret 값 설정. ( vi /etc/strongswan/ipsec.secret , 패스워드는 임의의 값 지정. )

1.1.1.1 : PSK "password"
2.2.2.2 : PSK "password"

5. strongswan 시작 및 상태 확인.

 - strongswan start
 - strongswan statusall 


[root@vpn ~]# strongswan statusall
Status of IKE charon daemon (strongSwan 5.7.2, Linux 3.10.0-957.21.3.el7.x86_64, x86_64):
  uptime: 2 hours, since Nov 20 10:30:51 2019
  malloc: sbrk 2801664, mmap 0, used 624976, free 2176688
  worker threads: 11 of 16 idle, 5/0/0/0 working, job queue: 0/0/0/0, scheduled: 6
  loaded plugins: charon pkcs11 tpm aesni aes des rc2 sha2 sha1 md4 md5 mgf1 random nonce x509 revocation constraints acert pubkey pkcs1 pkcs7 pkcs8 pkcs12 pgp dnskey sshkey pem openssl gcrypt fips-prf gmp curve25519 chapoly xcbc cmac hmac ctr ccm gcm curl attr kernel-netlink resolve socket-default farp stroke vici updown eap-identity eap-sim eap-aka eap-aka-3gpp eap-aka-3gpp2 eap-md5 eap-gtc eap-mschapv2 eap-dynamic eap-radius eap-tls eap-ttls eap-peap xauth-generic xauth-eap xauth-pam xauth-noauth dhcp led duplicheck unity counters
Listening IP addresses:
  2.2.2.2
Connections:
   officevpn:  2.2.2.2...1.1.1.1  IKEv2
   officevpn:   local:  [2.2.2.2] uses pre-shared key authentication
   officevpn:   remote: [1.1.1.1] uses pre-shared key authentication
   officevpn:   child:  10.10.0.0/16 === 192.168.0.0/24 172.16.100.0/24 TUNNEL
Security Associations (1 up, 0 connecting):
   officevpn[3]: ESTABLISHED 2 hours ago, 2.2.2.2[2.2.2.2]...1.1.1.1[1.1.1.1]
   officevpn[3]: IKEv2 SPIs: 6fd2c767e22898ba_i 03421dd57066da71_r*, pre-shared key reauthentication in 5 hours
   officevpn[3]: IKE proposal: AES_CBC_128/HMAC_SHA1_96/PRF_HMAC_SHA1/MODP_2048
   officevpn{6}:  INSTALLED, TUNNEL, reqid 2, ESP SPIs: c4dcdcf1_i a88939db_o
   officevpn{6}:  3DES_CBC/HMAC_MD5_96/MODP_2048, 6383 bytes_i (67 pkts, 0s ago), 6689 bytes_o (43 pkts, 7s ago), rekeying in 32 minutes
   officevpn{6}:   10.10.0.0/16 === 192.168.0.0/24 172.16.100.0/24
[root@vpn ~]#

Elasticsearch Heap Size

  Elasticsearch는 Java 기반으로 동작을 합니다. Java는 가비시 컬렉터 (garbage-collected)에 의해서 관리가 되며, Java 객체는 힙(Heap) 이라고하는 메모리의 런타임 영역에 상주합니다.  Elasticsear...