Ubuntu Linux PC의 네 번째 포트(enp4s0)에 직접 연결된 고정 IP 주소(192.168.1.16)로 구성된 장치가 있습니다. m/c는 세 번째 포트(enp3s0)를 통해 내 LAN에도 연결됩니다. 내 LAN은 DHCP를 사용하여 192.168.1.1/24 네트워크에 IP를 할당합니다.
이제 enp4s0을 통해 192.168.1.19에서 내 장치를 핑할 수 있기를 원하므로 이 명령을 사용하여 단일 IP 주소를 통해 경로를 추가합니다.
sudo ip route add 192.168.1.19/32 dev enp4s0
불행히도 핑이 실패합니다.
$ ping 192.168.1.19
PING 192.168.1.19 (192.168.1.19) 56(84) bytes of data.
From 192.168.1.168 icmp_seq=1 Destination Host Unreachable
From 192.168.1.168 icmp_seq=2 Destination Host Unreachable
From 192.168.1.168 icmp_seq=3 Destination Host Unreachable
일부 상태를 보면 링크가 다운되었다고 표시됩니다.
$ ip route
default via 192.168.1.1 dev enp3s0 proto dhcp metric 101
default via 10.136.209.45 dev wwan0 proto static metric 700
10.136.209.40/29 dev wwan0 proto kernel scope link src 10.136.209.44 metric 700
169.254.0.0/16 dev enp3s0 scope link metric 1000
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1
192.168.1.0/24 dev enp3s0 proto kernel scope link src 192.168.1.168 metric 101
192.168.1.19 dev enp4s0 scope link linkdown
$ ip address
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp1s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000
link/ether 78:d0:04:31:91:bd brd ff:ff:ff:ff:ff:ff
3: enp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 78:d0:04:31:91:be brd ff:ff:ff:ff:ff:ff
4: enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 78:d0:04:31:91:bf brd ff:ff:ff:ff:ff:ff
inet 192.168.1.168/24 brd 192.168.1.255 scope global dynamic noprefixroute enp3s0
valid_lft 85575sec preferred_lft 85575sec
inet6 fe80::1191:4ec4:6844:2273/64 scope link noprefixroute
valid_lft forever preferred_lft forever
5: enp4s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000
link/ether 78:d0:04:31:91:c0 brd ff:ff:ff:ff:ff:ff
6: wwan0: <BROADCAST,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 1000
link/ether e6:83:24:bc:f6:81 brd ff:ff:ff:ff:ff:ff
inet 10.136.209.44/29 brd 10.136.209.47 scope global noprefixroute wwan0
valid_lft forever preferred_lft forever
7: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
link/ether 02:42:f1:f6:93:0b brd ff:ff:ff:ff:ff:ff
inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
valid_lft forever preferred_lft forever
inet6 fe80::42:f1ff:fef6:930b/64 scope link
valid_lft forever preferred_lft forever
9: veth36abd25@if8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP group default
link/ether ae:27:23:82:70:6a brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet6 fe80::ac27:23ff:fe82:706a/64 scope link
valid_lft forever preferred_lft forever
192.168.1.19에서 장치에 액세스하는 데 누락된 것이 있나요?
고쳐 쓰다:
일부 케이블을 교체하려고 시도한 후 커넥터가 올바른 논리적 순서가 아니라는 것을 발견했습니다! 실제로는 1,2,3,4가 아니라 1,4,3,2입니다.
그래서 enp4s0인 줄 알았는데 실제로는 en2s0이었습니다. 이러한 혼란에서 벗어나 이제또 다른 문제여기에 표시된 대로:
$ sudo ip route add 192.168.1.19/32 dev enp2s0
$ route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default setup.ubnt.com 0.0.0.0 UG 102 0 0 enp3s0
default _gateway 0.0.0.0 UG 700 0 0 wwan0
10.63.138.32 0.0.0.0 255.255.255.248 U 700 0 0 wwan0
link-local 0.0.0.0 255.255.0.0 U 1000 0 0 enp3s0
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
192.168.1.0 0.0.0.0 255.255.255.0 U 102 0 0 enp3s0
eZ80Acclaim 0.0.0.0 255.255.255.255 UH 0 0 0 enp2s0
$ ping 192.168.1.19
PING 192.168.1.19 (192.168.1.19) 56(84) bytes of data.
64 bytes from 192.168.1.19: icmp_seq=1 ttl=250 time=1.01 ms
64 bytes from 192.168.1.19: icmp_seq=2 ttl=250 time=1.06 ms
64 bytes from 192.168.1.19: icmp_seq=3 ttl=250 time=1.18 ms
64 bytes from 192.168.1.19: icmp_seq=4 ttl=250 time=1.27 ms
64 bytes from 192.168.1.19: icmp_seq=5 ttl=250 time=1.18 ms
64 bytes from 192.168.1.19: icmp_seq=6 ttl=250 time=1.04 ms
64 bytes from 192.168.1.19: icmp_seq=7 ttl=250 time=1.17 ms
64 bytes from 192.168.1.19: icmp_seq=8 ttl=250 time=1.18 ms
64 bytes from 192.168.1.19: icmp_seq=9 ttl=250 time=1.05 ms
64 bytes from 192.168.1.19: icmp_seq=10 ttl=250 time=1.17 ms
64 bytes from 192.168.1.19: icmp_seq=11 ttl=250 time=1.43 ms
64 bytes from 192.168.1.19: icmp_seq=12 ttl=250 time=0.941 ms
From 192.168.1.168 icmp_seq=13 Destination Host Unreachable
From 192.168.1.168 icmp_seq=14 Destination Host Unreachable
From 192.168.1.168 icmp_seq=15 Destination Host Unreachable
^C
--- 192.168.1.19 ping statistics ---
18 packets transmitted, 12 received, +3 errors, 33.3333% packet loss, time 17129ms
rtt min/avg/max/mdev = 0.941/1.139/1.433/0.124 ms, pipe 4
$ route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default setup.ubnt.com 0.0.0.0 UG 102 0 0 enp3s0
default _gateway 0.0.0.0 UG 700 0 0 wwan0
10.63.138.32 0.0.0.0 255.255.255.248 U 700 0 0 wwan0
link-local 0.0.0.0 255.255.0.0 U 1000 0 0 enp3s0
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
192.168.1.0 0.0.0.0 255.255.255.0 U 102 0 0 enp3s0
$
보시다시피 경로가 라우팅 테이블에 추가되었으며 장치에 대한 ping이 제대로 작동합니다. 그러나 몇 초 후에는 대상에 도달할 수 없게 됩니다. 라우팅 테이블을 다시 보니, 해당 경로가 삭제된 것을 볼 수 있습니다!
이제 질문은 "누가" 해당 경로를 삭제했으며 그 이유는 무엇입니까?
답변1
네트워크 카드가 연결되어 있지 않은 경우(그렇게 보입니다), 통신사 상태를 무시해야 합니다.
바라보다이것은 또 다른 질문입니다자세한 내용은
답변2
고정 경로가 삭제되는 것에 대한 답을 찾은 것 같습니다. NetworkManger(nmcli)는 경로를 직접 추가하는 것을 좋아하지 않는 것 같아서 백그라운드에서 해당 경로를 종료합니다.
영감을 좀 얻었어요여기nmcli를 사용하여 내 장치에 고정 경로를 추가하는 방법에 대해 설명합니다. 그래서 이 명령을 사용하여 필요한 경로를 추가합니다.
$ sudo nmcli con add type ethernet con-name "static-ip" ifname enp2s0 ipv4.method manual ipv4.addresses 192.168.1.19/32 gw4 0.0.0.0
그것이 하는 모든 일을 완전히 이해했는지는 확실하지 않지만 작동하는 것 같으며 이제 항상 192.168.1.19에서 내 장치를 핑할 수 있습니다. 더 좋은 점은 이 변경 사항이 재부팅 후에도 지속되었으며 동일한 192.168.1.0/24 네트워크에 있는 랩톱에서 장치를 핑할 수 있는 것 같았습니다.