OSI 7 계층 구조



{| border="1" cellspacing="0" cellpadding="2" style="width: 100%;" |- | style="text-align: center; background-color: rgb(241, 241, 241);" rowspan="1" colspan="2" | 계층
| style="text-align: center; background-color: rgb(241, 241, 241);" | 장비 | style="text-align: center; background-color: rgb(241, 241, 241);" | 상세 |- | style="text-align: center;" | 7 | style="text-align: center;" | Application Layer
(응용 계층)
| style="text-align: center;" | L7 Switch
Gateway
| -
L7 Switch : 부하 분산, 리디렉션, 필터링, VPN 등

-
네트워크 가상 터미널

-
파일 액세스/전송/관리, 우편 서비스, 디렉토리 서비스


|- | style="text-align: center;" | 6 | style="text-align: center;" | Presentation Layer
(표현 계층)
| style="text-align: center;" | Gateway
| - 변환, 암호화, 압축, 보안

|- | style="text-align: center;" | 5 | style="text-align: center;" | Session Layer
(세션 계층)
| style="text-align: center;" | Gateway
| - 세션 관리, 동기화, 대화 제어, 원활한 종료

|- | style="text-align: center;" | 4 | style="text-align: center;" | Transport Layer
(전송 계층)
| style="text-align: center;" | L4 Switch
Gateway
| - L4 Switch : Load Balance, Fail Over
- 종단-대-종단 전달, 서비스-점 주소 지정, 분할과 재조립, 연결 제어

|- | style="text-align: center;" | 3 | style="text-align: center;" | Network Layer
(네트워크 계층)
| style="text-align: center;" | Router
L3 Switch
| - L3 Switch
- Router : 외부 네트워크로 연결 가능
- Switching : 물리적 링크간의 일시적인 연결
- Routing : 최적의 경로로 연결
- 발신지-대-목적지 전달 (IP로 연결)
- 논리적인 주소 지정, 라우팅, 주소 변환, 다중화

|- | style="text-align: center;" | 2 | style="text-align: center;" | Data Link Layer
(데이터 링크 계층)
| style="text-align: center;" | Bridge
L2 Switch
| - L2 Switch
- Bridge :이더넷 장비를 물리적으로 연결
- node-to-node 전달 (MAC으로 연결)
- 주소 지정, 접근 제어, 흐름 제어, 오류 처리, 동기화

|- | style="text-align: center;" | 1 | style="text-align: center;" | Physical Layer
(물리 계층)
| style="text-align: center;" | Repeater
Hub
| - Repeater : 단순히 전기적인 신호만 증폭
- Hub : 여러대의 장비를 LAN에 접속

|}

Linux




Ubuntu Server Network 설정


- [Ubuntu Server](Ubuntu Server.md)에 있는 네트워크 카드명을 확인 한다.

- 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](DNS.md) 서버를 입력
- 가상 환경에서 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 재시작


CentOS Network 설정


- [CentOS](CentOS.md)에 있는 네트워크 카드명을 확인 한다.

- 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](DNS.md)를 위한 네임서버를 지정 한다.

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


- 참고 문헌

- [http://www.tecmint.com/ifconfig-command-examples/](http://www.tecmint.com/ifconfig-command-examples/)

### SSH Port Forwarding
- [SSH Port Forwarding(SSH Tunneling), 2009.6](http://ubuntu.or.kr/viewtopic.php?p=27819)
- [SSH Port Forwarding 을 이용한 Proxy 설정, 2007.5](http://blog.meson.kr/92)
- [http://www.joinc.co.kr/modules/moniwiki/wiki.php/Site/System_management/Proxy] ](http://www.joinc.co.kr/modules/moniwiki/wiki.php/Site/System_management/Proxy)

### IP Alias
- VIP (Virtual IP)
- 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)](https://github.com/osrg/ryu-book/blob/master/ko/source/link_aggregation.rst) : 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](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](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 -host 222.222.222.38 gw 10.100.100.1
route add -net 아이피 netmask 넷마스크 gw ~ dev 장치명
# route add -net 27.102.82.0 netmask 255.255.255.0 gw 27.102.82.1 dev eno2
ip route add 192.0.2.0/24 via 10.0.0.1 [ifname](dev)
vi  /etc/sysconfig/network-scripts/route-*
vi /etc/sysconfig/static-routes

참고 문헌
- https://jirak.net/wp/%EB%A6%AC%EB%88%85%EC%8A%A4-%EC%83%81%EC%97%90%EC%84%9C-route-%EB%AA%85%EB%A0%B9%EC%9D%84-%EC%9D%B4%EC%9A%A9%ED%95%9C-static-route-%EC%84%A4%EC%A0%95/

## 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://mkseo.pe.kr/blog/?p=908)
- 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
ifdown eth0
ifup eth0
service network restart            #--- CentOS 6.0
systemctl restart network         #--- CentOS 7.0
'''참고 문헌'''
- [CentOS Network 설정](Network.md#CentOS Network 설정.md)

#### NIC 설정 명령어
'''Network 조회'''
ifconfig -a
ip link list
ip link show
ip addr show
netstat -i
'''IP 설정 1'''
ip addr add 192.168.1.101/24 brd 192.168.1.255 dev eth0
ip link set dev eth0 up
ip addr show
'''IP 설정 2'''
ifconfig eth0 192.168.1.101/24 up
ifconfig eth0 192.168.1.101 netmask 255.255.255.0 broadcast 192.168.1.255 up
'''NIC, Network 기동 종료'''
ifdown eth0
ifup eth0

service network restart systemctl restart network
'''MTU 설정'''
Maximum Transmission Unit
1회 전송(1개의 프레임)으로 송신할 수 있는 데이터의 최대값
ip link show eth0
ip link set eth0 mtu 9000

#### Gateway (Route)
Route가 여러개 설정되어 있는 경우 metric가 높은 라우터가 사용 됩니다.
'''Gateway 조회'''
route
route -n
'''Gateway 설정'''
vi /etc/sysconfig/network-scripts/ifcfg-eth?
    GATEWAY=10.20.0.1
vi /etc/sysconfig/network          #--- Default Gateway 설정
    GATEWAY=~
vi /etc/sysconfig/network-scripts/route-eth0
    ADDRESS0=IP대역
    NETMASK0=~
    GATEWAY0=~

    ADDRESS1=IP대역
    NETMASK1=~
    GATEWAY1=~
'''Gateway 임시 설정'''
route add default gw 192.168.0.2 dev eth0
route del default gw 192.168.0.2 dev eth0
참고문헌
- [http://junhyung2.blogspot.kr/2014/12/blog-post.html](http://junhyung2.blogspot.kr/2014/12/blog-post.html)

#### VLAN (Virtual LAN)
'''Linux Module 설정'''
lsmod | grep 8021q
modprobe 8021q
'''VLAN 생성'''
ip link add eth0 name vlan101 type vlan id 101
ip -d link show vlan101
​ip link set vlan101 up
ip addr show

vconfig add eth0 101 ifconfig eth0.101 192.168.1.101 netmask 255.255.255.0 broadcast 192.168.1.255 up
vi /etc/sysconfig/network-scripts/ifcfg-eth0.101
DEVICE=eth0.101
​VLAN=yes
'''VALN 삭제'''
ip link set vlan101 down
ip link delete vlan101

ifconfig eth0.101 down ​vconfig rem eth0.101
'''참고 문헌'''
- [Open vSwitch VLAN 설정](Open vSwitch.md#VLAN 설정.md)
- [Virtualization VLAN](Virtualization.md#VLAN.md)

### 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](Iptables.md) (방화벽) 설정 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
ifconfig eth0 0.0.0.0 promisc up

### CentOS IP Alias
IP Alias는 NIC에 여러개의 IP를 부여하는 방법 입니다. 
'''CentOS 6.x'''
일시적으로 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
'''CentOS 7.0'''
IPADDR=198.51.100.5
PREFIX0=24
GATEWAY0=198.51.100.1

IPADDR1=192.0.2.6 PREFIX1=24

### DSR (Direct Server Return) 구성
L4 Switch 등의 장비를 통해서 들어오는 요청을 L4 장비를 거치지 않고 바로 client로 반환할 때, L4 Switch의 Public IP를 사용하여 반환되도록 하는 설정 방법 입니다.
vi /etc/sysconfig/network-scripts/ifcfg-lo:0
    DEVICE=lo:0 
    IPADDR=192.168.123.20                    #--- L4 장비의 Public IP
    NETMASK=255.255.255.255                #--- Loopback 주소를 broadcast하는 것을 방지
    NETWORK=192.168.123.0 
    BROADCAST=192.168.123.255 
    onBOOT=yes
vi  /etc/sysctl.conf                               #--- ARP 문제로 인해 필요시
    net.ipv4.conf.lo.arp_ignore = 1
    net.ipv4.conf.lo.arp_announce = 2 
    net.ipv4.conf.all.arp_ignore = 1
    net.ipv4.conf.all.arp_announce = 2
참고 문헌
- [http://board.theko.co.kr/bbs/board.php?bo_table=B11&wr_id=101](http://board.theko.co.kr/bbs/board.php?bo_table=B11&wr_id=101)
- [http://xinet.kr/tc/tag/99](http://xinet.kr/tc/tag/99)

### CentOS Bonding
두개의 NIC (eth0, eth1)을 묶어서 bond0 네트워크를 생성 합니다.
'''Bonding module 로딩'''
modprobe --first-time bonding
modinfo bonding
lsmod | grep bonding
vi  /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
TYPE=Bond                                       #--- Interface Type
IPADDR=192.168.1.150
PREFIX=24
ONBOOT=yes
BOOTPROTO=static
BONDING_MASTER=yes                              #---
BONDING_OPTS="mode=1 miimon=100"                #--- Bonding mode 지정, 모니터링 주기 100 ms
1. BONDING_OPTS="mode=4 miimon=100 lacp_rate=1"   #--- LACP 설정
vi /etc/modprobe.d/bonding.conf 파일을 만들어 BONDING_OPTS를 설정할 수도 있음
    alias bond0 bonding
    options bond0 mode=6 miimon=100
vi  /etc/sysconfig/network-scripts/ifcfg-eth0, ifcfg-eth1
DEVICE=eth0
TYPE="Ethernet"
ONBOOT="yes"
BOOTPROTO="none"                                #---  
MASTER=bond0 #--- Binding NIC 이름 지정 SLAVE=yes #---
systemctl restart network
'''Bonding 정보 조회'''
cat /proc/net/bonding/bond0
'''Gateway에 등록'''
vi /etc/sysconfig/network
    GATEWAYDEV=bond0
'''Bonding Mode'''
{| cellspacing="0" cellpadding="2" border="1" width="100%" bgcolor="#FFFFFF" align="center" |- | width="10%" align="center" valign="middle" style="background-color:#eee;" | No | width="20%" align="center" valign="middle" style="background-color:#eee;" | Mode | width="70%" align="center" valign="middle" style="background-color:#eee;" | 상세 |- | align="center" valign="middle" | mode=0 | align="center" valign="middle" | balance-rr | Round-robin policy |- | align="center" valign="middle" | mode=1 | align="center" valign="middle" | active-backup | Active-backup policy |- | align="center" valign="middle" | mode=2 | align="center" valign="middle" | balance-xor | MAC address의 XOR값 사용 |- | align="center" valign="middle" | mode=3 | align="center" valign="middle" | broadcast | Broadcast policy |- | align="center" valign="middle" | mode=4 | align="center" valign="middle" | 802.3ad | Dynamic link aggregation (IEEE 802.3ad), LACP
Aggregation group 생성
|- | align="center" valign="middle" | mode=5 | align="center" valign="middle" | balance-tlb | Adaptive transmit load balancing |- | align="center" valign="middle" | mode=6 | align="center" valign="middle" | balance-alb | Adaptive load balancing |}
### CentOS Teaming
CentOS 7에서 지원하는 Bonding으로 기존의 Bonding보다 효율이 좋습니다.
'''Teaming 모듈 로드와 teamd 패키지 설치'''
modprobe team
yum -y install teamd

vi /etc/sysconfig/network-scripts/team0 DEVICE=team0 NAME=team0 BOOTPROTO=static IPADDR=192.168.122.120 NETMASK=255.255.255.0 GATEWAY=192.168.122.1 ONBOOT=yes PREFIX=24 DEVICETYPE=Team #--- TEAM_CONFIG='{"runner":{"name":"activebackup"},"link_watch":{"name":"ethtool"}}' #---
Runner 종류
- broadcast
- roundrobin
- activebackup
- loadbalance
- lacp
vi  /etc/sysconfig/network-scripts/ifcfg-eth0, eth0
DEVICE=eth1
NAME=eth1
HWADDR=52:54:00:8c:33:ba
ONBOOT=yes
DEVICETYPE=TeamPort                        #---
TEAM_MASTER=team0                          #--- Team master 지정
TEAM_PORT_CONFIG='{"prio":99}'             #--- prio. 우선순위 

'''Teaming 정보 조회'''
teamnl team0 ports
teamdctl team0 state
### Linux Bridge
Linux Bridge를 사용하면 아래와 같은 이점이 있습니다.
- Bridge에 방화벽 설정 가능
- Bridge를 통해 서로 다른 네트워크를 연결

'''Bridge 모듈 설치'''
yum -y install bridge-utils
'''eth0를 br0 bridge에 연결'''
vi  /etc/sysconfig/network-scripts/ifcfg-br0
DEVICE=br0
TYPE=Bridge                             #--- Device type
ONBOOT=yes
BOOTPROTO=static
DELAY=0                                 #---
IPADDR=192.168.0.240
NETMASK=255.255.255.0
GATEWAY=192.168.0.1

vi /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 TYPE=Ethernet ONBOOT=yes BRIDGE=br0 #--- Bridge 지정 PROMISC=yes #--- Promisc 모드 설정

'''Bridge 상태 확인'''
brctl show
​ip  --statistics link list
netstat --all --interfaces
'''Port Forward 설정'''
vi  /etc/sysctl.conf 
    
net.ipv4.ip_forward = 1


'''brctl을 사용하여 Bridge 설정'''
brctl addbr br0                       #--- br0 Bridge 추가
brctl addif br0 eth0                  #--- br0 Bridge에 eth0 NIC 연결
1. brctl delbr br0
1. brctl delif br0 eth0

ifconfig eth0 0.0.0.0 promisc up #--- eth0 NIC를 promisc 모드로 변경 vi  /etc/sysctl.conf      net.ipv4.ip_forward = 1
### Linux Namespace
[Linux Namespace](Virtualization.md#Linux Namespace.md) 중 Network Namespace 참조
## Windows
### Windows 8에서 네트워크 제한 오류 처리
네트워크 필터 갯수를 1개(Default)에서 8개로 늘임
- HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Network

- 이름: MaxNumFilters (없는 경우 만들면 됨)
- 종류: REG_DWORD
- 데이터: 8

### 연결 브리지
연결 브리지는 여러개의 네트워크를 연결하여 새로운 가상의 네트워크를 생성 한다. 이를 통해 연결 브리지된 네트워크는 새로 생성된 가상의 네트워크를 통해 외부에 접속할 수 있다.
- 두개의 네트워크를 연결하여 연결 브리지를 생성 한다.

- 연결 브리지를 만들 두개의 네트워크를 선택 한다.
- 오른쪽 마우스를 눌러 "연결 브리지" 메뉴를 선택 한다.
[550px|연결 브리지 생성](File:Network Bridge 001.png.md)


- 연결 브리지인 "네트워크 브리지"가 생성된 것을 확인 한다.

- 연결 브리지를 만들기 위해 선택된 네트워크에는 "브리지됨"이라고 표시 된다.
- 두개의 네트워크를 연결한 연결 브리지인 "네트워크 브리지"가 생성된 것을 확인 한다.
[550px|네트워크 브리지](File:Network Bridge 002.png.md)


- "네트워크 브리지"의 네트워크를 설정 한다.

- 네트워크 브리지에서 오른쪽 마우스를 선택 한 후 "속성"을 선택 한다.
- "어댑터"에서 "네트워크 브리지"에 포함된 네트워크를 선택할 수 있다.
- 연결 브리지는 하나의 네트워크 IP를 가지고 접속할 수 있고 연결 브리지에 포함된 네트워크("브리지됨"으로 표시됨)는 이 대표 IP로 외부와 통신을 한다.
[어댑터 관리](File:Network Bridge 003.png.md) - 기타 네트워크 설정은 기존의 네트워크 설정과 동일하므로 생략 한다.



- 참고 문헌

- [윈도우 XP 네트워크 브리지 기능으로 인터넷 공유 방법](http://changdoc.tistory.com/52)
- [버추얼박스 2.2.0 네트워크 접속 문제](http://salm.springnote.com/pages/3116520)

### Windows 가상 랜카드
Windows에 포함되어 있는 Microsoft Loopback Adapter를 사용하여 가상의 랜카드를 추가하여 자체 네트워크를 구축 한다.
- Windeows Vista에서 "제어판 -> 추가 옵션 -> 하드웨어 및 소리 -> 하드웨어 및 장치 보기" 메뉴에서 네트워크 어댑터를 선택한 후 "동작 -> 레거시 하드웨어 추가" 메뉴를 선택하여 가상의 네트워크 어댑터를 추가 한다.



- "다음" 버튼을 선택하여 네트워크 어댑터를 추가 한다.

[네트워크 어댑터 추가 시작](File:Loopback add 01.png.md)


- "목록에서 직접 선택한 하드웨어 설치(고급)"을 선택한 후 "다음" 버튼을 누른다.

[하드웨어 선택 옵션](File:Loopback add 02.png.md)


- "네트워크 어댑터"를 선택한 후 "다음" 버튼을 누른다.

[네트워크 어댑터 선택](File:Loopback add 03.png.md)


- 네트워크 어댑터를 아래와 같이 선택 한다.

- 제조업체 : Microsoft
- 네트워크 어댑터 : Microsoft Loopback Adapter
[네트워크 어댑터 선택](File:Loopback add 04.png.md)


- "다음" 버튼을 선택하여 선택한 네트워크 어댑터를 설치 한다.

[네트워크 어댑터 설치](File:Loopback add 05.png.md)


- "마침" 버튼을 눌러 네트워크 어댑터 설치를 완료 한다.

[네트워크 어댑터 설치 완료](File:Loopback add 06.png.md)


- 장치 관리자의 네트워크 어댑터에 "Microsoft Loopback Adapter"가 추가 된 것을 확인할 수 있다.

[설치 확인](File:Loopback add 07.png.md)


- 참고 문헌

- [virtualbox 2.1.x에서 공유기 없이 호스트 인터페이스 쓰기, 2009.3](http://ubuntu.or.kr/viewtopic.php?f=9&t=4455)

### 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 10 모바일 핫스팟
"시작 > 설정 > 네크워크 및 인터넷 > 모바일 핫스팟" 메뉴를 선택 합니다. - 네트워크 이름 : 설정할 것
- 네트워크 암호 : 설정할 것

모바일 핫스팟을 "켬"으로 설정하면 핫스팟을 사용할 수 있습니다.
http://www.obcon.biz/wordpress/wp-content/uploads/2018/04/hotspot.png
주의) 컴퓨터가 사용 중지 상태가 되었다가 다시 사용 상태가 되면 핫스팟이 해제 됩니다.
#### Windows 7을 무선 액세스 포인터로
Windows 7을 무선 액세스 포인터로 만들어 주는 [Connectify](http://connectify.me/)를 설치하여 사용해 봅시다.
- [Connectify 다운로드 사이트](http://connectify.me/download/index.html)에서 ConnectifyInstaller.exe 를 다운로드 한다.

- 이름와 이메일 주소를 요구 합니다.
- 다운로드 받은 파일을 실행하여 Connectify를 설치 합니다.

- Tray에 있는 Connectify를 클릭하여 네트워크 설정을 한다.

- WiFi Name: "pnusSens", 무선으로 공유할 이름을 입력 한다.
- Password: '''숫자로''' 10~16자리 암호를 입력 한다.
- Internet: "로컬 영역 연결", 공유할 네트워크를 선택 합니다.
- "Start Hotspot" 버튼을 누르면 설정이 완료 됩니다.

[Connectify 설정](File:Connectify setting.png.md)
- 다른 컴퓨터에서 "pnusSens" 무선 네트워크를 검색하여 사용하면 됩니다. 접속시 암호는 위에서 입력한 암호를 사용 합니다.

- 참고 문헌

- [윈도우 7 노트북을 무선 액세스 포인트로 만들어주는 Connectify, 2009.11](http://www.choboweb.com/1297)
- [http://7day.tistory.com/238](http://7day.tistory.com/238)

#### Windows 8을 무선 액세스 포인터로
- 참고 문헌

- [http://jangjy.tistory.com/56](http://jangjy.tistory.com/56)
- [http://jnstory.net/2014](http://jnstory.net/2014)

#### Windows 7 네트워크 공유하기
- "네트워크 및 공유 센터 -> 어댑터 설정 변경 -> 로컬 영역 연결 -> 속성 -> 공유" 메뉴를 선택 합니다.

- "다른 네트워크 사용자가 이 컴퓨터의 인터넷 연결을 통해 연결할 수 있도록 허용"을 체크 하고 "무선 네트워크 연결"을 선택 합니다.

- "네트워크 및 공유 센터 -> 무선 네트워크 관리 -> 추가" 메뉴를 선택 합니다.

- "애드혹 네트워크 만들기"를 선택하여 네트워크를 추가 합니다.
- 네트워크 이름 :
- 보안 종류 : WEP
- 보안 키 : 13자 입력
- "이 네트워크 저장" 체크

#### 유선 LAN을 와이파이로 공유
netsh wlan show drivers
netsh wlan show settings

netsh wlan set hostednetwork mode=allow ssid=아이디 key=비밀번호 netsh wlan start hostednetwork
netsh wlan show hostednetwork 1. --- 유선 LAN에서 공유 설정할 것

netsh wlan stop hostednetwork

### Windows 7 IP Routing
- regedit

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\ Services\Tcpip\Parameters\IPEnableRouter = 1


## IP 주소
- 비공인 IP 주소 공간 ([RFC 1918](http://tools.ietf.org/html/rfc1918))

{| cellspacing="0" cellpadding="2" border="1" width="100%" bgcolor="#FFFFFF" align="center" |- | width="20%" align="center" valign="middle" style="background-color:#eee;" | 클래스 | width="40%" align="center" valign="middle" style="background-color:#eee;" | 공인 IP | width="40%" align="center" valign="middle" style="background-color:#eee;" | 사설 IP |- | align="center" valign="middle" | A | align="left" valign="middle" | - 1 ~ 126.xxx.xxx.xxx
- 255.0.0.0

| align="left" valign="middle" | - 10.0.0.0 ~ 10.255.255.255
- 255.0.0.0

|- | align="center" valign="middle" | B | align="left" valign="middle" | - 128 ~ 191.aaa.xxx.xxx
- 255.255.0.0

| align="left" valign="middle" | - 172.16.0.0 ~ 172.32.255.255
- 255.255.0.0

|- | align="center" valign="middle" | C | align="left" valign="middle" | - 192 ~ 223.aaa.bbb.xxx
- 255.255.255.0

| align="left" valign="middle" | - 192.168.0.0 ~ 192.168.255.255
- 255.255.255.0

|- | align="center" valign="middle" | D | align="left" valign="middle" | - 224 ~ 239 (멀티캐스트용)

| align="left" valign="middle" | |}


- 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 설정
{| cellspacing="1" cellpadding="1" border="1" width="100%" |- | width="20%" bgcolor="cyan" align="center" valign="middle" | Network 모드 | width="80%" bgcolor="cyan" align="center" valign="middle" | 상세 설명 |- | align="center" | Birdge | - 가상 머신이 호스트를 브리지로 사용하여 직접 네트워크에 접속하는 형태
- 가상 머신은 호스트와 무관하게 자신만의 독립적인 네트워크를 구성함
- 가상 머신은 자신만의 IP를 받아 외부 네트워크와 연결 가능

|- | align="center" | Host-only | - 외부와 단절된 네트워크로 호스트와 다른 게스트 머신만 접속이 가능 하다.
- 호스트에 등록된 "VirtualBox Host-Only Network"를 사용하여 통신 한다.
- "VirtualBox Host-Only Network"에 [연결 브리지](Network.md#연결 브리지.md)를 설정하여 외부와 통신이 가능 하다.

|- | align="center" | NAT | - 네크워크 주소 변환, Network Address Translation

- 하나의 IP를 다른 IP로 변환하는 방법
- 비공인 IP 주소를 공인 IP 주소로 변환하는 등에 사용 된다.
- 비공인 IP 주소 공간 (RFC 1918)
- 네트워크 크기 8 : 10.0.0.0 ~ 10.255.255.255.255
- 네트워크 크기 12 : 172.16.0.0 ~ 172.31.255.255
- 네트워크 크기 16 : 192.168.0.0 ~ 192.168.255.255

- 가상 머신에 사설 IP를 할당하고 인터넷 접속시에는 호스트의 IP를 사용하여 통신 한다.
- 기본으로 DHCP 서버를 제공하여 DHCP를 사용하지 않을 경우 수동으로 IP를 설정 한다.
- 가상 머신을 외부와 직접 연결하기 위해서는 [[Network#연결 브리지|연결 브리지]], [포트 포워딩(Port Forwarding)](Network.md#VirtuaBox 포트 포워딩.md)을 사용 한다.

|}
### VirtualBox Network 설정
- VirtualBox를 시작 한다.
- 가상 머신을 선택한 후 "설정" 버튼을 선택 한다.
- 새로 뜨는 창에서 네트워크 메뉴를 선택 한다.
- 어댑터 1에서 "다음에 연결됨"을 아래 사항을 참조하여 설정 한다.

{| cellspacing="1" cellpadding="1" border="1" width="100%" |- | width="20%" bgcolor="cyan" align="center" valign="middle" | 다음에 연결됨 | width="80%" bgcolor="cyan" align="center" valign="middle" | 상세 설명 |- | align="center" | 연결되지 않음 | - Not attached
- 네트워크에 연결 되지 않는다.

|- | align="center" | NAT
(Network Address Translation) | - 네크워크 주소 변환 (NAT, Network Address Translation)

- 하나의 IP를 다른 IP로 변환하는 방법
- 비공인 IP 주소를 공인 IP 주소로 변환하는 등에 사용 된다.
- 비공인 IP 주소 공간 (RFC 1918)
- 네트워크 크기 8 : 10.0.0.0 ~ 10.255.255.255.255
- 네트워크 크기 12 : 172.16.0.0 ~ 172.31.255.255
- 네트워크 크기 16 : 192.168.0.0 ~ 192.168.255.255

- '''가상 머신에 사설 IP를 할당'''하고 인터넷 접속시에는 호스트의 IP를 사용하여 통신 한다.
- 기본으로 DHCP 서버를 제공하여 DHCP를 사용하지 않을 경우 수동으로 IP를 설정 한다.



- Network 접속 방법 : 게스트 머신 -> 인터넷/호스트 머신 : Default로 접속을 지원 한다.
- Network 접속 방법 : 게스트 머신 <- 인터넷/호스트 머신

- [포트 포워딩(Port Forwarding)](Network.md#VirtuaBox 포트 포워딩.md)을 사용 한다.
- 가상 머신의 설정에서 네트워크를 NAT로 설정하면 하단에 Port Forwarding을 관리할 수 있는 버튼이 활성화 된다.

|- | align="center" | NAT Network | "파일 > 환경 설정 > 네크워크 > NAT 네트워크" 메뉴에서 설정한 NAT network을 여러 VM이 공유 한다.
NAT 네크워크에서 설정된 것을 공유기라고 생각하면 편리 하다.
|- | align="center" | 브리지 어댑터
(Bridged Adapter) | - 가상 머신이 호스트를 브리지로 사용하여 직접 네트워크에 접속하는 형태
- 가상 머신은 호스트와 무관하게 자신만의 독립적인 네트워크를 구성함
- 가상 머신은 자신만의 IP를 받아 외부 네트워크와 연결 가능



- Network 접속 방법 : 게스트 머신 -> 인터넷
- Network 접속 방법 : 게스트 머신 -> 호스트 머신
- Network 접속 방법 : 게스트 머신 <- 인터넷
- Network 접속 방법 : 게스트 머신 <- 호스트 머신

|- | align="center" | 내부 네트워크
(Internal networking) | - Internal Network
- Internal Network만 사용하도록 설정 한다.
- 같은 Internal Network상에 있는 다른 VM과는 통신이 가능 하다.



- Network 접속 방법 : 게스트 머신 -> 인터넷
- Network 접속 방법 : 게스트 머신 -> 호스트 머신
- Network 접속 방법 : 게스트 머신 <- 인터넷
- Network 접속 방법 : 게스트 머신 <- 호스트 머신

|- | align="center" | 호스트 전용 어댑터
(Host-only Adapter) | - 외부와 단절된 네트워크로 호스트와 다른 게스트 머신만 접속이 가능 하다.
- 호스트에 등록된 "VirtualBox Host-Only Network"를 사용하여 통신 한다.

- "VirtualBox Host-Only Ethernet Adapter" 설정

- "제어판->네트워크 및 인터넷 -> 네트워크 연결 -> VirtualBox Host-Only Network -> Internet Protocol Version 4 (TCP/IPv4)" 메뉴를 선택 합니다
- IP 주소 : 192.168.56.1
- 서브넷 마스크 : 255.255.255.0
- "파일 -> 환경 설정 -> 네트워크 -> VirtualBox Host-Only Ethernet Adapter" 메뉴를 선택 합니다.
- 어댑터
- IPv4 주소 : 192.168.56.1
- IPv4 서브넷 마스크 : 255.255.255.0
- DHCP 서버
- 서버 사용함 선택
- 서버 주소 : 192.168.56.100
- 서버 마스크 : 255.255.255.0
- 최저 주소 한계 : 192.168.56.101
- 최대 주소 한계 : 192.168.56.254



- Network 접속 방법 : 게스트 머신 -> 인터넷

- "VirtualBox Host-Only Network"에 [연결 브리지](Network.md#연결 브리지.md)를 설정 한다.

- Network 접속 방법 : 게스트 머신 -> 호스트 머신 : Default로 접속을 지원 한다.
- Network 접속 방법 : 게스트 머신 <- 인터넷
- Network 접속 방법 : 게스트 머신 <- 호스트 머신 : Default로 접속을 지원 한다.

|- | align="center" | 일반 드라이버 | |}
- 호스트에서만 테스트용으로 연동하여 사용할 경우 네트워크 설정

- "파일 -> 환경설정 -> 네트워크" 메뉴에서 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

```

  • 참고 문헌

    - [포트 포워딩(Port Forwarding)](http://pptp.kr/portfw.htm)


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](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](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](http://www.joinc.co.kr/modules/moniwiki/wiki.php/man/12/stp)
VPN : http://gotocloud.co.kr/?p=1280

Network 관련 Table




ARP Table


저장 위치 : NIC
관리 항목 : IP, MAC
LAN에 ARP request를 boardcast한 후 ARP reply를 받아서 IP에 해당하는 MAC address를 ARP Table에 등록
NIC에서 Promiscuous mode를 설정하면 모든 Ethernet Frame을 수신하여 IP layer로 전달
arp -a
참고 문헌
- [http://cafe.naver.com/neteg/3101](http://cafe.naver.com/neteg/3101)
- [http://cafe.naver.com/neteg/3102](http://cafe.naver.com/neteg/3102)
- [http://cafe.naver.com/neteg/3103](http://cafe.naver.com/neteg/3103)
- [http://cafe.naver.com/neteg/3121](http://cafe.naver.com/neteg/3121)


MAC table


저장 위치 : [Switch](Switch.md)
관리 항목 : MAC
show mac-address-table

Routing Table


node 명령어
ip route
Switch 명령어
show ip route


Network 암호



- [http://yusik.thoth.kr/?mid=blog&document_srl=1965317](http://yusik.thoth.kr/?mid=blog&document_srl=1965317)
- [http://drunken009.tistory.com/181](http://drunken009.tistory.com/181)


참고 문헌



- [iptime](iptime.md)
- [Switch](Switch.md)
- [이동통신](이동통신.md)
- [http://cris.joongbu.ac.kr/course/2015-2/cn2/](http://cris.joongbu.ac.kr/course/2015-2/cn2/)
- *Cisco Packet Tracer 6.2 : [http://cris.joongbu.ac.kr/course/2015-2/cn2/Cisco%20Packet%20Tracer%206.2%20for%20Windows%20Student%20Version%20(no%20tutorials).exe](http://cris.joongbu.ac.kr/course/2015-2/cn2/Cisco%20Packet%20Tracer%206.2%20for%20Windows%20Student%20Version%20(no%20tutorials).exe)
- *[http://raptor-hw.net/xe/pds/111868](http://raptor-hw.net/xe/pds/111868)
- [http://zetawiki.com/wiki/분류:리눅스_네트워크](http://zetawiki.com/wiki/분류:리눅스_네트워크)
- [IP Address](IP Address.md)
- [네트워크 설정](http://tensai.springnote.com/pages/2290296)
- [버추얼박스 네트워크 이해 및 구성-완벽가이드, 2013.05](http://rocky2010aaa.blogspot.kr/2013/05/virtualbox-network-setting.html)
- [[VMware Server|VMware Server]], [VMware Player](VMware Player.md)

- [작동 중인 가상 머신의 네트워크 연결 설정 변경하기](http://www.wintt.net/bbs/board.php?bo_table=win2&wr_id=17)
- [VMware 네트워크 모드](http://tensai.springnote.com/pages/2290252)

- [VirtualBox](VirtualBox.md)

- [virtualbox 2.1.x에서 공유기 없이 호스트 인터페이스 쓰기, 2009.3](http://ubuntu.or.kr/viewtopic.php?f=9&t=4455)

- [7장.|DNS|ftp://ftp2.kr.freebsd.org/FreeBSD-kr/doc/misc/PoweredByDNS/PoweredByDNS7.html%7C7장.%7CDNS](Ftp:ftp://ftp2.kr.freebsd.org/FreeBSD-kr/doc/misc/PoweredByDNS/PoweredByDNS7.html.md) 오류 수정 도구  : nslookup의 사용법을 자세하게 정리 하였다.
- [http://www.slideshare.net/shahryaralipk/network-virtualization-for-cloud-services-infrastructurepresentation-28959186](http://www.slideshare.net/shahryaralipk/network-virtualization-for-cloud-services-infrastructurepresentation-28959186)
[[Category:Network|Category:Network]]
[[Category:Virtual Appliance|Category:Virtual Appliance]]
분류: [IDC](분류_IDC.md)
공유하기