Я пытаюсь заставить порт работать, чтобы открыть контейнер LXC при использовании ufw
на Ubuntu, но безрезультатно. Я построил следующий рабочий процесс на основе руководств в Интернете ([1] [2] [3]); прежде всего раздел о /etc/ufw/before.rules
Я вижу повторяющиеся повсюду, но ... я не могу заставить это работать на меня.
Если кто-то последует этому руководству и добьется успеха ... дайте мне знать (так что я могу сначала поплакать, а затем отступить и написать свой собственный инструмент брандмауэра)
Тестовая среда
Установка LXC на host1 - я делаю это с простым LXC, еще не представляя настройки LXD
sudo lxc-create -n web -t download -- -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
Предположим теперь, что
enp0s8
и10.0.3.101
10.0.2.6
sudo iptables -L -t nat
что маскарад уже был настроен установкой LXCВы можете сделать снимок этого базового состояния.
На данный момент два маршрута: A-маршрут с простыми iptables и B-маршрут, проблемный, с ufw.
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. Успех!/etc/default/ufw
MANAGE_BUILTINS=yes
DEFAULT_FORWARD_POLICY="ACCEPT"
/etc/ufw/sysctl.conf
net/ipv4/ip_forward=1
/etc/ufw/before.rules
*filter
линияufw allow 8080
ufw enable
nc -l 8080
на host1 и попробуйте снова подключиться с host2, я получаю дамп HTTP-заголовка, указывающий на то, что переадресация портов не происходит. ПОТЕРПЕТЬ ПОРАЖЕНИЕ!Я прошел свои шаги примерно 5 раз со свежими виртуальными машинами, каплями digitalOcean и экземплярами AWS EC2 - не повезло, всегда одно и то же.
Кто-нибудь может указать, что я делаю не так ...?
[4] Nat строки:
*nat
:PREROUTING ACCEPT [0:0]
-A PREROUTING -i enp0s8 -p tcp --dport 8080 -j DNAT --to 10.0.3.101:80
COMMIT
# comments etc and the rest of the file, like,
*filter
...
Оказывается, есть еще несколько шагов настройки, которые необходимы, чтобы разрешить поток общего трафика:
На вершине /etc/ufw/before.rules
, перед *filter
раздел
*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
Это было сделано для моей тестовой среды, как указано в описании проблемы.