카테고리 보관물: network

rhel 7 network interface naming

RHEL 7 network interface naming

eno1… enp0s31f6…

rhel7부터 ethernet network card naming 방식이 바뀌었다.

이전에는 eth0,1,2,3…. 이렇게 순서대로 했었던 걸 좀더 직관적으로 바꿨단다. Manual에서…

일단 rhel7로 오면서 naming policy3종류가 있는데, systemd, biosdevname, system Z 에서의 naming 이렇게 3개의 방식이 있다. System Z 에서의 naming은 본적이 없다. System Z 를 본적이 없으므로 ㅋㅋ . 참고로 system Z IBM system Z mainframe 을 뜻한다.

처음부터 살펴보면…

예측가능한 network interface device naming

interface type 에 따라 접두어가 달라진다.

1. en ethernet

2. wl wireless lan

3. ww wireless wan

systemd scheme 서열 policy

기본적으로 아래 5가지의 scheme policy 를 사용해서 naming을 하게된다.

Scheme 1. : firmware bios onboard device 에 대해 제공하는 색인번호를 조합한 이름(: eno1 ) firmwarebios로 부터의 정보를 적용가능한 경우는, 이것이 적용된다. 그렇지 않으면 scheme 2fallback 한다.

### bios로 부터의 정보를 적용가능한 경우라는 것은, smbios(system management basic input/output system) 에서 정보를 받을 수 있는경우를 뜻한다. Smbios bios 내의 data 구조의 배치 및 access method에 관하는 수단이다. 흔히들 잘 쓰는 dmidecode 도 이 smbios 에서 정보를 가져와서 보여주는 것이다. 현재 3.0 까지 나와 있는데 2.6 이전 버전에서는 smbios 정보가 현재와는 틀려서 pci device의 정보가 없는경우가 있다. 이럴 경우 bios 로 부터 정보를 가져올 수 없으며, 다음 scheme로 넘어간다 는 뜻이다. ###

Scheme 2. : 1과 같은데 onboard가 아니라 pci express hotplug slot 에 꽂혀져 있는 network device일 경우 적용된다.(: ens1) 마찬가지로 bios에서 정보를 못가져 오면 scheme 3으로 넘어간다.

Scheme 3. : hardware connector 의 물리적인 장소를 조합한 이름이다.(: enp2s0) 이것이 적용 불가능한 경우 scheme 5로 넘어간다.

### Hardware connect 의 물리적인 장소라 함은 dev path를 뜻한다. 물리장치의 devpath name을 적용한다는 뜻.예를들어 내 pc에서 적용된 것을 살펴보면…

# lspci -vt

-[0000:00]-+ …

\-1f.6 Intel Corporation Ethernet Connection I219-V

enp<bus>s<slot>[f<function>][d<dev_id>]

이렇게 적용 되는데 저위의 정보대로 이름을 만들어 보자면…

enp0s31f6 이라는 이름이 만들어 진다.

실제로 # ip link command로 정보를 살펴 보면

2: enp0s31f6: <NO-CARRIER,BROADCAST,MULTICAST,UP>

요렇게 나와 있는것을 볼 수 있다. ###

Scheme 4. : interface mac address를 조합하여 만든 이름이다. default로는 사용되지 않지만, user가 선택하면 적용가능하다. (: enx78e7d1ea46da)

### 나같은 경우는 usb network interface card 를 꽂으니까 이렇게 나오더라. 따로 선택하거나 하진 않았음. ###

Scheme 5. : 종래형의 예측 불가능한 커널 명명 scheme (: eth0 ), 모든 방법이 실패하면 이게 사용된다.

정리하면…

o<index> onboard device 의 색인번호

s<slot>[f<function>][d<dev_id>] hot plug slot 의 색인번호

x<MAC> mac address

p<bus>s<slot>[f<function>][d<dev_id>] pci dev path

p<bus>s<slot>[f<function>][u<port>][..][c<config>][i<interface>] usb port number chain

 

system z 에서의 naming을 보면…

device typeethernet network interface 일 경우는…

ensccw0.0.1234    ensccw<bus-ID>

device typeSLIPCTC network device인 경우는…

slccw0.0.1234     slccw<bus-ID>

이렇게 만들어진다.

 

VLAN interface naming scheme

VLAN + VLAN ID

: vlan0005

VLAN + 패딩 없는 VALN ID

: vlan5

device name + VLAN ID

: eth0.0005

device name + 패딩 없는 VLAN ID

: eth0.5

biosdevname 을 사용한 일관성 있는 network device naming

# yum install -y biosdevname commnad 를 실행하여 biosdevname install 하고, boot command line에 ‘biosdevname=1이라고 지정해 줍니다. 무효로 하려면 0 을 지정하면 된다. Boot command line이란 grub.cfg file 내에서 booting option을 바꿔주라는 뜻.

Onboard network interface (Lan On Motherboard LOM 이라고도 함.) eth0123… → em1234…

pci card network interface eth0123… → p<slot>p<ethernet port> : p3p4

가상기능 eth0123… → p<slot>p<ethernet port>_<virtual interface> : p3p4_1

RHEL 7 network guide 참조함

fedora wifi access point 만들기

Fedora access point 만드는법.

Fedora 라고 되어 잇는데 rhel7 도 동일한 방법으로 가능하다.

root@youngju-laptop:~# dnf install hostapd

### hostapd 를 설치한다. ###

root@youngju-laptop:~#git clone https://github.com/oblique/create_ap 
root@youngju-laptop:~#cd create_ap
root@youngju-laptop:~# make install
### create_ap github에서 다운받은 후 설치를 한다. (내부동작은 사실 복사하는거임 ㅋ) ###

이제 /usr/bin/create_ap 명령어가 생겨 있는데 까보면 bash script로 되어있다. 얘가 hostadp를 잘 조작해서 ap(access point)를 만들어 준다. 

root@youngju-laptop:~# vim /usr/lib/systemd/system/create_ap.service

[Unit]
Description=Create AP Service
After=network.target

[Service]
Type=simple
ExecStart=/usr/bin/create_ap -g 192.168.125.1  -c 3 -w 1+2  wlp1s0 enp0s20f0u2 soma-ap3 30013001
### 요줄만 고쳐주면 된다.  -g gateway 설정 -c channel (1~14번중 제일 안쓰고 있는것 1개를 쓰자. Android wifi analyzer라는 어플로 지금 wifi가 어떤 channel 들에서 돌아가고 있는지 확인 가능하다.) -w WPA(wifi protected access) version 인데 암호방식 어떤거 쓸거냐고 묻는다. 1+2 로 둘다 쓰자.ㅋ 그리고 뒤에는 순서대로 wireless interface , wired interface (현재 network 연결되어있는 유선 interface), access-point name(ssid), password 이런 순으로 지정해주자. ###
KillSignal=SIGINT
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target

root@youngju-laptop:~# systemctl stop NetworkManager 
root@youngju-laptop:~# systemctl restart create_ap 
root@youngju-laptop:~# systemctl resart NetworkManager 
### hostapd NetworkManager 가 올라와 있으면 작동이 안된다. create_ap 를 올려준 후 다시 NetworkManager 를 올려주자. ### 

wifi 접속이 되는지 확인. !!! 
만약 접속이 안되거나 create_ap service 가 시작되지 않는다면 아까 저위에 옵션에다가 –hostapd-debug 1 요걸 추가해서 debuging을 하자. 
# Journalctl -lf  command log 확인도 같이 하면서 debuging을 하자. 

혹시 dnsmasq 를 이미 사용중이라면 시작이 안될것이다. Kvm 을 사용중이라도 안될것이다. 
이유는 kvm에서 dnsmasq를 이용해서 dhcp service를 해주는데 create_ap도 똑같이 dnsmasq를 이용해서 dhcp service를 해주기 때문이다. 
이 경우 이미 설정되어 있는 파일의 내용을 복사해서 /usr/bin/create_ap 에다가 아래와 같이 넣어주자. 


1632     cat << EOF > $CONFDIR/dnsmasq.conf
1633 #listen-address=${GATEWAY}
1634 #${DNSMASQ_BIND}
1635 #dhcp-range=${GATEWAY%.*}.1,${GATEWAY%.*}.254,255.255.255.0,24h
1636 #dhcp-option-force=option:router,${GATEWAY}
1637 #dhcp-option-force=option:dns-server,${DHCP_DNS} 
	### 원본 내용을 주석처리 해주자 ###
1638 ### edit by youngju ###
1639 listen-address=192.168.125.1  
	### lesten-address 요거 빠지니까 wifi 접속해서 ip를 못받아 오드라. Wifi apservice 해주는 interfaceip 주소(아까 위에서 설정한 gateway 주소)를 넣어주자 ###
1640 interface=wlp1s0
1641 interface=virbr0
1642 dhcp-range=set:wifi,192.168.125.100,192.168.125.250,255.255.255.0,12h
1643 dhcp-range=set:vm,192.168.124.100,192.168.124.250,255.255.255.0,12h
1644 dhcp-option=tag:wifi,option:router,192.168.125.1
1645 dhcp-option=tag:vm,option:router,192.168.124.1
1646 dhcp-option=tag:wifi,option:dns-server,192.168.125.1,8.8.8.8
1647 dhcp-option=tag:vm,option:dns-server,192.168.124.1,8.8.8.8
1648 conf-dir=/etc/dnsmasq.d,.rpmnew,.rpmsave,.rpmorig
1649 bind-dynamic
1650 dhcp-option-force=option:mtu,1500
1651 #no-hosts
1652 ### edit by youngju ###

1653 EOF
1654     MTU=$(get_mtu $INTERNET_IFACE)
1655     [[ -n "$MTU" ]] && echo "dhcp-option-force=option:mtu,${MTU}" >> $CONFDIR/temp-dnsmasq.conf
1656     [[ $ETC_HOSTS -eq 0 ]] && echo no-hosts >> $CONFDIR/temp-dnsmasq.conf
1657     if [[ "$SHARE_METHOD" == "none" && "$REDIRECT_TO_LOCALHOST" == "1" ]]; then
1658         cat << EOF >> $CONFDIR/temp-dnsmasq.conf
	### dnsmasq.conf 라고 되어 있는것을 참조하지 못하게 temp-dnsmasq.conf로 고쳐줬다. ### 
1659 address=/#/$GATEWAY
1660 EOF

root@youngju-laptop:~# systemctl restart create_ap 
 	### 다시 create_ap 를 재시작 해주자. ### 
이렇게 설정을 하면 kvm에서 사용하는 대역과 wifi 대역 모두 dhcp service를 해줄 수 가 있다. !!

Zeroconf wiki 번역

zeroconf 를 찾아보고 있던중 영어랑 일본어 위키에는 있는데 한글 위키에는 없어서 번역을 조금 했다… 오늘은 여기까지 하고 다음은 내일해야지…ㅎㅎ

https://ko.wikipedia.org/wiki/Zeroconf

Zeroconf (Zero configuration networking)은 사람손에 의한 조작없이, 또한 특별한 설정서버를 사용하지 않고, 이용가능한 인터넷프로토콜(IP) 네트워크를 자동적으로 작성 하는 일종의 기법이다. Zero configuration networking은 컴퓨터나 프린터와 같은 장치를 자동적으로 네트워크에 접속하는것이 가능하게 한다. zeroconf가 없는 경우, 네트워크관리자가 Dynamic Host Configuration Protocol (DHCP) 나 Domain Name System (DNS) 와 같은 서비스의 설정을 할 필요가 있고, 경우에따라서는 각각 컴퓨터의 네트워크설정을 사람손으로 변경할 필요가 있고, 시간이 걸리고 귀찮다.

zeroconf 는 다음 3가지의 기술을 기반으로 하고 있다.

  • Network Device 로의 Network Address 의 할당
  • 컴퓨터 hostname의 자동해석과 자동배포
  • 프린터와 같은 네트워크 디바이스의 위치를 자동적으로 특정