기본 게이트웨이 NIC만 Ping 응답을 받습니다.

기본 게이트웨이 NIC만 Ping 응답을 받습니다.

사례상상하다(칼리리눅스RaspBerry Pi 2 B+의 v2:

luis@Fresoncio:~$ sudo route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         172.18.25.1     0.0.0.0         UG    0      0        0 eth0
default         192.168.1.1     0.0.0.0         UG    100    0        0 eth1
default         192.168.35.100  0.0.0.0         UG    101    0        0 eth2
... etc (see full table below)

이더넷(RJ45 케이블) 카드(NIC):

luis@Fresoncio:~$ sudo ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.18.25.246  netmask 255.255.255.0  broadcast 172.18.25.255
        inet6 fe80::ba27:ebff:fe92:feb3  prefixlen 64  scopeid 0x20<link>
        ether b8:27:eb:92:fe:b3  txqueuelen 1000  (Ethernet)
        RX packets 3013014  bytes 296362931 (282.6 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 9910966  bytes 558782777 (532.8 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.33  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::b117:1000:39bb:f8f0  prefixlen 64  scopeid 0x20<link>
        ether a0:ce:c8:09:e3:ef  txqueuelen 1000  (Ethernet)
        RX packets 97636  bytes 7342211 (7.0 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 471  bytes 31163 (30.4 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eth2: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.35.104  netmask 255.255.255.0  broadcast 192.168.35.255
        inet6 fe80::805b:dfe3:8c3b:61ff  prefixlen 64  scopeid 0x20<link>
        ether a0:ce:c8:09:f8:84  txqueuelen 1000  (Ethernet)
        RX packets 276507  bytes 18134656 (17.2 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 215  bytes 19996 (19.5 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 0  (Local Loopback)
        RX packets 96  bytes 12362 (12.0 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 96  bytes 12362 (12.0 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
--- etc (see fulll table below)

이 컴퓨터에 있는 것을 볼 수 있습니다.네트워크 카드 3개.인터넷에 ping을 실행하면 작동합니다.NIC를 지정할 때 다음을 모두 사용하십시오.

luis@Fresoncio:~$ sudo ping -I eth0 -c 5 8.8.8.8
PING 8.8.8.8 (8.8.8.8) from 172.18.25.246 eth0: 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=54 time=36.7 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=54 time=308 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=54 time=85.5 ms
64 bytes from 8.8.8.8: icmp_seq=4 ttl=54 time=151 ms
64 bytes from 8.8.8.8: icmp_seq=5 ttl=54 time=56.6 ms

--- 8.8.8.8 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4005ms
rtt min/avg/max/mdev = 36.753/127.695/308.472/98.316 ms
luis@Fresoncio:~$ sudo ping -I eth1 -c 5 8.8.8.8
PING 8.8.8.8 (8.8.8.8) from 192.168.1.33 eth1: 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=55 time=43.3 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=55 time=41.0 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=55 time=40.7 ms
64 bytes from 8.8.8.8: icmp_seq=4 ttl=55 time=41.5 ms
64 bytes from 8.8.8.8: icmp_seq=5 ttl=55 time=40.9 ms

--- 8.8.8.8 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4006ms
rtt min/avg/max/mdev = 40.757/41.517/43.303/0.962 ms
luis@Fresoncio:~$ sudo ping -I eth2 -c 5 8.8.8.8
PING 8.8.8.8 (8.8.8.8) from 192.168.35.104 eth2: 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=55 time=50.7 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=55 time=37.4 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=55 time=49.2 ms
64 bytes from 8.8.8.8: icmp_seq=4 ttl=55 time=37.7 ms
64 bytes from 8.8.8.8: icmp_seq=5 ttl=55 time=53.2 ms

--- 8.8.8.8 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4005ms
rtt min/avg/max/mdev = 37.499/45.711/53.250/6.723 ms

지금실패사례상상하다 (우분투 v16노트북의 경우):

luis@Hipatio:~$ sudo route
Tabla de rutas IP del núcleo
Destino         Pasarela        Genmask         Indic Métric Ref    Uso Interfaz
default         Router-         0.0.0.0         UG    0      0        0 enp2s0
default         192.168.22.1    0.0.0.0         UG    100    0        0 enx3c18a00b753d
link-local      *               255.255.0.0     U     1000   0        0 enp2s0
192.168.11.0    *               255.255.255.0   U     0      0        0 enp2s0
192.168.22.0    *               255.255.255.0   U     100    0        0 enx3c18a00b753d

이번에 가장 중점을 두는 것은RJ45 케이블 NIC 2개:

luis@Hipatio:~$ ifconfig
enp2s0    Link encap:Ethernet  direcciónHW 68:f7:28:d2:a4:ce
          Direc. inet:192.168.11.119  Difus.:192.168.11.255  Másc:255.255.255.0
          Dirección inet6: fe80::6af7:28ff:fed2:a4ce/64 Alcance:Enlace
          ACTIVO DIFUSIÓN FUNCIONANDO MULTICAST  MTU:1500  Métrica:1
          Paquetes RX:454517 errores:0 perdidos:0 overruns:0 frame:0
          Paquetes TX:1940326 errores:0 perdidos:0 overruns:0 carrier:0
          colisiones:0 long.colaTX:1000
          Bytes RX:73243397 (73.2 MB)  TX bytes:2778755895 (2.7 GB)

enx3c18a00b753d Link encap:Ethernet  direcciónHW 3c:18:a0:0b:75:3d
          Direc. inet:192.168.22.51  Difus.:192.168.22.255  Másc:255.255.255.0
          Dirección inet6: fe80::4c9d:de01:a97a:fd42/64 Alcance:Enlace
          ACTIVO DIFUSIÓN FUNCIONANDO MULTICAST  MTU:1500  Métrica:1
          Paquetes RX:194 errores:0 perdidos:0 overruns:0 frame:0
          Paquetes TX:355 errores:0 perdidos:0 overruns:0 carrier:0
          colisiones:0 long.colaTX:1000
          Bytes RX:20096 (20.0 KB)  TX bytes:39265 (39.2 KB)

lo        Link encap:Bucle local
          Direc. inet:127.0.0.1  Másc:255.0.0.0
          Dirección inet6: ::1/128 Alcance:Anfitrión
          ACTIVO BUCLE FUNCIONANDO  MTU:65536  Métrica:1
          Paquetes RX:60 errores:0 perdidos:0 overruns:0 frame:0
          Paquetes TX:60 errores:0 perdidos:0 overruns:0 carrier:0
          colisiones:0 long.colaTX:1
          Bytes RX:5099 (5.0 KB)  TX bytes:5099 (5.0 KB)

이 시간실패하다(응답 없음) 기본이 아닌 NIC에서 핑을 보내는 경우:

luis@Hipatio:~$ ping -I enx3c18a00b753d -c 5 8.8.8.8
PING 8.8.8.8 (8.8.8.8) from 192.168.22.51 enx3c18a00b753d: 56(84) bytes of data.

--- 8.8.8.8 ping statistics ---
5 packets transmitted, 0 received, 100% packet loss, time 3999ms

이것기본적으로 하나가 유효합니다.좋아요:

luis@Hipatio:~$ ping -I enp2s0 -c 5 8.8.8.8
PING 8.8.8.8 (8.8.8.8) from 192.168.11.119 enp2s0: 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=55 time=51.6 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=55 time=52.9 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=55 time=50.9 ms
64 bytes from 8.8.8.8: icmp_seq=4 ttl=55 time=50.8 ms
64 bytes from 8.8.8.8: icmp_seq=5 ttl=55 time=51.0 ms

--- 8.8.8.8 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4005ms
rtt min/avg/max/mdev = 50.812/51.498/52.995/0.826 ms

luis@Hipatio:~$ ping -c 5 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=51 time=57.9 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=51 time=57.0 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=51 time=57.0 ms
64 bytes from 8.8.8.8: icmp_seq=4 ttl=51 time=57.1 ms
64 bytes from 8.8.8.8: icmp_seq=5 ttl=51 time=57.6 ms

같은 테스트역시 실패했다존재하다RaspBerry Pi 2 B+용 Ubuntu Mate v16(이번에는 RJ45 네트워크 카드 4개): 기본 카드만 작동합니다. 그래서 문제가 Ubuntu에 있어야 하는지 궁금합니다(이 핑 테스트는 v14와 같은 이전 Ubuntu 버전에 대한 것이라고 확신합니다). 어쨌든 Linux 문제를 해결하는 방법을 아는 것이 나에게는 가장 좋은 일입니다.

여기서 무슨 일이 일어나고 있으며 어떻게 해야 합니까?특정 NIC에서 핑?

참고 1: 첫 번째 예의 Kali 작업 배포판에는 여러 개의 VPN이 동시에 작동하므로(읽기가 다소 혼란스럽습니다) 테이블을 제거했습니다 route. 정식 버전은 다음과 같습니다(필요하지는 않지만...누가 알겠습니까?).

luis@Fresoncio:~$ sudo route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         172.18.25.1     0.0.0.0         UG    0      0        0 eth0
default         192.168.1.1     0.0.0.0         UG    100    0        0 eth1
default         192.168.35.100  0.0.0.0         UG    101    0        0 eth2
115.red-79-157- 172.18.25.1     255.255.255.255 UGH   0      0        0 eth0
67.red-79-157-8 172.18.25.1     255.255.255.255 UGH   0      0        0 eth0
187.red-81-32-1 172.18.25.1     255.255.255.255 UGH   0      0        0 eth0
227.red-81-32-1 172.18.25.1     255.255.255.255 UGH   0      0        0 eth0
82.red-81-33-18 172.18.25.1     255.255.255.255 UGH   0      0        0 eth0
190.red-83-44-1 172.18.25.1     255.255.255.255 UGH   0      0        0 eth0
152.red-83-44-2 172.18.25.1     255.255.255.255 UGH   0      0        0 eth0
249.red-83-44-2 172.18.25.1     255.255.255.255 UGH   0      0        0 eth0
10.red-83-52-23 172.18.25.1     255.255.255.255 UGH   0      0        0 eth0
172.red-83-52-2 172.18.25.1     255.255.255.255 UGH   0      0        0 eth0
206.red-83-52-2 172.18.25.1     255.255.255.255 UGH   0      0        0 eth0
33.244.222.87.d 172.18.25.1     255.255.255.255 UGH   0      0        0 eth0
32.246.222.87.d 172.18.25.1     255.255.255.255 UGH   0      0        0 eth0
235.248.222.87. 172.18.25.1     255.255.255.255 UGH   0      0        0 eth0
151.18.16.95.dy 172.18.25.1     255.255.255.255 UGH   0      0        0 eth0
196.48.16.95.dy 172.18.25.1     255.255.255.255 UGH   0      0        0 eth0
143.49.16.95.dy 172.18.25.1     255.255.255.255 UGH   0      0        0 eth0
189.54.16.95.dy 172.18.25.1     255.255.255.255 UGH   0      0        0 eth0
122.56.16.95.dy 172.18.25.1     255.255.255.255 UGH   0      0        0 eth0
11.81.20.95.dyn 172.18.25.1     255.255.255.255 UGH   0      0        0 eth0
237.204.22.95.d 172.18.25.1     255.255.255.255 UGH   0      0        0 eth0
177.206.22.95.d 172.18.25.1     255.255.255.255 UGH   0      0        0 eth0
163.red-95-123- 172.18.25.1     255.255.255.255 UGH   0      0        0 eth0
172.18.25.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth1
192.168.1.0     0.0.0.0         255.255.255.0   U     100    0        0 eth1
192.168.35.0    0.0.0.0         255.255.255.0   U     0      0        0 eth2
192.168.35.0    0.0.0.0         255.255.255.0   U     100    0        0 eth2
192.168.210.0   0.0.0.0         255.255.255.0   U     0      0        0 ppp0
192.168.211.0   0.0.0.0         255.255.255.0   U     0      0        0 tun0

...이것이 완료되었습니다 ifconfig.

luis@Fresoncio:~$ sudo ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.18.25.246  netmask 255.255.255.0  broadcast 172.18.25.255
        inet6 fe80::ba27:ebff:fe92:feb3  prefixlen 64  scopeid 0x20<link>
        ether b8:27:eb:92:fe:b3  txqueuelen 1000  (Ethernet)
        RX packets 3018864  bytes 296745295 (282.9 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 9911793  bytes 558868110 (532.9 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.33  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::b117:1000:39bb:f8f0  prefixlen 64  scopeid 0x20<link>
        ether a0:ce:c8:09:e3:ef  txqueuelen 1000  (Ethernet)
        RX packets 97908  bytes 7362465 (7.0 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 480  bytes 31821 (31.0 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eth2: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.35.104  netmask 255.255.255.0  broadcast 192.168.35.255
        inet6 fe80::805b:dfe3:8c3b:61ff  prefixlen 64  scopeid 0x20<link>
        ether a0:ce:c8:09:f8:84  txqueuelen 1000  (Ethernet)
        RX packets 277209  bytes 18180584 (17.3 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 223  bytes 20612 (20.1 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 0  (Local Loopback)
        RX packets 96  bytes 12362 (12.0 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 96  bytes 12362 (12.0 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ppp0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST>  mtu 1446
        inet 192.168.210.141  netmask 255.255.255.0  destination 192.168.210.1
        ppp  txqueuelen 3  (Point-to-Point Protocol)
        RX packets 461  bytes 43679 (42.6 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 423  bytes 90174 (88.0 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

tun0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST>  mtu 1500
        inet 192.168.211.141  netmask 255.255.255.0  destination 192.168.211.141
        unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 100  (UNSPEC)
        RX packets 14  bytes 704 (704.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

노트 2: 새로운 단서. 연구를 통해 알아낸 것은다중 라우팅 기능이 옵션 은 필수 CONFIG_IP_MROUTE_MULTIPLE_TABLES이거나CONFIG_IP_MULTIPLE_TABLES핵심.
이것이 출력인 한 나는 이것이 의심스럽다.실패하다컴퓨터:

luis@Hipatio:/usr/src/linux-headers-4.4.0-62-generic$ cat .config | grep "multiple" -i
# CONFIG_OPROFILE_EVENT_MULTIPLEX is not set
CONFIG_NEED_MULTIPLE_NODES=y
CONFIG_IP_MULTIPLE_TABLES=y
# CONFIG_IP_MROUTE_MULTIPLE_TABLES is not set
CONFIG_IPV6_MULTIPLE_TABLES=y
CONFIG_IPV6_MROUTE_MULTIPLE_TABLES=y
CONFIG_DEVPTS_MULTIPLE_INSTANCES=y
# Multiplexer I2C Chip support

이것은피복재컴퓨터:

luis@Fresoncio:/usr/src/kernel$ cat .config | grep "multiple" -i
CONFIG_IP_MULTIPLE_TABLES=y
CONFIG_IP_MROUTE_MULTIPLE_TABLES=y
CONFIG_IPV6_MULTIPLE_TABLES=y
CONFIG_IPV6_MROUTE_MULTIPLE_TABLES=y
CONFIG_DEVPTS_MULTIPLE_INSTANCES=y
# Multiplexer I2C Chip support

노트 3:테스트된(또는 그렇게 생각합니다) 메서드 참조노트 2/etc/default/grub줄을 수정하면 다음과 같습니다.

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash CONFIG_IP_MROUTE_MULTIPLE_TABLES=y"

보시다시피, 시스템은 이제 다음 매개변수로 시작됩니다 yes.

luis@Hipatio:~$ cat /proc/cmdline
BOOT_IMAGE=/boot/vmlinuz-4.4.0-62-generic root=UUID=66464d51-851f-4623-b5cb-1699901a4a9b ro quiet splash CONFIG_IP_MROUTE_MULTIPLE_TABLES=y vt.handoff=7

안타깝게도결과가 없다. ping이 여전히 실패합니다.

답변1

기본적으로 시스템은 실제로 지정된 대상에 대해 하나의 경로를 사용하며, 이는 ip route get 8.8.8.8이전 명령에서 표시된 패킷이 아닌 인터페이스에서 패킷을 수신하는 경우 일종의 스푸핑 시도로 간주됩니다. 그리고 그것을 폐기하십시오. 역방향 경로 필터링이 비활성화된 경우 다음 작업이 수행되지 않습니다.

echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter
echo 0 > /proc/sys/net/ipv4/conf/enx3c18a00b753d/rp_filter.

가능하다면 항상 기본 경로를 사용하는 것이 가능하며 느슨한 모드가 선호됩니다(값 2를 사용하고 enp2s0에는 1을 남겨둡니다).

귀하의 의견과 관련하여 enp2s0에는 경쟁 조건이 없습니다. 라우팅 테이블은 이러한 설정에 의해 변경되거나 변경되지 않으므로 경쟁이 발생하지 않습니다. 보다ip-sysctl.txt Linux 커널 문서 자세한 내용은.

이제 여러분의 목표를 위해 이것은 실제로 해야 할 일이 아닙니다. 경로를 설정해야 합니다.테이블인터페이스/공급자별 및소스 IP(그런데 이것이 바로 CONFIG_IP_MULTIPLE_TABLES의 목적입니다. CONFIG_IP_MROUTE*는 멀티캐스트용입니다.) 그런 다음 일부 선택 논리를 사용하십시오.iprule주문하다. 하나 이상의 가능성이 있습니다.예를 들어iptables를 사용하여 패킷을 표시하고 해당 표시를 더 많은 경로에 사용규칙또는 예시 중 하나에서처럼 특정 대상에 대한 특정 경로를 설정하는 것이 훨씬 더 간단합니다(끝 참조).

모든 세부정보에는 예시가 포함되어 있습니다.

http://lartc.org/howto/lartc.rpdb.multiple-links.html

여기에 직접 실제 예제를 넣는 것은 약간 길지만 따라하기 쉬운 것 같습니다(일부 주의사항 등 포함). 이 경우 라우팅 알고리즘이 이전만큼 간단하지 않더라도 패킷은 항상 예상 인터페이스를 통해 도착하므로 더 이상 rp_filter를 변경할 필요가 없습니다.

경로 기반 로드 밸런싱 예제와 달리 해당 작업이 완료되면 iptables를 사용하여 작업을 수행할 수 있습니다. 예를 들어 nat 테이블의 statistic모듈을 결합하여 --every사용하는 여러 SNAT(공급자당 하나씩)를 사용하여 모든 새 연결의 부하를 동적으로 분산합니다.

관련 정보