네트워크 카드가 있는 Ubuntu 14.04 서버가 있습니다. 해당 NIC의 MAC 주소는 동일한 서브넷(XXX1)에 있는 데이터 센터 게이트웨이에 의해 한 서브넷(XXX0/24)의 IP(XXX100)에 할당되고 완전히 다른 서브넷에서 할당됩니다. 하나의 추가 IP 범위 서브넷(YYY0) /28).
동일한 인터페이스(eth0)에 XXX100 및 YYY1을 사용하여 서버를 설정했으며 서버는 두 IP 주소를 통해 나머지 인터넷과 연결하고 연결할 수 있습니다.
두 번째 서브넷의 IP 주소를 사용하는 일부 가상 머신이 있습니다. 나는 그들이 호스트의 두 번째 IP 주소인 YYY1을 게이트웨이 주소로 사용해야 한다고 가정합니다(내가 이해한 바에 따르면 그들은 데이터 센터의 게이트웨이 주소가 다른 서브넷에 있기 때문에 액세스할 수 없기 때문입니다). 내가 가지고 있는 모든 IP 주소인 XXX100과 YYY0/28은 데이터 센터의 게이트웨이에서 정적으로 라우팅되므로 이에 대한 모든 요청은 내 서버의 NIC로 이동합니다. 또한 가상 머신의 MAC 주소가 아닌 해당 NIC의 MAC 주소에서만 요청을 수락합니다.
YYY0/28 서브넷에 대한 모든 요청이 데이터 센터의 게이트웨이 XXX1을 통해 라우팅되도록 호스트를 설정하려면 어떻게 해야 합니까?
내가 아는 한, 단순히 넷마스크를 확장할 수는 없습니다. 그렇게 하면 네트워크의 다른 서버에 접속할 수 없게 될 수도 있기 때문입니다.
이것은 서버에서 온 것입니다./etc/network/interfaces
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address X.X.X.100
netmask 255.255.255.0
gateway X.X.X.1
dns-nameservers 8.8.8.8 8.8.4.4
iface eth0 inet static
address Y.Y.Y.1
netmask 255.255.255.240
/etc/sysctl.conf
이 줄을 활성화한 후 :
net.ipv4.ip_forward=1
VM은 IP 주소로 YYYn(n>1)을 사용하고 게이트웨이로 YYY1을 사용합니다.
위 설정을 사용하면 가상 머신은 두 개의 IP 주소를 통해 호스트에 연결할 수 있지만 다른 호스트에는 연결할 수 없습니다. 가상 머신이 ISP 게이트웨이 XXX1의 MAC 주소를 찾을 수 없는 것 같습니다.
$ arp -an
? (X.X.X.1) at c8:60:00:5e:bd:e0 [ether] on eth0
? (Y.Y.Y.1) at <incomplete> on eth0
그런데 이상하게도 가끔은...
$ arp -an
? (X.X.X.1) at c8:60:00:5e:bd:e0 [ether] on eth0
? (Y.Y.Y.1) at cc:e1:7f:07:e0:af [ether] on eth0
이 두 가지 예는 불과 몇 분 거리에 있습니다. 가상 머신에 핑을 보내는 느낌이 들었습니다. 특히 핑이 울리는 느낌이 들었습니다.~에서VM은 순전히 우연일 수도 있지만 MAC 주소를 얻는 프로세스 속도를 높입니다.
MAC 주소와 XXX1을 "소유"하면 모든 것이 실제로 잘 작동합니다! 가상 머신에서 인터넷에 액세스할 수 있으며 YYYn 주소를 사용하여 인터넷에서 가상 머신에 액세스할 수 있습니다. 하지만 항상 작동하는 것은 아닙니다. 때로는 YYY1의 MAC 주소를 다시 "잊어" 액세스할 수 없게 되는 경우도 있습니다.
실제로 ARP 목록에 YYY1이 나열되어 있다는 사실에 놀랐습니다. 이는 동일한 서브넷에 있는 장치에만 적용되는 줄 알았습니다. 내 목표는 호스트를 게이트웨이 주소(YYY1)로 사용하고 호스트가 XXX0/24에서 모든 통신을 수행하도록 하여 문제를 피하도록 하는 것입니다.
내 구성이 합리적입니까?
이 구성을 사용하는 사람이 또 있나요?
이상한 "건망증"의 원인은 무엇일까요?
고쳐 쓰다:
VM이 호스트의 IP 주소 대신 데이터 센터 게이트웨이의 MAC 주소를 게이트웨이(YYY1)로 직접 사용하도록 시도했지만 문제가 지속됩니다.
$ arp -an
? (X.X.X.1) at <incomplete> on eth0
? (Y.Y.Y.1) at c8:60:00:5e:bd:e0 [ether] PERM on eth0
raw@test-server:~$ sudo arp -s Y.Y.Y.1 cc:e1:7f:07:e0:af
raw@test-server:~$ arp -an
? (X.X.X.1) at <incomplete> on eth0
? (Y.Y.Y.1) at cc:e1:7f:07:e0:af [ether] PERM on eth0
raw@test-server:~$ ping -c 4 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
From Y.Y.Y.3 icmp_seq=1 Destination Host Unreachable
From Y.Y.Y.3 icmp_seq=2 Destination Host Unreachable
From Y.Y.Y.3 icmp_seq=3 Destination Host Unreachable
From Y.Y.Y.3 icmp_seq=4 Destination Host Unreachable
--- 8.8.8.8 ping statistics ---
4 packets transmitted, 0 received, +4 errors, 100% packet loss, time 3001ms
pipe 3
ARP 항목이 있는 경우에만 제대로 작동합니다 SIOCSARP: Network is unreachable
.
$ arp -an
? (X.X.X.1) at cc:e1:7f:07:e0:af [ether] on eth0
? (Y.Y.Y.1) at cc:e1:7f:07:e0:af [ether] PERM on eth0
raw@test-server:~$ ping -c 4 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=54 time=5.92 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=54 time=6.13 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=54 time=6.13 ms
64 bytes from 8.8.8.8: icmp_seq=4 ttl=54 time=6.13 ms
--- 8.8.8.8 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3008ms
rtt min/avg/max/mdev = 5.929/6.083/6.138/0.118 ms
몇 분 후에 다시 사라졌습니다.
$ arp -an
? (X.X.X.1) at <incomplete> on eth0
? (Y.Y.Y.1) at cc:e1:7f:07:e0:af [ether] PERM on eth0
답변1
arp
데이터 센터 운영자는 라우팅 작동 방식을 잘 이해하지 못하는 것 같으므로(이 작업을 수행하려면 서브넷 내부에 게이트웨이가 필요함) 게이트웨이의 MAC 주소와 IP 주소가 포함된 정적 더미 항목을 추가해야 합니다.예서브넷 내에서(사용 중이 아닙니다!)
사용되지 않은 YYY0/28 주소 중 하나를 사용하고 그것이 게이트웨이인 것처럼 가장합니다(어쩌면 그럴 수도 있습니다).~해야 한다어쨌든 YYY1). 해당 IP 주소를 라우팅 테이블의 게이트웨이로 사용하십시오. 이제 가상 머신이 arp 요청(하드웨어 주소는 이미 ARP 테이블에 있음)을 방해하지 않도록 arp
해당 주소로 정적 항목을 할당하고 이를 게이트웨이로 보냅니다.arp -s Y.Y.Y.x c8:60:00:5e:bd:e0
설명하다:
일반적으로 시스템이 해당 서브넷의 다른 호스트에 연결하려고 하면 시스템은 ARP를 사용하여 요청된 IP 주소가 있는 MAC 주소를 찾습니다. 그런 다음 호스트는 ARP 요청에 응답합니다. 그렇지 않으면 "호스트에 연결할 수 없음" 오류가 발생합니다.
이제 어떤 이유로 인해 서브넷에 없는 호스트(게이트웨이 라우터)가 생겼습니다. 라우터를 통해 IP 패킷을 서브넷 외부의 대상으로 전송하기만 하면 스푸핑된 IP 주소를 사용할 수 있고 스푸핑된 IP 주소를 사용하는 라우터에 대한 고정 ARP 테이블 항목을 생성할 수 있습니다. 이제 이 라우터로 이동(또는 통과)해야 하는 모든 트래픽은 시스템이 ARP 브로드캐스트를 통해 해당 MAC 주소를 검색할 필요 없이 올바른 MAC 주소로 전송됩니다.
이 방법으로 프린터 게이트웨이 상자를 성공적으로 구성했습니다. MAC 주소와 사용 가능한 로컬 IP 주소를 정적 ARP 항목으로 입력한 다음 해당 주소에 텔넷으로 연결하여 올바르게 구성했습니다.