[root@localhost iptables]# cat jump-goto.sh
#!/bin/bash
# Flush all chains in filter table
iptables -F
# Delete all user-defined chains in the filter table
iptables -X
# Create a user-defined chain UD_A, UD_B and UD_C
iptables -N UD_A
iptables -N UD_B
iptables -N UD_C
# INPUT
iptables -A INPUT -p icmp -s 192.168.121.1 --icmp-type echo-request -j LOG --log-prefix "INPUT-1:"
iptables -A INPUT -p icmp -s 192.168.121.1 --icmp-type echo-request -j UD_A
iptables -A INPUT -p icmp -s 192.168.121.1 --icmp-type echo-request -j LOG --log-prefix "INPUT-2:"
iptables -A INPUT -p icmp --icmp-type echo-request -j DROP
iptables -A INPUT -p icmp --icmp-type echo-request -j LOG --log-prefix "INPUT-3:"
# UD_A
iptables -A UD_A -p icmp -s 192.168.121.1 --icmp-type echo-request -j LOG --log-prefix "UD_A-1:"
iptables -A UD_A -p icmp -s 192.168.121.1 --icmp-type echo-request -g UD_B
iptables -A UD_A -p icmp -s 192.168.121.1 --icmp-type echo-request -j LOG --log-prefix "UD_A-2:"
# UD_B
iptables -A UD_B -p icmp -s 192.168.121.1 --icmp-type echo-request -j LOG --log-prefix "UD_B-1:"
iptables -A UD_B -p icmp -s 192.168.121.1 --icmp-type echo-request -j UD_C
iptables -A UD_B -p icmp -s 192.168.121.1 --icmp-type echo-request -j LOG --log-prefix "UD_B-2:"
iptables -A UD_B -p icmp -s 192.168.121.1 --icmp-type echo-request -j RETURN
iptables -A UD_B -p icmp -s 192.168.121.1 --icmp-type echo-request -j LOG --log-prefix "UD_B-3:"
# UD_C
iptables -A UD_C -p icmp -s 192.168.121.1 --icmp-type echo-request -j LOG --log-prefix "UD_C-1:"
iptables -A UD_C -p icmp -s 192.168.121.1 --icmp-type echo-request -j RETURN
iptables -A UD_C -p icmp -s 192.168.121.1 --icmp-type echo-request -j LOG --log-prefix "UD_C-2:"
iptables -A UD_C -p icmp -s 192.168.121.1 --icmp-type echo-request -j ACCEPT
iptables -A UD_C -p icmp -s 192.168.121.1 --icmp-type echo-request -j LOG --log-prefix "UD_C-3:"
iptables -A UD_C -p icmp -s 192.168.121.1 --icmp-type echo-request -j DROP
[root@localhost iptables]#
[root@localhost iptables]# ./jump-goto.sh
[root@localhost iptables]#