라우터의 MAC 주소는 어떻게 얻습니까?


13

라우터의 MAC 주소를 얻을 수있는 Linux 명령이 있습니까?


1
어느 것? 라우터는 양쪽 통신 (들어오는 / 나가는)을 위해 여러 개의 MAC 주소를 가져야합니다.
mchid

슈퍼 유저로 가야합니까?

답변:


6

나는 하나의 라이너를 좋아한다 :

arping -f -I $(ip route show match 0/0 | awk '{print $5, $3}')

arping프로그램은 MAC는 출력에서 디폴트 게이트웨이 IP 주소와 관련 ip route show match 0/0하여 파싱 awk.


나는 이것을 시도했다. 그들은 좋은 정보를 제공하지만 표시된 MAC 주소는 내가 찾던 것에서 두 자리 숫자로 벗어났습니다. 내 프린터에는 동일한 SSID (아마도 게스트 및 일반)를 가진 두 개의 라우터가 나열되어 있으며 MAC 주소로 선택하고 싶습니다. 이 답변 askubuntu.com/a/222553iwconfig | grep "Access Point"명령 과 함께 나열된 두 가지 중 하나를 제공합니다 . 나는 2시에 떨어져있는 것이 유선 연결의 캐시 된 버전이라고 생각합니다. 이는 무선 경로를 얻고 있는지 확인하기 위해 플러그를 뽑았습니다.
hlongmore

10

더 이상 사용되지 않는 명령 ifconfig(8), arp(8) 또는 route(8)을 사용하지 마십시오 . 그것들을 대체하고 더 많은 것을 할 수있는 새로운 명령을 사용하십시오 ip(8).

사용 ip route list하는 볼 default머신이있는 라우터. 그것은 default(또는 0.0.0.0)로 시작 하고 라우터에 대한 IP 주소를 가진 회선이어야합니다 . IPv6를 사용하는 경우 -6스위치를 추가하십시오 ip -6 route list.

default via 192.168.11.1 dev eth0  proto static 

default라우터 IP 주소 의 MAC 주소를 보려면를 사용 ip neigh하여 IP 주소 및 MAC 주소가있는 행을 찾아보십시오 lladdr.

192.168.11.1 dev eth0 lladdr 1c:af:f7:XX:XX:XX REACHABLE

4

라우터의 IP를 모르는 경우 route명령 에서 얻을 수있는 게이트웨이 일 가능성이 큽니다 .

$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.0.1     0.0.0.0         UG    0      0        0 eth0
192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0

플래그가있는 행에 유의하십시오 UG. Gateway해당 행 의 열에 있는 주소 가 원하는 것입니다. 그런 다음에 따라 2707974의 제안 으로 arp -n(처음에 표시하지 않는 경우 IP에 ping을)과 일치하는 라인을 찾을 수 :

$ arp -n
Address                  HWtype  HWaddress           Flags Mask            Iface
192.168.0.1              ether   00:11:22:33:44:55   C                     eth0
192.168.0.2              ether   66:77:88:99:aa:bb   C                     eth0

여기서 라우터의 MAC은입니다 00:11:22:33:44:55.


2
해당 원 라이너 :arp -n | grep `route -n | awk '/UG/{print $2}'` | awk '{print $3}'
Falko

3

여기에서 작동 한 라이너 dash, bash그리고 zsh:

ip neigh|grep "$(ip -4 route list 0/0|cut -d' ' -f3) "|cut -d' ' -f5|tr '[a-f]' '[A-F]'
  1. ip -4 route list 0/0 다음과 같은 것을 반환합니다.

    192.168.0.1 dev eth1 프로토 정적 메트릭 100을 통한 기본값

  2. 우리는 그 라인에서 IP를 세 번째 필드로 가져 cut오고 그 IP를 포함하는 grep 라인과 네트워크 이웃의 출력에서 ​​그 직후의 공간을 얻습니다 . ( 192.168.0.1와의 일치를 피하려면 공백이 필요합니다 192.168.0.10) 일치하는 줄은 다음과 같습니다.

    192.168.0.1 dev eth1 lladdr ca : fe : ba : be : be : af REACHABLE

  3. 이제 다섯 번째 필드를 가져 와서 대문자로 만듭니다.

    CA : FE : BA : BE : BE : AF


2
조금 더 설명하면 나머지 사람들이 스크립트를 이해하는 데 도움이 될 것입니다!
George Udosen

1
마지막 줄에는 변수를 대문자로 확장하는 Bash 기능이 있습니다.echo ${info[5]^^}
David Foerster

1
@DavidFoerster 이식 가능한 명령을 작성하고 싶었지만 원래 변형은 zsh에만 해당하는 배열 색인에 의존했기 때문에 가장 인기있는 세 가지 쉘 사이의 변형 이식으로 답변을 업데이트했습니다.
Grief

2

완전한 해결책은 아니지만 arp -n을 확인하십시오.

ddd@mmm ~ $ arp -n
Address                  HWtype  HWaddress           Flags Mask            Iface
xxx.xxx.xxx.xxx          ether   00:e0:1e:b4:12:42   C                     eth0
yyy.yyy.yyy.yyy          ether   00:14:78:52:28:d2   C                     wlan0

라우터가 아닌 컴퓨터 인터페이스의 MAC 주소를 얻지 못합니까?
Wilf

2
라우터를 핑 (ping ping 192.168.0.1)하면 arp 캐시에 MAC 주소가 있어야합니다.
Rmano

고맙습니다 @ 2707974 그러나 나는 맥 주소를 알지 못합니다 ip 주소가 없으며 모든 arp를 표시하기 위해 스크립트 파이썬에서 명령을 사용하고 싶기 때문에 라우터의 ip 주소 또는 mac 주소 만 제공하는 명령이 필요합니다. 테이블은 나에게 유용하지 않습니다.
user4650183

2

이것은 Grief의 답변의 개선 된 버전입니다. ip -4 라우트 목록 0/0이 둘 이상의 라인 (IP)을 리턴 할 수 있으며,이 경우 완전한 하나의 라이너가 작동하지 않습니다. 따라서 다음 수정 된 버전은 ip -4 라우트 목록 0/0이 리턴하는 첫 번째 라인 만 사용합니다.

ip neigh|grep "$(ip -4 route list 0/0|head -1|cut -d' ' -f3) "|cut -d' ' -f5|tr '[a-f]' '[A-F]'
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.