상세 컨텐츠

본문 제목

linux network

Devops 도전기/linux

by 끝까지해봐야지 2021. 11. 1. 16:07

본문

Network Tool

ifconfig : 네트워크 인터페이스의 정보를 확인할 때 사용하는  명령어
 > IP주소, Broadcast 주소 , MAC 주소, Interface 카드의 성능 정보등을 확인
ifconfig [장치명] up/down (활성화/비활성화)
ifconfig [장치명] [변경할 IP] netmask [netmask 주소] bradocast [broadcast주소]
> ip주소를 잠시 변경하는 작업 / 영구적 변경 x 
>system 재 부팅 및 network 프로세스를 재 시작 할 경우 기존 IP주소로 돌아옴

route -n : 기본 G/W 주소 확인 기본 G/W 주소 추가 명령어
>route add default gw [G/W주소]
>route del default gw [G/W주소]

netstat [option] -> 네트워크 상태정보 및 프로토콜 /포트 정보 확인
> [주요 옵션]
> -a : 모든 소켓정보 출력, -n: 10진수 수치 정보로 출력, -t: tcp 소켓연결정보 출력 -p: 각 소켓에서 실행되는 프로그램이름과 프로세스 ID 출력

TCP 상태정보
LISTEN 관련 프로세스 활성화 상태이며, 연결 가능한 상태를 말함
ESTABLISHED 앞의 3 단계 연결과정 완료 후 데이터 통신이 가능한 상태
CLOSED 연결이 완전히 종료

traceroute [IP] 내부통신문제 확인용




static 설정 특징 ( 수동 설정 )
- IP 주소를 체계적으로 관리할 수 있다
- 관리자가 원하는 곳에 원하는 IP 주소를 설정 어느 서버에 어떤 IP가 할당 되었는지 파악이 쉽다
-DHCP 서버의 고장으로 인한 IP주소가 사용 불가 상태가 되지 않는다

Linux System에 IP 주소 수동 설정하기
vi /etc/sysconfig/network-scripts/ifcfg-[Interface 장치이름]
> Interface 장치 이름은 ifconfig 명령어를 이용하여 확인이 가능하다
> ens32 이러한 이름을 갖는다
> 현재 내가 사용중인 interface의 이름을 ifcfc-뒤쪽에 정확히 적어주어야 한다

주요설정 목록
DEVICE : 인터페이스 장치명
BOOTPROTO : 프로토콜 지정 (static, dhcp)
BROADCAST : Broad Cast 주소
HWADDR : 하드웨어주소 (MAC)
IPADDR : IP 주소 (static)
NETMASK : netmask
NETWORK : Network 대표주소
ONBOOT : 부팅시 활성화 여부
TYPE : 데이터링크 계층의 타입 (ethernet)
GATEWAY : G/W 주소
DNS1 : DNS 서버주소
UUID : 장치정보

네트워크 설정적용을 위해 재시작
systemctl restart : 특정 프로그램 켜거나 끄고 재시작할때


IP Binding 
> 하나의 네트워크 인터페이스 카드에 여러개의 IP주소를 할당하는 기술
> 1대의 linux server에서 여러개의 service를 운영할때 주로 사용된다

i.e
ifconfig ens32:0 192.168.1.101
ifconfig ens32:1 192.168.1.102
재시작시 설정이 날아간다
설정을 유지하고 싶으면 새로 설정한다

i.e

cd /etc/sysconfig/network-scripts/
cp ./ifcfg-ens32 ./ifcfg-ens32:0
vi ifcfg-ens32 UUID / HWADD 주석처리
vi ifcfg-ens32:0
TYPE=Ethernet
BOOTPROTO=none
DEFROUTE=yes
NAME=ens32:0
DEVICE=ens32:0
ONBOOT=yes
IPADDR=192.168.1.101
PREFIX=24
GATEWAY=192.168.1.2
DNS1=8.8.8.8

systemctl restart network 설정후 명령어 입력해서 재시작








Channel bonding 여러개의 네트워크 인터페이스를 하나로 묶는다 

libvirtd를 종료해야한다
명령어 
[root@VM01 ~]# virsh net-undefine default
[root@VM01 ~]# virsh net-destroy default
[root@VM01 ~]# systemctl stop libvirt
[root@VM01 ~]# systemctl disable libvirtd


NAT 추가후 
[root@VM01 ~]# systemctl start NetworkManager
[root@VM01 ~]# nmcli connection

ifconfig


ens32: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.128  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::20c:29ff:fe3d:2ee1  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:3d:2e:e1  txqueuelen 1000  (Ethernet)


ens34: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.133  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::a9ce:f8e2:c048:fe28  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:3d:2e:eb  txqueuelen 1000  (Ethernet)


[root@VM01 ~]# nmcli connection

NAME         UUID                                  TYPE      DEVICE
ens32        152beb06-47c5-c5e8-95a9-385590654382  ethernet  ens32
유선 연결 1  85b999ba-584a-3df1-bbdc-5011ca19184c  ethernet  ens34





[root@VM01 ~]# cd /etc/sysconfig/network-scripts/
[root@VM01 network-scripts]# vi ifcfg-ens32
[root@VM01 network-scripts]# cp ifcfg-ens32 ifcfg-ens34
[root@VM01 network-scripts]# vi if


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


Channel bonding = 네트워크 메니저를 끄는게 좋다

패키지 설치여부 확인

[root@VM01 network-scripts]# rpm -qa | grep bind-uti
bind-utils-9.11.4-16.P2.el7.x86_64
[root@VM01 network-scripts]# rpm -qa | grep ethtoo
ethtool-4.8-10.el7.x86_64
python-ethtool-0.8-8.el7.x86_64


>여러개의 NIC를 논리적인 장치로 묶어 단일 channel을 운영하는 것을 말함
>Fault tolerance 환경을 구축하고 NIC에 대한 Redundancy 를 구현한다 
>하나의 NIC에 문제가 발생하더라도 반대쪽 NIC가 정상적인 통신을 지원하게 된다.
> 부하도가 많은 장치의 경우 채널 본딩을 통하여 트래픽 분산(load balancing 
)을 수행할수 있다 
> 모드가 여러개있으며 0번모드가 default
4번모드가 환경지원이 되면 가장 효과적임




* virbr0 지우는 방법
- 채널본딩 작업시 virbr0가 있으면 불편해서 삭제 작업 먼저 하기

# yum -y install libvirt-client
# virsh net-destroy default
# virsh net-undefine default
# systemctl stop libvirtd
# systemctl disable libvirtd


[ channel bonding 준비 작업 ]
- Edit~에서 network adapter NET로 1개 더 추가 하기

# systemctl start NetworkManager   : 추가한 장치가 안 보일때
# systemctl enable NetworkManager
# nmcli connection
NAME         UUID                                  TYPE      DEVICE
유선 연결 1    d6c7b7f7-d945-3332-84ab-104358eb6349  ethernet  ens34
ens32        152beb06-47c5-c5e8-95a9-385590654382  ethernet  ens32

# cd /etc/sysconfig/network-scripts/
# vi ifcfg-ens32 : UUID값이 바뀌었으면 수정!
# cp ifcfg-ens32 ifcfg-ens34
# vi ifcfg-ens34 : ifconfig 해서 나온 내용으로 수정!
# systemctl restart network
# ifconfig ens34 up
# ifconfig : ens34 확인 가능


[systemctl] 
Linux system 에서 제공되는 각종 서비스 및 시스템 수준을 제어할 때 사용하는 명령어
서비스를 제어하는 용도로 많이 사용된다
centOS7에서 default Run-Level1을 지정하는 용도로 사용 모드 3,5번을 주로 사용한다

systemctl get-default :현재 모드 확인가능
systemctl set-default [multi/graphic] 로 모드 변경가능


[ 서비스 제어 시 사용되는 지시어]
start  : 서비스 시작
restart : 서비스 재시작
reload : 서비스 설정 불러오기
stop : 서비스 중지
status  : 서비스 상태확인 [문제생겼을때 확인용]*
enable : 서비스 자동시작
disable : 서비스 자동시작 해제

[사용 형식]

CentOS7
systemctl start [데몬명]
systemctl restart [데몬명]
systemctl reload [데몬명]
systemctl stop [데몬명]
systemctl status [데몬명]
systemctl enable / disable [데몬명] 서비스 자동시작 등록 / 해제

CentOS6
service [데몬명] start
service [데몬명] restart
service [데몬명] reload
service [데몬명] stop
service [데몬명] status
chkconfig [데몬명] on /ff = 자동시작 시작 /해제

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

[방화벽]

firewalld = run time (실시간 확인용) 1회성 등록/ permanent (영구적으로 실행하고싶으면)

in = 외부로부터 내부로 들어오는것 / 기본적으로 전부 거부
i.e in : TCP/80 /53 /22 allow 
22 ssh
53 dns
80 http

out = 시스템에서부터 외부로 나가는것 / 기본적으로 전부 허용


firewalld 사용법
firewall-cmd : firewall 데몬을 활용한 방화벽 규칙을 사용할 때 사용되는 명령어

[주요옵션]
--permanent : 영구적 설정을 진핼할때 사용
--reload : permanent 영역에 정의 된 방화벽 규칙을 run-time 영역으로 불러오기

--add-service="서비스명" : 지정 한 서비스에 매치되는 방화벽 규칙을 추가
--remove-service="서비스명" : 지정 된 서비스에 해당되는 방화벽 규칙을 제거
-> 포트번호 몰라도 등록 가능 / 등록된 서비스명만 가능 

--add-port="port번호/protocol(TCP|UDP)": 지정된 port를 방화벽 규칙에 추가
--remove-port="port번호/protocol(TCP|UDP)": 지정된 port를 방화벽 규칙에서 제거

--list-all : 방화벽 규칙전체목록 확인


firewall-cmd --get-default-zone = firewall의 기본영역 확인 / 종류가 다양하다

firewall-cmd --set-default-zone=dmz - > dmz로 바꾸고 싶을때
 
[기본영역]

1. dmz
> IN : SSH를 제외한 나머지 전무 Deny
> OUT : 모든 데이터 허용
2. drop
> IN : 모든 데이터 거부
> OUT : 모든 데이터 거부 
3. public 
> IN : SSH, DHCPv6-client를 제외한 나머지 전부 deny
> OUT : 모든 데이터 허용 

[root@VM01 ~]# firewall-cmd --list-all  - > 런타입 영역 확인 / 허용이 적을수록 보안이좋다
icmp-block-inversion: no -> 핑 허용 
  services: dhcpv6-client ssh -> 서비스 이름


[root@VM01 ~]# firewall-cmd --permanent --add-icmp-block=echo-request : 핑 차단을 원할때


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

DHCP 서비스
- 클라이언트 컴퓨터나 다른 TCP/IP 기반 네트워크 장치에 IP 주소를 제공하는 서비스
- IP와 함께 라우터(G/W), DNS 서버 같은 네트워크 리소스와 연결할 수 있도록 옵션 제공
- DHCP 클라이언트에 특정 기간 IP를 임대하며 갱ㅇ신을 요청하는 경우 IP 주소를 갱신
- 특정 컴퓨터나 장치에 IP 주소 예약이 가능하다
- Port 번호는 Server (UDP :67 ) , Client (UDP: 68) 사용한다

DHCP 주소 임대 과정
DHCP Discover client to server 주소를 요청  -> broad cast로 신청 ip가 부여되지 않아서
DHCP Offer server to client  사용할 주소를 제공
DHCP Request client to server 제공받는 주소 사용을 승인
DHCP ACK server to client  주소 사용 승인 



DHCP 설정법
VM01 에서
[root@VM01 ~]# yum -y install dhcp-*  -> 패키지 설치
[root@VM01 ~]# rpm -qa | grep dhcp -> 패키지 설치 확인
[root@VM01 ~]# ls -ld /etc/dhcp/dhcpd.conf - > 메인설정 파일
[root@VM01 ~]# vi /etc/dhcp/dhcpd.conf 들어가서
subnet 192.168.1.0 netmask 255.255.255.0 {
        range 192.168.1.50 192.168.1.100;
        option domain-name-servers 8.8.8.8;
        option routers 192.168.1.2;
        option broadcast-address 192.168.1.255;
        max-lease-time 7200;
}

위와같이 설정
[root@VM01 ~]# systemctl restart dhcpd -> 설정 적용위해 재시작
[root@VM01 ~]# firewall-cmd --permanent --add-service=dhcp -> 방화벽에 dhcp 등록
[root@VM01 ~]# firewall-cmd --reload -> runtime 에서 실행되도록 설정
[root@VM01 ~]# firewall-cmd --list-all -> 확인



[root@VM01 ~]# ls -ld /var/lib/dhcpd/dhcpd.leases -> IP 임대 정보들


client 에서 설정
ncpa.cpl = 네트워크 연결 설정 -> CMD 명령어
ipconfig /renew  =재 갱신 / dhcp 가 자동으로 설정되어 있어야한다
ipconfig /release = 해제   / dhcp 가 자동으로 설정되어 있어야한다

[윈도우 > MAC Address 구분자 (-) ]  00-0C-29-AD-59-56
[ 리눅스 > MAC Address 구분자 (:) ]  00:0C:29:AD:59:56



'Devops 도전기 > linux' 카테고리의 다른 글

linux Samba 사용법  (0) 2021.11.01
linux nfs 사용하기  (0) 2021.11.01
shell script 실습 정리  (0) 2021.11.01
RAID 개념과 간단 실습  (0) 2021.11.01
linux 압축 및 파일 묶기  (0) 2021.11.01

관련글 더보기