Ansible | iptables モジュールでポートフォワードを設定する

Ansible の IPtables モジュールを使用してポートフォワードの設定をしてみた。

仕様

設定対象のサーバーの TCP/80 番ポートへのアクセスを TCP/8080 番ポートにポートフォワードする。

設定

playbook.yml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
- hosts: proxyservers
become: true
tasks:
- apt:
name: iptables
- name: Forward port 80 to 8080
iptables:
table: nat
chain: PREROUTING
in_interface: eth0
protocol: tcp
match: tcp
destination_port: "80"
jump: REDIRECT
to_ports: "8080"
comment: Redirect web traffic to port 8080
become: yes

実行

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# ansible-playbook -i hosts  playnook.yml -k -K
SSH password:
BECOME password[defaults to SSH password]:

PLAY [proxyservers] *************************************************************************************************

TASK [Gathering Facts] **********************************************************************************************
ok: [192.168.0.80]

TASK [apt] **********************************************************************************************************
changed: [192.168.0.80]

TASK [Forward port 80 to 8080] **************************************************************************************
changed: [192.168.0.80]

PLAY RECAP **********************************************************************************************************
192.168.0.80 : ok=3 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0

確認

1
2
3
4
5
# iptables -L -t nat
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
REDIRECT tcp -- anywhere anywhere tcp dpt:80 /* Redirect web traffic to port 8080 */ redir ports 8080
...