Ryuji MATSUMOTO <matum...@pluto.ai.kyutech.ac.jp> wrote in <20170307.182632.2029998101879781962.matum...@pluto.ai.kyutech.ac.jp>:
ma> > 12340 allow tcp from LOCAL-IP to 192.0.2.1 dst-port 993 ma> > 12341 allow tcp from LOCAL-IP to 192.0.2.2 dst-port 993 (snip) ma> while(1) ma> { ma> sleep(1時間ぐらい); ma> ma> dig +short imap.example.com > ip-list.txt ma> ma> if(ip-list.txtの中身が変動した) ma> { ma> ipfwルール番号 12340-12341を削除する. ma> ipfwルール番号 12340-12341の所に新しいルールを追加する. ma> } ma> } ma> ma> こういう事をやってくれるツールがどこかにありそうな気がするのですが. 12340 allow tcp from LOCAL-IP to table(1) dst-port 993 というようなルールを定義して、添付のようなスクリプトを cron でまわすのはいかがでしょうか。 -- Hiroki
#!/bin/sh TARGET=${1:-imap.example.com} TBLNUM=1 fifo1="/tmp/ipfwtbl_dns1.$$" fifo2="/tmp/ipfwtbl_dns2.$$" rm -f $fifo1 $fifo2 mkfifo -m 0600 $fifo1 $fifo2 || exit 1 host -t A $TARGET | while read d d TYPE IPADDR; do case $TYPE in address) echo $IPADDR HOST ;; esac done | sort > $fifo1 & ipfw table $TBLNUM list | while read IPADDR d; do case $IPADDR in -*) ;; */32) echo ${IPADDR%/32} IPFW ;; esac done | sort > $fifo2 & join -v 1 -v 2 $fifo1 $fifo2 | while read IPADDR MODE; do case $MODE in HOST) # found in DNS but not found in IPFW table ipfw table $TBLNUM add $IPADDR/32 ;; IPFW) # found in IPFW table but not found in DNS ipfw table $TBLNUM delete $IPADDR/32 ;; esac done rm -f $fifo1 $fifo2
pgpvA4whcl_m_.pgp
Description: PGP signature