Я не дуже знайомий з iptables та всіма нюансами різних правил. Я зараз в процесі навчання, але мені потрібно це прискорити, тому я тут прошу.
Я запускаю контейнер WebLogic всередині Docker на екземплярі AWS EC2. Контейнер працює з використанням docker run -d -p 8002:8002 weblogic
. Я не будував зображення, тому є деякі речі, які повинні залишитися. Мені потрібен сервер WebLogic, щоб він був доступним зовні з порту 443 через мережеві обмеження, навіть якщо він побудований для доступу через порт 8002.
Я спробував різні правила iptables, але жодне з них не успішно пересилає. Контейнер все ще доступний на 8002 навіть при наявності правил пересилання 8002 -> 443.
Запуск RHEL 7.3
і Dockerfile побудований для iptables, а не firewalld. Деякі з цих речей я не контролюю, тому мені доводиться працювати з тим, що маю.
Одна з команд iptables, яку я спробував:
iptables -t nat -A OUTPUT -p tcp --dport 8002 -j DNAT --to-destination 127.0.0.1:443
Примітка: я знаю бігати service iptables save
. Я можу перевірити існування правил за допомогою iptables -S
.
EDIT: Ось мої правила iptables на даний момент
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-N DOCKER
-N DOCKER-ISOLATION
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j DOCKER-ISOLATION
-A FORWARD -o docker0 -j DOCKER
-A FORWARD -o docker0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i docker0 ! -o docker0 -j ACCEPT
-A FORWARD -i docker0 -o docker0 -j ACCEPT
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -i eth0 -p tcp -m tcp --dport 443 -j ACCEPT
-A DOCKER -d 172.17.0.2/32 ! -i docker0 -o docker0 -p tcp -m tcp --dport 8002 -j ACCEPT
-A DOCKER-ISOLATION -j RETURN