Как заставить экземпляр OpenStack перенаправлять маршрут на другую машину Linux, которая не является экземпляром OpenStack, но находится в той же локальной сети?
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.
Я хочу, чтобы ПК_Б соединялся 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_B достигал 10.26.14.16/25
через PC_A.
решение1
Если у PC_B нет прямого доступа к сети 192.168.1.*, то отсутствующий маршрут необходимо добавить в сетевые настройки OpenStack, а не в PC_B как таковой.
решение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
? Как я уже упоминал, публичный IP-адрес PC_B — 192.168.1.140/27
[OpenStack Instance], а его частный IP-адрес — 192.168.118.10/27
.