Network
목차
OSI 7 계층 구조
계층 |
장비 | 상세 | |
7 |
Application Layer (응용 계층) |
L7 Switch Gateway |
|
6 |
Presentation Layer (표현 계층) |
Gateway |
|
5 |
Session Layer (세션 계층) |
Gateway |
|
4 |
Transport Layer (전송 계층) |
L4 Switch Gateway |
|
3 |
Network Layer (네트워크 계층) |
Router L3 Switch |
|
2 |
Data Link Layer (데이터 링크 계층) |
Bridge L2 Switch |
|
1 |
Physical Layer (물리 계층) |
Repeater Hub |
|
Linux
Ubuntu Server Network 설정
- Ubuntu Server에 있는 네트워크 카드명을 확인 한다.
- ifconfig -a : lo, eth0, eth1 등의 이름을 확인할 수 있다.
- 네트워크 카드(eth0)를 유동 아이피(DHCP)로 설정할 경우
- vi /etc/network/interfaces 파일에서 다음과 같이 추가 또는 수정 한다.
auto eth0 iface eth0 inet dhcp
- Network Card를 재시작 합니다.
ifdown eth0 ifup eth0
- /etc/init.d/networking restart : Network 재시작
- 네트워크 카드(eth0)를 고정 아이피로 설정할 경우
- vi /etc/network/interfaces 파일에서 다음과 같이 추가 또는 수정 한다.
auto eth0 iface eth0 inet static address 203.256.15.23 #--- address 앞부분은 tab을 사용해야 한다. netmask 255.255.255.0 network 203.256.15.0 broadcast 203.256.15.255 gateway 203.256.15.1 dns-nameservers 203.231.11.118 203.231.11.115
- vi /etc/resolv.conf 를 열어서 아래와 DNS 서버를 입력
- 가상 환경에서 NAT를 설정 하였을 경우 resolv.conf가 초기화 되는 문제가 발생 한다.
nameserver 164.124.101.2 nameserver 168.126.63.1 nameserver 203.231.11.118 nameserver 203.231.11.115 nameserver 210.220.163.82 nameserver 219.250.36.130
- /etc/init.d/networking restart : Network 재시작
- 참고 문헌 : Ubuntu 네트워크 설정
CentOS Network 설정
- CentOS에 있는 네트워크 카드명을 확인 한다.
- ifconfig -a : lo, eth0, eth1 등의 이름을 확인할 수 있다.
- /etc/sysconfig/network-scripts/ifcfg-eth0 에 네트워크 카드를 위한 설정이 저장 된다.
#--- eth0 네트워크 카드에 고정 IP 설정시 DEVICE=eth0 BOOTPROTO=static #--- none을 사용할 수 있습니다. ONBOOT=yes IPADDR=10.0.0.11 NETMASK=255.255.255.0 GATEWAY=10.0.0.1 TYPE=Ethernet USERCTL=no IPV6INIT=no PEERDNS=yes #--- eth4 네트워크 카드에 DHCP 설정시 DEVICE=eth4 TYPE=Ethernet ONBOOT=yes NM_CONTROLLED=yes BOOTPROTO=dhcp
- /etc/sysconfig/network
NETWORKING=yes NETWORKING_IPV6=no HOSTNAME=localhost.localdomain #--- 호스트명과 도메인명 지정 # HOSTNAME=localhost # DOMAINNAME=localdomain
- /etc/hosts #--- 호스트명 지정
127.0.0.1 localhost.localdomain localhost
- /etc/resolv.conf #--- DNS를 위한 네임서버를 지정 한다.
search local cloudserver.com nameserver 164.124.101.2 #--- 데이콤에서 사용하는 nameserver IP nameserver 168.126.63.1 #--- 코넷에서 사용하는 nameserver IP
- /etc/host.conf
#--- 호스트명 찾는 우선 순위 지정, hosts. /etc/hosts, bind. DNS 서버 multi on order hosts,bind #--- /etc/hosts 파일에서 찾고 없을 경우 DNS 서버에서 찾는다.
- vi /etc/hostname
osnode101.openstack.com
- 기타 설정 파일
vi /etc/services vi /etc/protocols
- Network 설정 GUI 명령어
system-config-network
- Network 설정이 마무리 되면 network 서비스를 재기동 한다.
ifdown eth0 ifup eth0 service network restart
- 참고 문헌
SSH Port Forwarding
- SSH Port Forwarding(SSH Tunneling), 2009.6
- SSH Port Forwarding 을 이용한 Proxy 설정, 2007.5
- http://www.joinc.co.kr/modules/moniwiki/wiki.php/Site/System_management/Proxy ]
IP Alias
- IP Alias는 하나의 인터페이스 카드에 여러개의 가상아이피(내부IP 또는 실제IP)를 설정하는 것
- Windows에서 IP Alias
- 네트워크 -> 속성
- Internet Protocol Version 4 (TCP/IPv4) 선택 -> 속성 -> 고급
- IP 주소 추가
- Ubuntu Server에서 IP Alias
- 임시 IP Alias 설정
ifconfig eth0:1 192.168.1.2 netmask 255.255.255.0 broadcast 192.168.1.255
- 영구 IP Alias 설정
cd /etc/sysconfig/network-script/ cp ifcfg-eth0 ifcfg-eth0:0 DEVICE=eth0:0 BOOTPROTO=static IPADDR=192.168.1.1 onBOOT=yes USERCTL=no DEVICE=eth0:1 onBOOT=yes BOOTPROTO=static IPADDR=192.168.1.2 NETMASK=255.255.255.0 NETWORK=192.168.1.0 BORADCAST=192.168.1.255 USERCTL=no
Bonding
NIC 여러개를 묶어서 하나의 NIC로 제공 합니다.
Bonding 방식
- 하나의 서버에 있는 NIC를 bonding
- 두개 이상의 서버에 있는 NIC를 bonding (특별한 H/W가 준비되어야 합니다)
Bonding의 다른 표현
- 이더넷 본딩(Ethernet bonding) : Linux 장비에서 사용하는 용어
- 포트 트렁킹(port trunking)
- 채널 티밍(channel teaming)
- NIC 티밍(teaming) : Windows Server에서 사용하는 용어
- 링크 통합(link aggregation) : Switch 장비 등에서 사용하는 용어
- 서로 다른 Network 장비 여러 NIC를 하나로 묶는 방법
- APA : HP 장비에서 사용하는 용어
vi /etc/sysconfig/network-scripts/ifcfg-bond0
apt-get install ifenslave
modprobe bonding
lsmod | grep bonding
참고 문헌
- https://www.linux.co.kr/home2/board/subbs/board.php?bo_table=lecture&wr_id=1844
- http://ktword.co.kr/abbr_view.php?m_temp1=2385
Route 설정
Route 조회
route
route -n
netstat -rn
netstat -r
ip route
ip route list
Route 등록
route add -net 아이피 netmask 넷마스크 gw ~ dev 장치명
ip route add 192.0.2.0/24 via 10.0.0.1 [dev ifname]
vi /etc/sysconfig/network-scripts/route-*
vi /etc/sysconfig/static-routes
Gateway
route add default gw 192.168.0.2 eth1
vi /etc/sysconfig/network
GATEWAY=192.168.0.1
CentOS Network
TCP/IP 설정
vi /etc/sysctl.conf #--- 커널 관련 설정 파일
/proc/sys/~ 파일에 설정값이 저장됨
sysctl -a #--- 설정값 조회
sysctl -w 변수="변수값" #--- 설정값 지정
sysctl -w net.ipv4.tcp_fin_timeout=30 #--- FIN_WAIT2의 timeout 시간을 30초로 지정 (Default는 60초 임)
참고 문헌
- TCP SYN_Flooding 공격의 원인과 해결책, 2005.8
- http://happyhourguide.blogspot.kr/2015/06/linux-performance-and-tuning-guidelines.html
NIC 설정
NIC 설정 파일 : /etc/sysconfig/network-scripts/ifcfg-* (eth0, eth1, ...)
DHCP 설정
DEVICE=eth2 TYPE=Ethernet ONBOOT=yes NM_CONTROLLED=yes BOOTPROTO=dhcp
Static 설정
DEVICE=eth0 BOOTPROTO=static ONBOOT=yes IPADDR=10.20.0.2 NETMASK=255.255.255.0 GATEWAY=10.20.0.1 TYPE=Ethernet USERCTL=no IPV6INIT=no PEERDNS=yes
Gateway
Gateway 조회
route
route -n
Gateway 설정
route add default gw 192.168.0.2 eth0
IP Masquerade (NAT)
IP Masquerade (MASQ, IPMASQ)는 Linux의 NAT 기능 입니다.
mkdir -p /etc/sysctl.d/
vi /etc/sysctl.d/nat.conf
net.ipv4.ip_forward = 1
net.ipv4.conf.eth0.send_redirects = 0
echo 1 > /proc/sys/net/ipv4/ip_forward echo 0 > /proc/sys/net/ipv4/conf/eth0/send_redirects
iptables (방화벽) 설정 eth0에 들어온 요청을 NAT 처리
iptables -t nat -A POSTROUTING -o eth0 -s 0.0.0.0/0 -j MASQUERADE iptables-save > /etc/sysconfig/iptables
다른 NIC에 들어온 요청을 eth0를 통하여 NAT 처리
iptables -A FORWARD -o eth0 -j ACCEPT iptables -t nat -A POSTROUTING -o etho -j MASQUERADE iptables-save > /etc/sysconfig/iptables
무작위 모드 (promiscous mode)
모든 네트워크 트래픽을 받아 들이도록 설정
ifconfig eth0 promisc
CentOS IP Alias
IP Alias는 NIC에 여러개의 IP를 부여하는 방법 입니다.
일시적으로 IP Alias 설정
ifconfig eth0:0 192.168.1.101 up ifconfig eth0:0 192.168.1.2 netmask 255.255.255.0 broadcast 192.168.1.255
영구적으로 IP Alias 설정 (eth0:0, eth0:1, ...)
vi /etc/sysconfig/network-scripts/ifcfg-eth0:0
Windows
Windows 8에서 네트워크 제한 오류 처리
네트워크 필터 갯수를 1개(Default)에서 8개로 늘임
- HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Network
- 이름: MaxNumFilters (없는 경우 만들면 됨)
- 종류: REG_DWORD
- 데이터: 8
연결 브리지
연결 브리지는 여러개의 네트워크를 연결하여 새로운 가상의 네트워크를 생성 한다. 이를 통해 연결 브리지된 네트워크는 새로 생성된 가상의 네트워크를 통해 외부에 접속할 수 있다.
- 두개의 네트워크를 연결하여 연결 브리지를 생성 한다.
- 연결 브리지인 "네트워크 브리지"가 생성된 것을 확인 한다.
- "네트워크 브리지"의 네트워크를 설정 한다.
- 네트워크 브리지에서 오른쪽 마우스를 선택 한 후 "속성"을 선택 한다.
- "어댑터"에서 "네트워크 브리지"에 포함된 네트워크를 선택할 수 있다.
- 연결 브리지는 하나의 네트워크 IP를 가지고 접속할 수 있고 연결 브리지에 포함된 네트워크("브리지됨"으로 표시됨)는 이 대표 IP로 외부와 통신을 한다.
-
- 기타 네트워크 설정은 기존의 네트워크 설정과 동일하므로 생략 한다.
- 참고 문헌
Windows 가상 랜카드
Windows에 포함되어 있는 Microsoft Loopback Adapter를 사용하여 가상의 랜카드를 추가하여 자체 네트워크를 구축 한다.
- Windeows Vista에서 "제어판 -> 추가 옵션 -> 하드웨어 및 소리 -> 하드웨어 및 장치 보기" 메뉴에서 네트워크 어댑터를 선택한 후 "동작 -> 레거시 하드웨어 추가" 메뉴를 선택하여 가상의 네트워크 어댑터를 추가 한다.
- "다음" 버튼을 선택하여 네트워크 어댑터를 추가 한다.
- "목록에서 직접 선택한 하드웨어 설치(고급)"을 선택한 후 "다음" 버튼을 누른다.
- "네트워크 어댑터"를 선택한 후 "다음" 버튼을 누른다.
- 네트워크 어댑터를 아래와 같이 선택 한다.
- "다음" 버튼을 선택하여 선택한 네트워크 어댑터를 설치 한다.
- "마침" 버튼을 눌러 네트워크 어댑터 설치를 완료 한다.
- 장치 관리자의 네트워크 어댑터에 "Microsoft Loopback Adapter"가 추가 된 것을 확인할 수 있다.
- 참고 문헌
Windows 7, Virtual WiFi Miniport Adapter
Windows 7에서 제공하는 Virtual WiFi Miniport Adapter를 사용하여 가상의 무선 AP를 만들어 봅시다.
- 인터넷이 연결된 어뎁터에서 속성을 선택 합니다.
- "공유"탭에서 "다른 네트워크 사용자가 이 컴퓨터의 인터넷 연경를 통해 연결할 수 있도록 허용"을 선택 합니다.
- "홈 네트워킹 연결"에서는 이미 존재하고 있는 Virtual WiFi Miniport Adapter를 선택 합니다.
- netsh wlan start hostednetwork
- 기타 설정
- netsh wlan show drivers
- netsh wlan show hostednetwork
- netsh wlan set hostednetwork mode=allow "ssid=My-PC" "key=12344321" keyUsage=persistent
Windows을 무선 액세스 포인터로
Windows 7을 무선 액세스 포인터로
Windows 7을 무선 액세스 포인터로 만들어 주는 Connectify를 설치하여 사용해 봅시다.
- Connectify 다운로드 사이트에서 ConnectifyInstaller.exe 를 다운로드 한다.
- 이름와 이메일 주소를 요구 합니다.
- 다운로드 받은 파일을 실행하여 Connectify를 설치 합니다.
- Tray에 있는 Connectify를 클릭하여 네트워크 설정을 한다.
- WiFi Name: "pnusSens", 무선으로 공유할 이름을 입력 한다.
- Password: 숫자로 10~16자리 암호를 입력 한다.
- Internet: "로컬 영역 연결", 공유할 네트워크를 선택 합니다.
- "Start Hotspot" 버튼을 누르면 설정이 완료 됩니다.
- 다른 컴퓨터에서 "pnusSens" 무선 네트워크를 검색하여 사용하면 됩니다. 접속시 암호는 위에서 입력한 암호를 사용 합니다.
- 참고 문헌
Windows 8을 무선 액세스 포인터로
- 참고 문헌
Windows 7 네트워크 공유하기
- "네트워크 및 공유 센터 -> 어댑터 설정 변경 -> 로컬 영역 연결 -> 속성 -> 공유" 메뉴를 선택 합니다.
- "다른 네트워크 사용자가 이 컴퓨터의 인터넷 연결을 통해 연결할 수 있도록 허용"을 체크 하고 "무선 네트워크 연결"을 선택 합니다.
- "네트워크 및 공유 센터 -> 무선 네트워크 관리 -> 추가" 메뉴를 선택 합니다.
- "애드혹 네트워크 만들기"를 선택하여 네트워크를 추가 합니다.
- 네트워크 이름 :
- 보안 종류 : WEP
- 보안 키 : 13자 입력
- "이 네트워크 저장" 체크
Windows 7 IP Routing
- regedit
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\ Services\Tcpip\Parameters\IPEnableRouter = 1
IP 주소
- 비공인 IP 주소 공간 (RFC 1918)
클래스 | 공인 IP | 사설 IP |
A |
|
|
B |
|
|
C |
|
|
D |
|
- Classless Inter-Domain Routing (CIDR)
- 10.0.0.0/16
- 10.0.0.0/28
- 172.16.0.0/16
Appliance
- 가상 환경에서는 4가지 형태의 Network 접속이 있다.
- PC -> Virtual Machine, Virtual Machine -> PC
- 외부 Network -> Virtual Machine, Virtual Machine -> 외부 Network
VMWare Network 설정
Network 모드 | 상세 설명 |
Birdge |
|
Host-only |
|
NAT |
|
VirtualBox Network 설정
- VirtualBox를 시작 한다.
- 가상 머신을 선택한 후 "설정" 버튼을 선택 한다.
- 새로 뜨는 창에서 네트워크 메뉴를 선택 한다.
- 어댑터 1에서 "다음에 연결됨"을 아래 사항을 참조하여 설정 한다.
다음에 연결됨 | 상세 설명 |
연결되지 않음 |
|
NAT (Network Address Translation) |
|
브리지 어댑터 (Bridged Adapter) |
|
내부 네트워크 (Internal networking) |
|
호스트 전용 어댑터 (Host-only Adapter) |
|
일반 드라이버 |
- 호스트에서만 테스트용으로 연동하여 사용할 경우 네트워크 설정
- "파일 -> 환경설정 -> 네트워크" 메뉴에서 VirtualBox Host-Only Ethernet Adapter를 추가 한다.
- IPv4 주소 : 192.168.~.1
- IPv4 서브넷 마스크 : 255.255.255.0
- 가상 시스템의 "설정 -> 네트워크" 메뉴에서 어댑터를 2개 추가 한다.
- 어댑터 1 : NAT (고정 IP를 설정하지 마세요)
- 어댑터 2
- 다음에 연결됨 : 호스트 전용 어댑터
- 이름 : 위에서 추가한 VirtualBox Host-Only Ethernet Adapter를 선택
VirtuaBox 포트 포워딩
- Port Forwarding, 일종의 서버에서의 IP 공유
- 가상 머신의 포트를 Host Machine의 포트와 연결 시켜서 Host Machine의 포트로 가상 머신을 접근할 수 있도록 하는 방법
- 아래는 VirtualBox에서 호스트의 2222 Port를 가상 머신의 22 Port로 연결하는 방법 이다.
- 주의: Linux와 Unix 계열의 경우, root 사용자로 실행되는 프로그램만이 호스트 포트가 1024보다 작을 수 있다.
- 가상 머신 이름 예 : alfresco, 처음 가상 머신을 만들 때 사용한 이름
- 네트워크 카드 이름 예 : pcnet, e1000
- pcnet : Pcnet-FAST III 등 사용 시
- e1000 : Intel PRO/1000 등 사용 시
- 포트 포워딩 이름 예 : guestssh, 임의로 정한다.
- Protocol : TCP, UDP
#--- Vista에서 명령 실행시 저장 오류가 발생할 경우 관리자 권한으로 cmd 파일을 실행하여 아래 작업을 한다. cd C:/Program Files/Sun/VirtualBox VBoxManage setextradata "가상_머신_이름" "VBoxInternal/Devices/네트워크_카드_이름/0/LUN#0/Config/포트_포워딩_이름/Protocol" TCP VBoxManage setextradata "가상_머신_이름" "VBoxInternal/Devices/네트워크_카드_이름/0/LUN#0/Config/포트_포워딩_이름/GuestPort" 22 VBoxManage setextradata "가상_머신_이름" "VBoxInternal/Devices/네트워크_카드_이름/0/LUN#0/Config/포트_포워딩_이름/HostPort" 2222 #--- 설정 후 Virtual Machine을 다시 시작 하여야 한다. #--- 아래는 포트 포워딩 사례 VBoxManage setextradata "CentOS530" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/telnets/Protocol" TCP VBoxManage setextradata "CentOS530" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/telnets/GuestPort" 22 VBoxManage setextradata "CentOS530" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/telnets/HostPort" 22 VBoxManage getextradata "CentOS530" enumerate
- 포트 포워딩 이름을 http와 같이 많이 사용하는 이름(예약어)으로 하였을 경우 동작하지 않는 경우가 있다. 이때에는 pphttp 등으로 이름을 변경하여 사용 하여야 한다.
- 등록된 포트 포워딩 정보를 삭제하는 방법
VBoxManage setextradata "가상_머신_이름" "VBoxInternal/Devices/네트워크_카드_이름/0/LUN#0/Config/포트_포워딩_이름/Protocol" VBoxManage setextradata "가상_머신_이름" "VBoxInternal/Devices/네트워크_카드_이름/0/LUN#0/Config/포트_포워딩_이름/GuestPort" VBoxManage setextradata "가상_머신_이름" "VBoxInternal/Devices/네트워크_카드_이름/0/LUN#0/Config/포트_포워딩_이름/HostPort"
- VirtualBox에 등록된 정보 보기
- VBoxManage getextradata "가상_머신_이름" enumerate
#--- 위 명령으로 조회한 사례 Key: VBoxInternal/Devices/pcnet/0/LUN#0/Config/telnets/Protocol, Value: TCP Key: VBoxInternal/Devices/pcnet/0/LUN#0/Config/telnets/HostPort, Value: 22 Key: VBoxInternal/Devices/pcnet/0/LUN#0/Config/telnets/GuestPort, Value: 22
- 참고 문헌
Oracle VirtuaBox 포트 포워딩
Oracle이 Sun을 인수한 후, Oracle VirtualBox에서 포트 포워딩 설정이 간단해 졌다.
- 가상 머신의 설정에서 네트워크를 NAT로 설정하면 하단에 Port Forwarding을 관리할 수 있는 버튼이 활성화 된다.
Network 용어
VLAN (Virtual LAN) : http://www.joinc.co.kr/modules/moniwiki/wiki.php/man/12/VLAN
VxLAN (Virtual Extensible LAN) : http://www.joinc.co.kr/modules/moniwiki/wiki.php/man/12/vxlan
STP (Spanning Tree Protocol) : http://www.joinc.co.kr/modules/moniwiki/wiki.php/man/12/stp