레이블이 hosts인 게시물을 표시합니다. 모든 게시물 표시
레이블이 hosts인 게시물을 표시합니다. 모든 게시물 표시

vpn 상에서 수정된 hosts 파일 원복 문제

mac(catalina) vpn(pulse secure)이 연결된 상태에서
sudo vi /etc/host 수정 저장시 다음과 같은 문구가 나온다.
"/private/etc/hosts"
경고: 파일이 읽은 뒤에 바뀌었습니다!!!
정말로 쓰기를 원하십니까 (y/n)?

그런데 vpn 연결을 끊고 나면 /etc/hosts 파일이 수정 전의 상태로 돌아온다.
/etc/hosts 의 변경 시간을 보니 vpn 연결 끊을때 변경(업데이트)된다.
vpn 연결되면 /etc/hosts 맨 위에 다음과 같이 vpn 이 추가한 호스트가 명시된다.

# BEGIN hosts added by Pulse
x.x.x.x vpn.ysoftman.com

# END hosts added by Pulse
vpn 연결 후 hosts 파일은 vpn 연결 상태에서만 유효하다.

pulse secure 의 경우
vpn 연결전 /etc/hosts -> /etc/pulse-hosts.bak 로 백업하고
vpn 해제되면 /etc/pulse-hosts.bak -> /etc/hosts 로 복원한다.
그래서 vpn 연결 상태에서 /etc/hosts 를 수정시 백업하지 않으면
vpn 해제 후 vpn 연결전의 hosts 내용으로 돌아간다.

참고로 최근 확인 결과 vpn 연결 전/후 모두 같은 /etc/hosts 를 사용해 문제가 없다.
vpn 버전이나 기타 환경에 따라 pulse-hosts.bak 사용하는것 같다.

chrome hosts 설정 적용

# 임시로 도메인을 변경해 테스할때 /etc/hosts 수정하게 되는데
# chrome 브라우저에서는 변경한 도메인을 사용하지 않는 경우가 있다.
# /etc/hosts 에 잘못된 ip 로 도메인 설정해서 적용 여부를 확인
10.10.10.10    www.google.com

# curl 로 연결이 안되는 것을 확인한다.
curl --connect-timeout 1 www.google.com
curl: (28) Connection timed out after 1001 milliseconds

# chrome 에서 www.google.com 열면 잘 된다.(로컬 도메인이 설정 적용 안됨.)
# 해결방법1
# safari, firefox 들도 모두 프로세스를 끝내고 다시 시작하면 된다.
# chrome 프로세스를 끝내고 다시 시작한다.

# 해결방법2
chrome://net-internals/#sockets  --> flush socket pools 실행

MySQL ERROR 2013 (HY000)

VirtualBox(vb) 에서 게스트OS(Ubuntu)에서 MySQL 을 구동하고 호스트 OS 에서 접속하는경우 발생했다.

# Ubuntu MySql 구동
# my.cnf 수정
sudo vi /etc/mysql/my.cnf
port = 13306
#bind-address       = 127.0.0.1 # 127.0.0.1로 접속 가능하도록 주석처리

# mysql 재시작
sudo /etc/init.d/mysql restart

# vb 네트워크 설정에서 13306 포트 포워딩으로 게스트OS 로 접속가능하도록 함
# 접속 시도
mysql -h 127.0.0.1 -P 13306 -u root -p

# mysql 접속시 다음과 같은 에러 발생
ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 0

# hosts.allow에 외부 호스트에서 접속 허용되어 있지 않기 때문에 발생하였다.
# mysqld 가 모든 호스트로 부터 접속을 허용하도록 함
sudo vi /etc/hosts.allow
mysqld: all

Linux ssh 로 다중명령 실행하기

# 우선 kerberos 환경 구성이 되어 있어야 한다.
# kerberos 서버 설정
vi /etc/krb5.conf
[libdefaults]
default_realm = ysoftman.com
[realms]
ysoftman.com = {
  kdc = kauth.ysoftman.com
  admin_server = kadmin.ysoftman.com
  kpasswd_server = kadmin.ysoftman.com
}

# 만약 다음과 같은 에러가 발생한다면
kinit : Cannot contact any KDC for realm 'ysoftman.com' ...

# 각 서버의 디폴트 포트는 다음과 같고 포트까지 명시해보자
kdc = kauth.ysoftman.com:88
admin_server = kadmin.ysoftman.com:749
kpasswd_server = kadmin.ysoftman.com:464 # on UDP


# 디폴트 경로 대신 환경변수로 krb5.conf 경로를 변경할 수도 있다.
KRB5_CONFIG="${HOME}/krb5.conf"

# ssh 기본 설정
vi /etc/ssh/ssh_config
Host *
HashKnownHosts yes # ~/.ssh/known_hosts 에 접속한 호스트들 hash로 기록
GSSAPIAuthentication yes # GSSAPI 인증  사용

# 이제 ssh 접속이 암호를 물어보는 과정을 스킵하기 위해
# 다음과 같이 해당 아이디에 암호를 입력하고 티켓을 획득한다.
kinit ysoftman

# 티켓 획득 후 티켓 정보 확인
klist

# ssh 로 다중 명령을 실행하려면 "" 사이에 명령을 ; 으로 구분하여 사용한다.
# 형식은 다음과 같다.
ssh -l ysoftman servername "command1; command2; command3;"

# 예를 들어 /home1 로 이동해서 현재 디렉토리를 파악하고 파일 리스트 출력하려면
ssh -l ysoftman servername "cd /home1/; pwd; ls -ahl;"


#####


# tar 로 압축한 파일 ssh 로 전송하기
tar cvzf - ./testdir | ssh ysoftman@ysoftman.server.test "dd of=/home/ysoftman/ysoftman.tar.gz"


#####


# 테스트를 위한 임시 서버 리스트 파일 생성
echo 'server-lemon
server-apple
server-orange' > temp_server_list.txt

# 여러 호스트에 ssh 명령 실행
# stdin(< temp_server_list.txt) 파이프라인을 사용중 ssh 로 원격 명령실
while read server
do
    echo ${server}
    # stdin("hostname" 명령) 을 사용하면 기존 stdin(< temp_server_list.txt)이 끝나게 되어 루프가 끝나게 된다.
    # < /dev/null 로 stdin 을 사용하지 않도록 한다.
    # -o "StrictHostKeyChecking no" 접속시 호스트 체크 안하기
    out=`ssh -o "StrictHostKeyChecking no" ysoftman@server "hostname" < /dev/null`
    echo ${out}
done < temp_server_list.txt


Linux 시스템 다양한 정보 보기, 성능 분석

# 시스템 정보 보기 (호스트네임,커널,프로세서,OS,..etc)
uname -a

# linux 이름 및 버전 정보 보기
vi /etc/issue

# 또는
cat /etc/*-release

# 사용자 리스트
vi /etc/passwd

# CPU 정보
vi /proc/cpuinfo

# memory 정보
vi /proc/meminfo

# 또는
# -m MB 로 표시, -g GB 로 표시,...etc
free -m

# 또는
# virtual memory 상태 -w wide
vmstat -w

# 또는
# -s status -S m MB 로 표시
vmstat -s -S m

# vmstat,mpstat,sar 설치
yum install sysstat

# memory 사용률 1초마다 갱신해서 5번까지 보기
vmstat 1 5

# 시스템 성능 통계
# cpu 사용률 1초마다 갱신해서 5번까지 보기
sar 1 5

# process 사용률 1초마다 갱신해서 5번까지 보기
mpstat 1 5

# Disk 별 uuid 정보
ls -ahl /dev/disk/by-uuid/

# Disk 사용량 보기
df -h

# 부팅 후 운용시간 보기
uptime

# dns 서버 설정
vi /etc/resolv.conf

# host 커스텀 설정
vi /etc/hosts

# hostname 보기
cat /proc/sys/kernel/hostname

# 시스템 정보
sudo dmidecode -t system

# 메모리 정보
sudo dmidecode -t memory

# 바이오스 정보
sudo dmidecode -t bios

# 소켓 간단한 상태 보기
cat /proc/net/sockstat

# 소케 메모리 사용량 확인
netstat -m

# 소켓 사용 현황 보기
# -n(numberic ip 로 표현, 도메인 리졸브 안함)
# -a(all)
# -t(tcp)
netstat -nat

# 또는
ss -nat

# 도메인 ip 보기
nslookup google.com

# 또는(좀더 자세하다.)
dig google.com

# 패킷 라우팅 보기
traceroute google.com

# 포트 범위
sysctl net.ipv4.ip_local_port_range

# 또는
cat /proc/sys/net/ipv4/ip_local_port_range

# tcp 관련 설정 정보
sysctl -a | grep net.ipv4.tcp

# 프로세스가 사용하는 시스템 콜 api 보기
sudo yum install strace
strace 명령어

# 예) ls 명령에서 open 시스템 콜만 골라 보기
strace -e trace=open ls

# 예) 실행중인 프레스 attach 해서, 결과 파일로 쓰기
strace -p 프로세스id -o zzz.strace

# 열린 파일 리스트
sudo yum install lsof
lsof

# 1234 포트 사용중인 파일 리스트
# 해당 PID 를 파악할 수 있다.
lsof -i :1234

# rsync 커맨드가 사용중인 파일 리스트
lsof -c rsync

# io 트랙픽 보기
sudo yum install iotop
sudo iotop

# network 트래픽 보기
# -i  eth0 으로 특정 네트워크 인터페이스를 지정할 수 있다.
sudo yum install iftop
iftop

# 시스템 부팅 시 메시지
dmesg -e

# 에러, startup, shutdown 등의 각종 시스템 이벤트 로그
sudo vi /var/log/messages


#####


# mac 참고
# 모든 정보
sysctl -a

# cpu 브랜드 이름
sysctl -a | grep cpu.brand_string

# cpu 개수
sysctl -n hw.ncpu

# 메모리 크기
sysctl -n hw.memsize

# 메모리 사용량 1초마다 보기
vm_stat  1

# 컴퓨터 이름 보기
networksetup -getcomputername

# 컴퓨터 이름 설정
networksetup -setcomputername "ysoftman macbook pro"

# 사용 가능한 네트워크 종류 보기
networksetup -listallnetworkservices

# 연결중인 네트워크 리스트
networksetup -listallhardwareports

# wi-fi(listallnetworkservices 중하나) 정보
networksetup -getinfo wi-fi

# en0(보통 wi-fi) 끄기
networksetup -setairportpower en0 off

# en0(보통 wi-fi) 켜기
networksetup -setairportpower en0 on

# airport(wi-fi) 상태 정보
/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport -I

# 시스템 자세한 정보
system_profiler

# 시스템 자세한 정보(app)
spotlight -> 시스템 정보.app(또는 system profiler 로 실행)

# 시스템 메시지(로그)
# mac 에선 dmesg 로 부팅 로그 전체를 볼 수 없어 log 를 사용하는것이 좋다.
# log 는 dmesg 를 포함한 시스템 로그를 취합해 보여준다.
# start 날짜 이후의 시스템 메시지
log show --start "2010-02-19"

# 실시간 시스템 로그 보기
log stream

# 로그 전체 삭제
sudo log erase --all

# 시스템 로그 파일
vi /var/log/system.log

# 참고 리눅스에서 상황/대상별에 맞는 분석/성능 툴
http://www.joyent.com/blog/linux-performance-analysis-and-tools-brendan-gregg-s-talk-at-scale-11x