OpenStack 인스턴스가 OpenStack 인스턴스는 아니지만 동일한 LAN에 있는 다른 Linux 시스템으로 경로를 전달하도록 만드는 방법은 무엇입니까?
PC_A has 192.168.1.133/27.
PC_B has 192.168.1.140/27.
PC_A has 10.26.14.16/25 route.
PC_B has no 10.26.14.16/25 route.
PC_A를 통해 PC_B에 도달하고 싶습니다 10.26.14.16/25
.
참고: PC_B는 OpenStack 인스턴스입니다. 개인 IP는 192.168.118.10/27이고 공용 IP는 192.168.1.140/27입니다.
FW----------PC_A--------------PC_B
[192.168.1.133/27] [192.168.1.140/27] Public IP of B
[192.168.118.10/27] Private IP of B
PC_A에는 경로가 있습니다 10.26.14.16/25
. PC_B에는 경로가 없습니다 10.26.14.16/25
. PC_A를 통해 PC_B에 도달하고 싶습니다 10.26.14.16/25
.
답변1
PC_B가 192.168.1.* 네트워크에 직접 액세스할 수 없는 경우 누락된 경로를 PC_B가 아닌 OpenStack 네트워크 설정에 추가해야 합니다.
답변2
쉬워 보이지만 그렇지 않습니다. 나를 믿어!
서버 측 구성 [PC_A]
[PC_A ~]# nano /etc/sysctl.conf
net.ipv4.ip_forward = 1
[PC_A ~]# iptables -t nat -A POSTROUTING ! -d 192.168.1.127/27 -o ens160 -j MASQUERADE
클라이언트 구성 [PC_B]
PC_B는 OpenStack의 인스턴스입니다. 개인 IP는 이고 192.168.118.10/27
, 공용 IP는 입니다 192.168.1.140/27
.
질문:
[PC_B ~]$ sudo route add default gw 192.168.1.133 eth0
SIOCADDRT: Network is unreachable
[PC_B ~]$ route
default host-192-168-10 0.0.0.0 UG 0 0 0 eth0
192.168.118.0 0.0.0.0 255.255.255.240 U 0 0 0 eth0
왜 SIOCADDRT: Network is unreachable
? 앞서 말씀드린 대로 PC_B의 공인 IP는 192.168.1.140/27
[OpenStack 인스턴스]이고, 사설 IP는 입니다 192.168.118.10/27
.