1

Извините за то, что задали действительно общий вопрос, я больше разработчик, чем сетевой эксперт, поэтому, пожалуйста, потерпите меня ... :-(

Моя проблема заключается в следующем: у меня есть
- сервер A , обслуживающий наши REST API.
- сервер B , на котором размещается VPN-соединение ipsec strongswan с подсетью C , к которому нам необходим безопасный доступ для оперативных данных с сервера A и который мы не контролируем.
Я хочу, чтобы трафик в и из подсети C на сервере A был перенаправлен через сервер 'B'.

Как вы думаете, такая задача выполнима?
Должен ли я добавить маршрут в таблицу маршрутизации или работать с правилами пересылки брандмауэра, чтобы начать с?

Мои первые попытки были:

на сервере А:
# ip route add C_SUBNET_IP via B_SERVER_PUBLIC_IP dev eth0

который мне наплевал : RTNETLINK answers: Network is unreachable

затем с помощью брандмауэра:

# echo 1 > /proc/sys/net/ipv4/ip_forward
# iptables -t nat -A POSTROUTING -j MASQUERADE
# iptables -t nat -A PREROUTING -s C_SUBNET_IP -p udp -j DNAT --to-destination B_SERVER_PUBLIC_IP

который не позволил мне добраться до любой подсети C ip:

# ping C_SUBNET_IP
PING C_SUBNET_IP (C_SUBNET_IP) 56(84) bytes of data.
...
^C
10 packets transmitted, 0 received, 100% packet loss, time 9056ms

1 ответ1

1

Как правило, вы не можете установить шлюз на маршруте, который не находится в вашей подсети. Вы можете решить свою проблему на сервере A следующим приемом.

Сначала установите маршрут для желаемого шлюза:

ip route add B_SERVER_PUBLIC_IP dev eth0

Затем установите свой маршрут:

ip route add C_SUBNET_IP via B_SERVER_PUBLIC_IP

Теперь это будет работать! Это объясняется в посте ниже, в том числе о том, как сделать его постоянным в Ubuntu:

https://www.adminsehow.com/2011/09/gateway-on-a-different-subnet-on-linux/

Теперь, когда вы достигли своего сервера B, вам нужно будет выполнить некоторые действия по пересылке ...

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .