#!/bin/bash # 各種変数の設定 IPTABLES=/usr/local/sbin/iptables MODPROBE=/sbin/modprobe LOCAL_NET='192.168.129.201/24' LOCAL_NET2='192.168.130.201/24' CLIENT_A='192.168.129.1' #LOCAL_NET='10.1.0.1/8' #CLIENT_A='10.1.0.2' start() { # よく分からない $MODPROBE iptable_nat echo 1 > /proc/sys/net/ipv4/ip_forward $MODPROBE ip_conntrack_ftp $MODPROBE ip_nat_ftp $MODPROBE ipt_MASQUERADE $MODPROBE iptable_filter # 基本ポリシーの設定 $IPTABLES -P INPUT ACCEPT $IPTABLES -P OUTPUT ACCEPT $IPTABLES -P FORWARD ACCEPT ############################### フィルタの定義 ################################ #フィルタ作成 $IPTABLES -N ppp-in # 外側からsshで入りたい場合は下の行のコメントを外す #$IPTABLES -A ppp-in -p tcp --dport ssh -j ACCEPT # ルータ上で動いてるhttpサーバを外側に向けて公開したい場合は # 下の行のコメントを外す #$IPTABLES -A ppp-in -p tcp --dport 80 -j ACCEPT # ポートフォワード(NAT)の設定例 # # CLIENT_Aで立ち上がってるウェブサーバを外に公開する場合 #$IPTABLES -A ppp-in -p tcp --dport 80 -j ACCEPT #$IPTABLES -t nat -A PREROUTING -p tcp -i ppp0 --dport 80 -j DNAT \ # --to-destination $CLIENT_A # # CLIENT_AでAoE等のDirectPlayを用いたゲームをする場合 #$IPTABLES -A ppp-in -p tcp --dport 2300:2400 -j ACCEPT #$IPTABLES -A ppp-in -p udp --dport 2300:2400 -j ACCEPT #$IPTABLES -t nat -A PREROUTING -p tcp -i ppp0 --dport 2300:2400 -j DNAT \ # --to-destination $CLIENT_A #$IPTABLES -t nat -A PREROUTING -p udp -i ppp0 --dport 2300:2400 -j DNAT \ # --to-destination $CLIENT_A #$IPTABLES -A ppp-in -p tcp --dport 47624 -j ACCEPT #$IPTABLES -A ppp-in -p udp --dport 47624 -j ACCEPT #$IPTABLES -t nat -A PREROUTING -p tcp -i ppp0 --dport 47624 -j DNAT \ # --to-destination $CLIENT_A #$IPTABLES -t nat -A PREROUTING -p udp -i ppp0 --dport 47624 -j DNAT \ # --to-destination $CLIENT_A # 確立してるセッションのパケットと、その関連パケットは通す $IPTABLES -A ppp-in -m state --state ESTABLISHED,RELATED -j ACCEPT \ --modprobe=$MODPROBE # その他のパケットは叩き落す $IPTABLES -A ppp-in -j DROP ############################################################################## #!/bin/bash # 各種変数の設定 IPTABLES=/usr/local/sbin/iptables MODPROBE=/sbin/modprobe LOCAL_NET='192.168.129.201/24' LOCAL_NET2='192.168.130.201/24' CLIENT_A='192.168.129.1' #LOCAL_NET='10.1.0.1/8' #CLIENT_A='10.1.0.2' start() { # よく分からない $MODPROBE iptable_nat echo 1 > /proc/sys/net/ipv4/ip_forward $MODPROBE ip_conntrack_ftp $MODPROBE ip_nat_ftp $MODPROBE ipt_MASQUERADE $MODPROBE iptable_filter # 基本ポリシーの設定 $IPTABLES -P INPUT ACCEPT $IPTABLES -P OUTPUT ACCEPT $IPTABLES -P FORWARD ACCEPT ############################### フィルタの定義 ################################ #フィルタ作成 $IPTABLES -N ppp-in # 外側からsshで入りたい場合は下の行のコメントを外す #$IPTABLES -A ppp-in -p tcp --dport ssh -j ACCEPT # ルータ上で動いてるhttpサーバを外側に向けて公開したい場合は # 下の行のコメントを外す #$IPTABLES -A ppp-in -p tcp --dport 80 -j ACCEPT # ポートフォワード(NAT)の設定例 # # CLIENT_Aで立ち上がってるウェブサーバを外に公開する場合 #$IPTABLES -A ppp-in -p tcp --dport 80 -j ACCEPT #$IPTABLES -t nat -A PREROUTING -p tcp -i ppp0 --dport 80 -j DNAT \ # --to-destination $CLIENT_A # # CLIENT_AでAoE等のDirectPlayを用いたゲームをする場合 #$IPTABLES -A ppp-in -p tcp --dport 2300:2400 -j ACCEPT #$IPTABLES -A ppp-in -p udp --dport 2300:2400 -j ACCEPT #$IPTABLES -t nat -A PREROUTING -p tcp -i ppp0 --dport 2300:2400 -j DNAT \ # --to-destination $CLIENT_A #$IPTABLES -t nat -A PREROUTING -p udp -i ppp0 --dport 2300:2400 -j DNAT \ # --to-destination $CLIENT_A #$IPTABLES -A ppp-in -p tcp --dport 47624 -j ACCEPT #$IPTABLES -A ppp-in -p udp --dport 47624 -j ACCEPT #$IPTABLES -t nat -A PREROUTING -p tcp -i ppp0 --dport 47624 -j DNAT \ # --to-destination $CLIENT_A #$IPTABLES -t nat -A PREROUTING -p udp -i ppp0 --dport 47624 -j DNAT \ # --to-destination $CLIENT_A # 確立してるセッションのパケットと、その関連パケットは通す $IPTABLES -A ppp-in -m state --state ESTABLISHED,RELATED -j ACCEPT \ --modprobe=$MODPROBE # その他のパケットは叩き落す $IPTABLES -A ppp-in -j DROP ############################################################################## # ローカル側からデフォルトフリーの設定 $IPTABLES -A INPUT -s $LOCAL_NET -j ACCEPT $IPTABLES -A INPUT -s $LOCAL_NET2 -j ACCEPT $IPTABLES -A FORWARD -s $LOCAL_NET -j ACCEPT $IPTABLES -A FORWARD -s $LOCAL_NET2 -j ACCEPT # IPマスカレーディング $IPTABLES -t nat -A POSTROUTING -s $LOCAL_NET -d ! $LOCAL_NET -j MASQUERADE $IPTABLES -t nat -A POSTROUTING -s $LOCAL_NET2 -d ! $LOCAL_NET2 -j MASQUERADE # 作成したフィルタを当てる $IPTABLES -A INPUT -i ppp0 -j ppp-in $IPTABLES -A FORWARD -i ppp0 -j ppp-in $IPTABLES -L } stop() { echo 0 > /proc/sys/net/ipv4/ip_forward # フィルタの初期化 $IPTABLES -t filter -F FORWARD $IPTABLES -t nat -F POSTROUTING $IPTABLES -t nat -F PREROUTING $IPTABLES -F INPUT $IPTABLES -F FORWARD $IPTABLES -F OUTPUT # ユーザー定義フィルタの初期化と削除 $IPTABLES -F ppp-in $IPTABLES -X ppp-in } case "$1" in on|start) stop start ;; off|stop) stop ;; reset|restart) stop start ;; *) echo $"Usage: $0 {start|stop|restart}" exit 1 esac exit 0