# 続き。 DHCP_DAEMON=y DHCP_RANGE_START=192.168.0.200 DHCP_RANGE_END=192.168.0.254 # 他のクライアントが DHCP を使いたいなら、 # floppyfw を DHCP サーバにすることが出来る。 # DHCP を使わない場合は DHCP_DAEMON=n DNSMASQ=y # DNS Masquerade を使うかどうか。 # 複数のマシンをつなげるルータの場合 on にしとけ。 # ていうか、一般的に on にしとけ # DNSMASQ=y の侭な。 # あと、DNS Masquerade について ググッとけ # 中略 # USE_SYSLOG=n # syslog 使ったり、他のマシンにとばす場合は on # USE_SYSLOG=y にする。 # This SYSLOG does not use syslogd.conf so we have to set things here. # Flags: # Log to /dev/tty3 instead of /var/log/messages which aren't exactly a # good idea on a ramdisk. # -O /dev/tty3 # Log to network. host:port # -R 10.42.42.42:514 # Log to both network and file: # -L # --MARK-- 0 is no mark. # -m 0 SYSLOG_FLAGS="-m 360 -O ${DEBUG_LOG}" # syslog (log) を他のマシンにとばす場合は # 上記の # -R 10.42.42.42:514 を # -R 192.168.0.2:514 とかにしたら送れるはず。 # 192.168.0.2 のマシンの中の設定を、飛んできたログを受け取る設定にする必要もある。
# 続き # ここから本格的な iptables のルール iptables -F # 一度全部消してから、その後で設定しますよー。というおまじない # iptables -t nat -F # iptables -t mangle -F # or: for i in `cat /proc/net/ip_tables_names`; do iptables -F -t $i ; done iptables -X iptables -Z # zero all counters # 送受信とかした数値をゼロにクリアしますよーという設定。 # 基本的には全接続だめですよーという設定 # 接続可能なパケットだけ自分で決めますよー。という設定 iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP iptables -t nat -A POSTROUTING -o ${OUTSIDE_DEVICE} -j MASQUERADE # LAN から eth0(ppp0) から出ていく接続は全部オッケーですよーという設定 # -t nat と -j MASQUERADE が重要。 # 続く
16 :
# 続き # # これ以下は静的 NAT の設定。 # おいらの floppyfw の eth0(ppp0) unco.dyndns.org に届いた、 # tcp やら udp やら icmp のパケットは、 # このサーバにつなげますよー、という設定。 # これが外部にさらしたいサーバですよーという設定。 # 静的 NAT でググれ # SSH: #iptables -A PREROUTING -t nat -p tcp -d ${OUTSIDE_IP} --dport 22 -j DNAT --to ${SERVER_IP}:22 #iptables -A FORWARD -p tcp -d ${SERVER_IP} --dport 22 -o ${INSIDE_DEVICE} -j ACCEPT # ネット上からの SSH のログインなどを許可しますよーという設定 # 危ないから OFF で # Web: iptables -A PREROUTING -t nat -p tcp -d ${OUTSIDE_IP} --dport 80 -j DNAT --to ${SERVER_IP}:80 iptables -A FORWARD -p tcp -d ${SERVER_IP} --dport 80 -o ${INSIDE_DEVICE} -j ACCEPT # This rule helps the "I can't reach my web server from the inside" problem. iptables -A POSTROUTING -t nat -p tcp -d ${SERVER_IP} --dport 80 -s ${INSIDE_NETWORK}/${INSIDE_NETMASK} -j SNAT --to ${OUTSIDE_IP} # HTTP ね。 # 最後の行のは"たぶん" LAN のクライアントから自分の unco.dyndns.org に接続したいときの設定だと思う。 # FTP: #iptables -A PREROUTING -t nat -p tcp -d ${OUTSIDE_IP} --dport 21 -j DNAT --to ${SERVER_IP}:21 #iptables -A FORWARD -p tcp -d ${SERVER_IP} --dport 21 -o ${INSIDE_DEVICE} -j ACCEPT # これも危ないだろ。 # 家の外から、もしくは他人が接続しないなら off っとけ # SMTP (Internal mail server): iptables -A PREROUTING -t nat -p tcp -d ${OUTSIDE_IP} --dport 25 -j DNAT --to ${SERVER_IP}:25 iptables -A FORWARD -p tcp -d ${SERVER_IP} --dport 25 -o ${INSIDE_DEVICE} -j ACCEPT # This rule helps the "I can't reach my server from the inside" problem. iptables -A POSTROUTING -t nat -p tcp -d ${SERVER_IP} --dport 25 -s ${INSIDE_NETWORK}/${INSIDE_NETMASK} -j SNAT --to ${OUTSIDE_IP} # 家の外から自分のメールサーバを使って誰かにメールを送信する場合。 # POP-3 (Internal pop-3 server): iptables -A PREROUTING -t nat -p tcp -d ${OUTSIDE_IP} -s ${INSIDE_NETWORK}/${INSIDE_NETMASK} --dport 110 -j DNAT --to ${SERVER_IP}:110 iptables -A FORWARD -p tcp -d ${SERVER_IP} --dport 110 -o ${INSIDE_DEVICE} -j ACCEPT # This rule helps the "I can't reach my server from the inside" problem. iptables -A POSTROUTING -t nat -p tcp -d ${SERVER_IP} --dport 110 -s ${INSIDE_NETWORK}/${INSIDE_NETMASK} -j SNAT --to ${OUTSIDE_IP} # これはデフォだと書いてないです。 # floppyfw の海外公式のメーリングリストから拾いました。 # 自分のメール受信サーバを持つ場合に使うかも # no-ip にログインして、そっちの設定もいじる必要あり # 続く
17 :
# 続き # # Keep state. # iptables -A FORWARD -m state --state NEW -i ${INSIDE_DEVICE} -j ACCEPT iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A FORWARD -m state --state NEW,INVALID -i ${OUTSIDE_DEVICE} -j DROP # 外につなげる、Masquerade する FTP 関係。だとおもう。静的 NAT だけじゃなくて。 # あってるならば・・・Keep state ってのは、コネクションにするだけじゃないですよー # ログアウトするまでが接続ですよー。おやつはバナナだけですよー # といったかんじ・・・かもしれない。 # # This is mainly for PPPoE usage but it won't hurt anyway so we'll just # keep it here. # iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu # PPPOE を起動後に手動で接続する場合? # PPP 接続するときに、その接続も DROP したら困るから・・・かな? # # We don't like the NetBIOS and Samba leaking.. # iptables -t nat -A PREROUTING -p TCP -i ${INSIDE_DEVICE} --dport 135:139 -j DROP iptables -t nat -A PREROUTING -p UDP -i ${INSIDE_DEVICE} --dport 137:139 -j DROP iptables -t nat -A PREROUTING -p TCP -i ${INSIDE_DEVICE} --dport 445 -j DROP iptables -t nat -A PREROUTING -p UDP -i ${INSIDE_DEVICE} --dport 445 -j DROP # NetBIOS が floppyfw を通過して外に出たり、 # floppyfw に到着するのを守る感じ。 # 何故それを守るかというと、外で誰かが受信すると、いろいろとバレるわけですよ。 # # We would like to ask for names from our floppyfw box # iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT # google とか外の web サーバを探すためのデータ (DNS) は # LAN のパソが floppyfw の中に溜まったモゲラを参照して、接続するわけですよ。たぶん # Ping and friends. iptables -A OUTPUT -p icmp -j ACCEPT # to both sides. iptables -A INPUT -p icmp -j ACCEPT # 友達なんていない。 # And also, DHCP, but we can basically accept anything from the inside. iptables -A INPUT -i ${INSIDE_DEVICE} -j ACCEPT iptables -A OUTPUT -o ${INSIDE_DEVICE} -j ACCEPT # LAN で DHCP を使う場合。 # 続く
18 :
# 続き # # If the user wants to have the fake identd running, the identd has to # be able to answer. # if [ ${FAKEIDENT} ] then iptables -A INPUT -p TCP --dport 113 -i ${OUTSIDE_DEVICE} -j ACCEPT else iptables -A INPUT -p TCP --dport 113 -i ${OUTSIDE_DEVICE} -j REJECT --reject-with tcp-reset fi # if hogehoge fi という構文は、この場合は、 # 『もしも、 config ファイル内で、FAKEIDENT が有効になっていた場合 # iptables のルールを作りますよー、って感じで。 # # And, some attempt to get interactive sesions a bit more interactive # under load: # iptables -A PREROUTING -t mangle -p tcp --sport ssh -j TOS --set-tos Minimize-Delay iptables -A PREROUTING -t mangle -p tcp --sport ftp -j TOS --set-tos Minimize-Delay iptables -A PREROUTING -t mangle -p tcp --sport ftp-data -j TOS --set-tos Maximize-Throughput # ワカンネ ('A`) # mangle ってのが重要だった気がする # TOS は "Type Of Service" の頭文字な気がする。 # # Finally, list what we have # # iptables -L # いままで作ったルールを自分で確認しますよー。リスト表示してくだされー # というナニ # 続く
19 :
# ラスト # # This enables dynamic IP address following # echo 7 > /proc/sys/net/ipv4/ip_dynaddr # # trying to stop some smurf attacks. # echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts # # Rules set, we can enable forwarding in the kernel. # echo "Enabling IP forwarding." echo "1" > /proc/sys/net/ipv4/ip_forward # 『ルータとして使いますよモジュール』を読み込む感じ。 # 文頭の echo "0" > /proc/sys/net/ipv4/ip_forward との組み合わせ # 文頭で echo "0" で無効化してから、ルールを作り # 最後に有効化するのが重要なのか?本当か?