가상 인터페이스 및 다양한 IP

가상 인터페이스 및 다양한 IP

나는 명령을 사용하여 wlan0에 가상 인터페이스를 만들었고 ifconfig이것이 내가 가진 것입니다:

wlan0     Link encap:Ethernet  IndirizzoHW c4:46:19:69:b7:a5  
          indirizzo inet:192.168.1.4  Bcast:192.168.1.255  Maschera:255.255.255.0
          indirizzo inet6: fe80::c646:19ff:fe69:b7a5/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:277003 errors:0 dropped:2 overruns:0 frame:0
          TX packets:121609 errors:0 dropped:0 overruns:0 carrier:0
          collisioni:0 txqueuelen:1000 
          Byte RX:329915637 (329.9 MB)  Byte TX:17663121 (17.6 MB)

wlan0:1   Link encap:Ethernet  IndirizzoHW c4:46:19:69:b7:a5  
          indirizzo inet:172.16.1.4  Bcast:172.16.255.255  Maschera:255.255.0.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

내 로컬 네트워크의 두 번째 컴퓨터에서 동일한 작업을 수행했는데 ping 172.16.1.7모든 것이 잘 작동했습니다.

하지만 두 개의 IP가 있기 때문에 한 가지 이해가 안 돼요. 어느 IP를 선택하여 ICMP 요청을 보내야 할까요? 원본인가요 192.168.1.4아니면 제가 만든인가요 172.16.1.4?

답변1

커널의 라우팅 정책 규칙에 따라 결정됩니다. 다음 명령을 실행하면 커널이 무엇을 사용할지 확인할 수 있습니다.

$ ip route get 172.16.1.7
172.16.1.7 dev wlan0 src 172.16.1.4

ip route showip ro경로 테이블(해당 경로의 트래픽에 사용할 소스 주소도 표시)을 사용하거나 간단히 표시할 수 있습니다 .

with 를 사용할 ping-I사용할 인터페이스를 지정할 수 있습니다.

ping -I 172.16.1.4 172.16.1.7

답변2

"가상 인터페이스"( wlan0:1등)는 여러 IPv4 주소가 네트워크 인터페이스와 연결되어 있음을 커널에 알리는 오래된 방법일 뿐입니다. 최신 커널에서는 이러한 인터페이스가 실제로 존재하지 않으며 대신 ip addr.

$ sudo ifconfig veth0b:1 add 10.0.0.2
$ sudo ifconfig
veth0b: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
    inet 10.0.0.1  netmask 255.255.255.0  broadcast 0.0.0.0
    inet6 fe80::801e:15ff:fe73:e98a  prefixlen 64  scopeid 0x20<link>
    ether 82:1e:15:73:e9:8a  txqueuelen 1000  (Ethernet)
    RX packets 58  bytes 7700 (7.5 KiB)
    RX errors 0  dropped 0  overruns 0  frame 0
    TX packets 15  bytes 1174 (1.1 KiB)
    TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

veth0b:1:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
    inet 10.0.0.2  netmask 0.0.0.0  broadcast 0.0.0.0
    ether 82:1e:15:73:e9:8a  txqueuelen 1000  (Ethernet)

$ ip addr show dev veth0b
2: veth0b@if5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
     link/ether 82:1e:15:73:e9:8a brd ff:ff:ff:ff:ff:ff link-netnsid 0
  inet 10.0.0.1/24 scope global veth0b
     valid_lft forever preferred_lft forever
  inet 10.0.0.2/0 scope global veth0b:1:0
     valid_lft forever preferred_lft forever
  inet6 fe80::801e:15ff:fe73:e98a/64 scope link 
     valid_lft forever preferred_lft forever

특히 "가상 인터페이스"를 바인딩할 인터페이스로 선택할 수 없습니다.

$ ping -I veth0b:1 10.0.0.254
ping: invalid source address veth0b:1

하지만 핑의 소스 IP 주소를 선택할 수 있습니다(동일한 내용임).

$ ping -I 10.0.0.1 10.0.0.254
$ ping -I 10.0.0.2 10.0.0.254

이는 실제로 라우팅이나 게이트웨이와 관련이 없습니다. 라우팅은 대상 주소에 의해 결정됩니다.오직, 정책 라우팅이 적용되지 않는 한 두 경우 모두 애플리케이션이 인터페이스에 바인딩하도록 선택하거나 특정 소스 주소를 선택한 후에 발생합니다.

답변3

ping에는 기본 인터페이스가 있으므로 다음을 수행해야 합니다.

ping -I wlan0:1 your_target

관련 정보