Назад | Перейти на главную страницу

Входящий трафик не работает через публичный IP-адрес сервера

У меня есть два сервера в частной сети в нашем VPC, оба имеют общедоступные IP-адреса и частную (10.0.0.0/24) подсеть.

  1. Сервер 1 настроен как NAT (ubuntu 18.04)
  2. Сервер 1 имеет только следующую конфигурацию и ничего больше, т.е. sysctl -w net.ipv4.ip_forward=1 && iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
  3. Сервер 2 - это простой сервер, который должен использовать сервер NAT (Сервер 1) для исходящего трафика.
  4. Оба сервера используют ens10 интерфейс для частных сетей и eth0для публичного IP

Я включил следующие сетевые конфигурации и маршрут на Server 2 для маршрутизации исходящего трафика через Server 1

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
  address x.x.x.x #public-ip
  netmask 32

#Private network interface
auto ens10
iface ens10 inet dhcp
   post-up ip route add default via 10.0.0.1

Исходящий трафик работает должным образом, так как я могу без проблем выйти в Интернет и вижу IP-адрес NAT вместо общедоступного IP-адреса Сервера 2.

Но когда я пытаюсь подключиться к серверу 2, используя его общедоступный IP-адрес, то есть для SSH или для доступа к другим портам, он не отвечает. Хотя я могу добраться до Сервера 2 только через локальную сеть.

Кроме того, как только я удалю маршрут post-up IP route add default via 10.0.0.1 Я могу дотянуться до Server 2 через его общедоступный IP-адрес, но также и все исходящие маршруты трафика на основной интерфейс, чего я не хочу.

Похоже, что когда пакеты попадают в eth0 на Сервере 2, они маршрутизируются на шлюз Ens10 10.0.0.1, и, возможно, именно поэтому я не могу ответить, если у меня есть маршрут, о котором я упоминал выше.

Пожалуйста, укажите мне правильное направление, я как бы застрял на этом этапе.

Заранее спасибо.

Вам нужно «разбить туннель»:

Добавьте следующие правила в eth0 конфигурация интерфейса

auto eth0
iface eth0 inet static
  address x.x.x.x
  netmask 32
  post-up ip rule add iif lo from x.x.x.x table 123
  post-up ip route add y.y.y.y dev eth0 table 123
  post-up ip route add default via y.y.y.y table 123

(y.y.y.y - адрес шлюза)

С указанным выше правилом и таблицей маршрутов (ответ) трафик исходит от самого хоста с публичным адресом, поскольку исходный адрес будет выходить через eth0.

Примечание. После добавления конфигураций вам может потребоваться перезапустить весь сервер, поскольку простой перезапуск сетевых служб может привести к сбою.

Хорошо, я отвечаю себе. Сервер openvpn подталкивает шлюз перенаправления. Я добавил «route-nopull» в параметры клиента, чтобы ограничить трафик с помощью таблицы VPN. Пояснения здесь: Игнорирование шлюза редиректа