Невозможно перенаправить порт с помощью UFW в Ubuntu

Я пытаюсь настроить порт для работы с контейнером LXC при использовании ufw в Ubuntu, но безрезультатно. Я построил следующий рабочий процесс на основе руководств в Интернете ([1] [2] [3]); в первую очередь раздел о /etc/ufw/before.rules Я вижу повторяющиеся повсюду, но .... я не могу заставить его работать для меня.

Если кто-нибудь последует этому руководству и найдет успех .... дай мне знать (так что я могу сначала поплакать,

  • Установите сервер Ubuntu 16.04 - просто выполните установку по умолчанию
  • Второй экземпляр виртуальной машины «host2» в той же сети NAT
  • Установка LXC на host1 - я делаю это с помощью простого LXC, пока не представляю настройки LXD

    • sudo lxc-create -n web -t скачать - -d centos -r 7 -a amd64
    • sudo lxc-start -n web
    • sudo lxc-attach -n web
      • yum install httpd; yum enable httpd; yum start httpd
      • exit
  • Теперь мы предполагаем, что

    • Сетевой интерфейс NAT на хосте 1 - enp0s8 , а
    • IP-адрес контейнера на хосте 1 - 10.0.3.101
    • IP enp0s8 хоста 1 - 10.0.2.6
    • . Посмотрите, что с sudo iptables -L -t nat маскарадинг уже был настроен установкой LXC

    . Вы можете сделать снимок этого базовое состояние.

    На данный момент два маршрута:

    • sudo iptables -t nat -A PREROUTING -i enp0s8 -p tcp --dport 8080 -j DNAT --to "10.0.3.101:80"
    • На втором хосте я могу wget http: / /10.0.2.6:8080 , и это дает мне стандартную целевую страницу CentOS. Успех!

    Проблема

    1. B - это можно сделать после перезагрузки host1 или, если вы сделали снимок ранее, просто вернуться. В любом случае он ведет себя одинаково
      • Изменить / etc / default / ufw
        • установить MANAGE_BUILTINS = yes
        • установить DEFAULT_FORWARD_POLICY = "ACCEPT"
      • Изменить /etc/ufw/sysctl.conf
        • раскомментировать net / ipv4 / ip_forward = 1
      • Edit /etc/ufw/before.rules
        • Вставить строки nat (см. Ниже [4]) под ведущими комментариями, но выше * фильтр строка
        • Регулировка, конечно, для соответствующих конфигураций
      • ufw allow 8080
      • ufw enable
      • В этот момент я не могу связаться с хостом 1 с хоста 2 с wget, firefox и т. д. - соединение не может быть установлено
      • Если я сделаю nc -l 8080 на хосте 1 и попытаюсь снова подключиться с хоста 2, я получу дамп HTTP-заголовка, указывающий, что переадресация портов не происходит . FAIL!

    Я ' : PREROUTING ACCEPT [0: 0] -A PREROUTING -i enp0s8 -p tcp --dport 8080 -j DNAT --to 10.0.3.101:80 COMMIT # комментарии и т. д. и остальная часть файла, например, *фильтр ...

    4
    задан 13 April 2017 в 15:22
    1 ответ

    Оказывается, есть еще несколько шагов настройки, которые необходимы, чтобы разрешить поток общего трафика:

    Вверху /etc/ufw/before.rules , перед * фильтр раздел

    *nat
    :PREROUTING ACCEPT [0:0]
    -A PREROUTING -i enp0s8 -p tcp --dport 8080 -j DNAT --to 10.0.3.101:80
    COMMIT
    

    И ближе к низу, перед последний COMMIT :

    -A FORWARD -o lxcbr0 -j ACCEPT
    -A FORWARD -i lxcbr0 -j ACCEPT
    
    -A INPUT -p udp --dport 53 -i enp0s8 -m state --state NEW -j ACCEPT
    -A INPUT -p tcp --dport 53 -i enp0s8 -m state --state NEW -j ACCEPT
    -A INPUT -p udp --dport 67 -i enp0s8 -m state --state NEW -j ACCEPT
    -A INPUT -p tcp --dport 67 -i enp0s8 -m state --state NEW -j ACCEPT
    

    Вверху / etc / ufw / after.rules , перед разделом фильтра:

    *nat
    :POSTROUTING ACCEPT [0:0]
    -A POSTROUTING -s 10.0.3.0/24 ! -d 10.0.3.0/24 -j MASQUERADE
    COMMIT
    

    Это было сделано для моей тестовой среды, как указано в описании проблемы.

    2
    ответ дан 3 December 2019 в 03:54

    Теги

    Похожие вопросы