На автономном сервере у меня есть docker контейнер с jenkins. Я хочу написать сборник пьес, который позволит мне (некоторые publi c ip, скажем, 107.33.11.111) подключаться через 22 и 8080 к серверу jenkins на моем автономном сервере, но больше никому. Publi c traffi c выходит на eth0 на моем автономном сервере. Я использую это руководство , чтобы попытаться сделать это.
Вот пример того, как я запускаю jenkins:
# privileged is needed to allow browser based testing via chrome
- name: Run jenkins container
command: docker run --privileged -d -p 8080:8080 -p 50000:50000 -v jenkins_home:/var/jenkins_home jenkins/jenkins:lts-jdk11
Затем я устанавливаю это правило брандмауэра:
- name: Firewall rule - allow port 22/SSH traffic only for me
iptables:
chain: INPUT
in_interface: eth0
destination_port: 22
jump: ACCEPT
protocol: tcp
source: 107.33.11.111
- name: Firewall rule - allow port 8080 traffic only for me
iptables:
chain: INPUT
in_interface: eth0
destination_port: 8080
jump: ACCEPT
protocol: tcp
source: 107.33.11.111
- name: Firewall rule - drop any traffic without rule
iptables:
chain: INPUT
jump: DROP
in_interface: eth0
Когда я запускаю вышеприведенную пьесу и запускаю iptables -L
, мой вывод обрезается до:
Chain INPUT (policy ACCEPT)
target prot opt source destination
Когда я удаляю последнее правило, чтобы отбросить все траффи c Я могу наблюдать весь вывод, а в таблицах ip показан мой ip, разрешенный для портов 22 и 8080. Однако все остальные трафики c, поступающие на eth0, также могут достигать этих портов.
Что мне нужно сделать, чтобы разрешить 22 и 8080 только для определенного c publi c адреса в моей ansible playbook?