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

ping-сервер в пространстве имен с удаленного компьютера

Если я запустил веб-сервер в пространстве имен по умолчанию SERVER машина я могу curl это из REMOTE машина делает это:

curl http://SERVER:80/

Теперь я помещаю веб-сервер в пространство имен nested с предоставлением veth всматривался в nested's сетевой интерфейс:

sudo ip link add veth type veth peer name vpeer
sudo ip link set vpeer netns nested
sudo ip addr add 192.168.3.77/24 dev veth
sudo ip link set veth up
sudo ip netns exec nested ip addr add 192.168.3.78/24 dev vpeer
sudo ip netns exec nested ip link set vpeer up
sudo ip netns exec nested ip route add default via 192.168.3.77

поэтому я могу пропинговать его из пространства имен по умолчанию:

curl --interface veth 192.168.3.78:80/

Мой вопрос: как пинговать веб-сервер в nested пространство имен с удаленной машины? Кажется, что curl http://SERVER:80/ становится к lo интерфейс. Могу ли я направить внешние запросы на veth интерфейс или как настроить сопряжение?

  1. Удаленный хост должен иметь маршрут к IP-адресу вложенного пространства имен (192.168.3.78). Настройка маршрутизации зависит от многих факторов.
  2. Переадресация ip должна быть включена в пространстве имен по умолчанию (переменная sysctl net.ipv4.ip_forward должно быть 1).
  3. Брандмауэр должен разрешать пересылку пакетов между veth и интерфейсы LAN. В результате у вас должен быть успешный эхо-запрос между удаленным хостом и вложенным пространством имен.
  4. Если SERVER доменное имя указывает на один из локальных IP-адресов, вы должны использовать DNAT target для перенаправления запроса в пространство имен netsted:
iptables -t nat -I PREROUTING -p tcp --dport 80 --dst <orig-ip> -j DNAT --to 192.168.3.78
iptables -t nat -I OUTPUT -p tcp --dport 80 --dst <orig-ip> -j DNAT --to 192.168.3.78
  1. Используйте tcpdump для устранения проблем.