IP 10.10.0.2의 개인 주소 공간에 CentOS 7 시스템이 있습니다. 공인 IP를 사용하는 게이트웨이를 통해 인터넷에 접속하고 싶습니다.동일한 스위치에 연결, 우리는 그것을 50.50.50.50이라고 부릅니다. 한 지점에서 작동했지만 지금은 손상되어 고칠 수 없는 것 같습니다. 또한 형식을 더 쉽게 이해할 수 있도록 net-tools도 설치했습니다.
[root@node002 ~]# ip route show
10.0.0.0/8 dev ens785 proto kernel scope link src 10.10.0.2 metric 100
[root@node002 ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.0.0.0 0.0.0.0 255.0.0.0 U 100 0 0 ens785
그렇다면 다른 모든 것에 대한 게이트웨이로 50.50.50.50이 있는 경로를 어떻게 추가합니까?
몇 가지를 시도했지만 [root@node002 ~]# ip route add 0.0.0.0/0 dev ens785
경로 테이블에 아무것도 추가되지 않습니다. 오류 메시지도 없습니다. 또한 아래와 같이 호스트에 경로를 추가하려고 시도했는데 ip route add 50.50.50.50 dev ens785
, 이로 인해 라우팅 테이블에 추가 행이 추가되었습니다.
[root@node002 ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.0.0.0 0.0.0.0 255.0.0.0 U 100 0 0 ens785
50.50.50.50 0.0.0.0 255.255.255.255 UH 0 0 0 ens785
또한 이와 같은 다른 변형도 시도했지만 [root@node002 ~]# ip route add 0.0.0.0/0 via 50.50.50.50
실행 직후에 표시되는 내용이므로 호스트에 대한 경로가 제거되었습니다.
[root@node002 ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.0.0.0 0.0.0.0 255.0.0.0 U 100 0 0 ens785
나는 또한 다음을 시도했습니다.
[root@node002 ~]# ip route add default via 50.50.50.50/0
Error: ??? address is expected rather than "50.50.50.50/0".
그리고 심지어 :
[root@node002 ~]# ip route add default dev ens785
[root@node002 ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.0.0.0 0.0.0.0 255.0.0.0 U 100 0 0 ens785
50.50.50.50 0.0.0.0 255.255.255.255 UH 0 0 0 ens785
다른 모든 컴퓨터에는 대상과 게이트웨이가 0.0.0.0인 기본 경로가 있습니다. 예를 들어 내 데스크톱과 마찬가지로 이는 의미가 있습니다. 동일한 네트워크의 트래픽은 게이트웨이 없이 로컬 네트워크로 이동하고 다른 곳으로의 트래픽은 라우터를 통과합니다.
root@desktop ~ $ route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 100.100.100.1 0.0.0.0 UG 100 0 0 eth0
100.100.100.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0
이 문제를 어떻게 깨뜨렸는지, 어떻게 고칠 수 있는지 잘 모르겠습니다. 어떤 조언이라도 대단히 감사하겠습니다!
편집하다
먼저 동일한 인터페이스에서 게이트웨이 시스템에 개인 주소를 제공했습니다. 지금은 10.1.1.1이고 나는생각하다서브넷 마스크가 255.0.0.0임을 나타냅니다. 이는 동일한 네트워크임을 의미합니다. 이 주소는 ping이 가능합니다. 하지만 기본값으로 추가할 수도 없습니다.
[root@node002 ~]# ip route add default via 10.1.1.1
[root@node002 ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.0.0.0 0.0.0.0 255.0.0.0 U 100 0 0 ens785
50.50.50.50 0.0.0.0 255.255.255.255 UH 0 0 0 ens785
임시로 노드에 공용 IP를 추가한 다음 기본 게이트웨이를 추가할 수 있습니다.
[root@node002 ~]# ip a add 50.50.50.51 dev ens785
[root@node002 ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.0.0.0 0.0.0.0 255.0.0.0 U 100 0 0 ens785
50.50.50.50 0.0.0.0 255.255.255.255 UH 0 0 0 ens785
[root@node002 ~]# ip route add default via 10.1.1.1
[root@node002 ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.1.1.1 0.0.0.0 UG 100 0 0 ens785
10.0.0.0 0.0.0.0 255.0.0.0 U 100 0 0 ens785
50.50.50.50 0.0.0.0 255.255.255.255 UH 0 0 0 ens785
50.50.50.51 0.0.0.0 255.255.255.255 UH 100 0 0 ens785
그런 다음 공용 IP 주소를 제거할 수 있지만 여전히 기본 경로를 유지할 수 있습니다.
[root@node002 ~]# ip a del 50.50.50.51/32 dev ens785
[root@node002 ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.1.1.1 0.0.0.0 UG 100 0 0 ens785
10.0.0.0 0.0.0.0 255.0.0.0 U 100 0 0 ens785
50.50.50.50 0.0.0.0 255.255.255.255 UH 0 0 0 ens785
그렇다면 공인IP를 제거하고 게이트웨이는 그대로 유지할 수 있다면 왜 게이트웨이를 추가하기 위해 공인IP를 추가해야 할까요?
편집 2 단순히 공용 IP를 추가하지 않는 한 ip 명령을 사용하여 기본 경로를 추가할 수 없습니다.
상황을 더욱 혼란스럽게 만들기 위해 NetworkManager를 우회하고 ifcfg 파일을 사용하여(DHCP 대신 정적 할당으로 교체) 목표를 달성할 수 있었습니다.
[root@node002 ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens785
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
NM_CONTROLLED=no
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
NAME=ens785
DEVICE=ens785
ONBOOT=yes
MTU=9000
HWADDR=00:11:22:33:44:55
IPADDR=10.10.0.2
NETMASK=255.0.0.0
GATEWAY=10.1.1.1
DNS1=10.1.1.1
[root@node002 ~]# systemctl stop NetworkManager
[root@node002 ~]# ifdown ens785 && ifup ens785
[root@node002 ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use
Iface
0.0.0.0 10.1.1.1 0.0.0.0 UG 0 0 0 ens785
10.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 ens785
169.254.0.0 0.0.0.0 255.255.0.0 U 1004 0 0 ens785
답변1
첫째, IP로 기본 게이트웨이를 추가할 수 없으며, 인터페이스에 게이트웨이와 동일한 범위의 IP가 없습니다. 예를 들어 기본 게이트웨이를 추가하려면 50.50.50.50/24
동일한 범위의 IP가 있어야 합니다 50.50.50.100/24
.
인터페이스가 하나만 있고 개인 IP 주소가 있고 인터넷에 액세스해야 하는 경우 로컬 IP에서 공용 IP로 NAT를 수행할 수 있도록 라우터가 필요합니다.
스위치만 있으므로 이 문제를 해결하려면 개인 IP와 공용 IP 범위의 IP를 사용하여 동일한 인터페이스에 하위(별칭) 인터페이스를 추가한 다음 50.50.50.100/24
이와 같이 기본 게이트웨이를 추가 하는 트릭을 수행할 수 있습니다.ip route add default via 50.50.50.50
답변2
라우팅은 항상 레이어 3(IP)에서 수행됩니다. 을 가리키는 기본 경로를 갖는 것만으로는 충분하지 않습니다 50.50.50.50
. 경로 테이블에는 해당 경로에 도달하는 방법을 보여주는 항목도 포함되어야 합니다.저것주인. 일부 임의의 주소는 동일한 링크에 있더라도 IP 계층에 도달할 수 없습니다. IP 계층이 라우팅 테이블을 기반으로 IP 패킷이 어디로 가야 하는지 결정할 때만 IP 패킷을 계층 2로 전달할 준비가 됩니다.
호스트가 반드시 동일한 범위(예 50.50.50.51
: )에 IP를 가질 필요는 없습니다. 중요한 것은 서브넷에 대한 경로가 있다는 것입니다. 그러나 보조 주소( ip addr add 50.50.50.51/24 dev ens785
)를 추가하면 경로에 자동으로 추가됩니다 50.50.50.0/24
.
그렇긴 하지만, 이 작업을 수행하는 올바른 방법은 당신이 하려는 것입니다. 즉, 범위 내 라우터에 보조 주소를 추가하고 10.0.0.0/8
해당 주소에 기본 경로를 추가하는 것입니다( 10.1.1.1
귀하의 예에서는). 경로 추가가 왜 효과가 없는지 모르겠습니다. 오류 메시지를 받았나요 ip route add default via 10.1.1.1
?
네트워크의 호스트에서 인터넷에 액세스하려면 10.0.0.0/8
라우터는 @WissamRoujoulah가 위에서 말한 것처럼 개인 주소와 공용 주소 간에 NAT를 수행해야 합니다.
답변3
제 생각에는 자동 네트워크 구성 관리자의 버그인 것 같습니다. 다음 명령을 입력하여 구성 관리자를 닫는 경우:
NM_CONTROL=no
네트워크를 다시 시작 하면 ifcfg-ens785
기본 경로를 수동으로 추가할 수 있습니다.
답변4
당신은 그것을 사용할 수 있습니다
ip route add default via 50.50.50.50 dev ens785
또는
ip route add default via 50.50.50.50 dev ens785 onlink
네트워크 50.50.50.0/24가 로컬로 구성되지 않은 경우
그런데, 50.50.50.50/0은 0/0이어야 합니다. 이것이 기본 별칭인가요? !
ip r a 0/0 via 50.50.50.50/32 ..
동일합니까?
ip r a default via 50.50.50.50/32 ..
그 이상으로 0비트 네트워크는 의미가 없습니다. 해당 IP(단일 호스트)만 참조하는 경우 /32를 생략할 수 있습니다.
화타이