★Linux Routerの構築
Linux Routerを新しい機械から作ることにしました.サーバ機は別です.この機械にはルータ機能しか与えません.サーバ機とルータ機を一緒にしようと思えばiptablesの設定が変わってきますし,ま〜実験と思えば良いでしょう.
このページはかつさんのHPを元にしています.少し違うのは固定IP+外向きDNSサーバを設定してることと,ターボ君とヴァイン君の違いでしょう.eth0がlan側,eth1がwan側に設定してあります.(eth1はPPPoE接続するのでppp0とiptableでは記述します)
1.Vineのインストール
まずはNIC一枚だけで.
a.ntsysvでkuzduを停止,その他いらないデーモンは停止する.(自分で考えましょう,というか人によっているかいらないかは違ってきます.)
b.netcfgの設定
名前タブ
ホスト名 bfle(ルータを設定するパソコンのホスト名)
ドメイン yaguma.com(自分の取得したドメイン)
ネームサーバ 192.168.1.101 <-- サーバ機(DNS他を扱っている)
ホストタブ(hostsファイルに登録される内容)
127.0.0.1 localhost.localdomain localhost
192.168.1.1 bfle.yaguma.com bfle
ルーティングタブ
ネットワークパケットフォワーディングにチェックを入れる.
これによって,/proc/sys/net/ipv4/ip_forwardに'1'が記入されます.
デフォルトゲートウェイ 192.168.1.1(ルータのプライベートIP,eth0)
この時点で,eth0(最初に入れたNIC)は固定で,
/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=static
BROADCAST=192.168.1.255
IPADDR=192.168.1.1
NETMASK=255.255.255.0
NETWORK=192.168.1.0
ONBOOT=yes
と設定する.
c.sshdの設定
クローン機を作るの項参照.
d.vncseverの設定
vncserverの項参照.
e.その他の設定.
.bashrcに付け加える
PATH=/sbin:$PATH
PATH=/usr/local/bin:$PATH
/root/.fd2rcと/root/.vnc/xstartupをルータ機にコピー
# rsync -lptgoDvz -e ssh --delete /root/.vnc/xstartup bfle:/root/.vnc/xstartup
# rsync -lptgoDvz -e ssh --delete /root/.fd2rc bfle:/root/.fd2rc
あと,サーバ機から
# rsync -avz -e ssh --delete /usr/local/ bfle:/usr/local/
とすれば,設定しやすいです.はっきり言って,c.d.e.はクライアント機からルータ機を操る設定で,必要ない人には必要ありません.(あたりまえか)
f.2枚目のNICを認識させる
電源を切って,2枚目のNICをpciスロットに装着します.
/etc/conf.modulesにeth1についてのドライバの読み込みを追加。
alias eth1 sis900 <--- sis900はドライバの名前です.
以下のファイルを設定.
/etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
BOOTPROTO=static
BROADCAST=192.168.1.255
IPADDR=192.168.1.15
NETMASK=255.255.255.0
NETWORK=192.168.1.0
ONBOOT=yes
以上を記述したら,ドライバを読み込みeth1を立ち上げます.
# depmod -a
# ifup eth1
ifconfigなどとして,eth1についての情報が出たら成功です.
ping 192.168.1.15などとして,ネットワークに届くことを確認してください.
後で,eth1はWAN側に繋げるので設定し直します.
このときeth1とeth0は自分の思ったのと反対のNICになるかもしれません.そのようなときはそれに合わせて設定をするか,NICの装着を逆にしてください.
2.DHCP Serverの設定
Vineでは標準でISCのdhcpdがインストールされています.
http://www.mm-labo.com/computer/linux/dhcp.html
を参考にして設定します.あと,以下のファイルを設定.
Vineは/etc/sysconfig/dhcpdにDHCPDARGS=eth0を記述.
/etc/sysconfig/network
NETWORKING=yes
HOSTNAME=bfle
DOMAINNAME=yaguma.com
# GATEWAY=192.168.1.1
# GATEWAYDEV=eth0
# DHCPDEV=eth0 <---- ターボ君の設定.
GATEWAY,GATEWAYDEVはeth1でPPPoE接続したときに自動的に設定されますのでコメントアウトします.
/etc/dhcpd.confファイルを作成する。
option domain-name "yaguma.com";
option domain-name-servers 192.168.1.101; <--- クライアントに通知するDNSのIP
default-lease-time 6000; <--- 標準で100分IPアドレスをリース
max-lease-time 86400; <--- 最大で1日IPアドレスをリース
subnet 192.168.1.0 netmask 255.255.255.0 { <--- 192.168.1.Xに
range 192.168.1.80 192.168.1.90; <--- 192.168.1.80から192.168.1.90をリース
option routers 192.168.1.1 <--- Default Gatewayは192.168.1.1
option subnet-mask 255.255.255.0; <--- Subnet Maskは255.255.255.0
option broadcast-address 192.168.1.255; <--- ブロードキャストは192.168.1.255
}
Vineでは/var/lib/dhcp/dhcp.leasesにログが設定されます.
#service dhcpd start
としましょう.
3.adslの設定
http://www.kkoba.com/linuxrouter/pppoeset.shtmlを参考に.
resolv.confさえ正しく設定しておけば,
Enter the DNS information here:
はNOCHANGEでも良いです.
と言うか他の設定SERVERなどをするとresolv.confが書き換えられてしまいます.
4.iptablesの設定.
http://www.kkoba.com/linuxrouter/iptables.shtmlを参考に.
adsl-setupの設定で,Choose a type of firewallで'2'を設定すると,
/etc/ppp/firewall-masqの設定が選ばれます.
/etc/ppp/firewall-masqを設定.(かつさんのサイトとはeth0とeth1が逆です)
ただし,自分に合わせた設定をします.
また,/etc/sysconfig/iptablesがあればデリートします.
ちなみに53番を開けるには
# DNS
iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 53 -j DNAT --to 192.168.1.101
iptables -A FORWARD -i ppp0 -d 192.168.1.101 -p tcp --dport 53 -m state
--state NEW -j ACCEPT
iptables -t nat -A PREROUTING -i ppp0 -p udp --dport 53 -j DNAT --to 192.168.1.101
iptables -A FORWARD -i ppp0 -d 192.168.1.101 -p udp --dport 53 -m state
--state NEW -j ACCEPT
を追加します.
5.eth1の設定.
WAN側にPPPoEで繋げるeth1の設定は以下のようにします.
/etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
BOOTPROTO=none
ONBOOT=no
この設定で
# adsl-start
として繋がればOK.
/etc/ppp/firewall-masq
#!/bin/sh
SERVER='192.168.1.101'
LOCAL='192.168.1.0/24'
NTP='133.31.180.6'
ANY='0.0.0.0/0'
#######################################################################
# Initialize
#######################################################################
# Initialize tables
iptables -F
iptables -X
CHAINS=`cat /proc/net/ip_tables_names 2>/dev/null`
for i in $CHAINS; do iptables -t $i -F; done
for i in $CHAINS; do iptables -t $i -X; done
for i in $CHAINS; do iptables -t $i -Z; done
# Filter default policy DROP
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
#######################################################################
# Masquerade
#######################################################################
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
#######################################################################
# Against the attacks
#######################################################################
# Fragment
iptables -N fragment
iptables -A fragment -j LOG --log-prefix "iptables fragment: "
iptables -A fragment -j DROP
iptables -A INPUT -f -i ppp0 -j fragment
iptables -A FORWARD -f -i ppp0 -j fragment
# Spoofing
iptables -N spoofing
iptables -A spoofing -j LOG --log-prefix "iptables spoofing: "
iptables -A spoofing -j DROP
iptables -A INPUT -i ppp0 -s 10.0.0.0/8 -j spoofing
iptables -A INPUT -i ppp0 -s 172.16.0.0/12 -j spoofing
iptables -A INPUT -i ppp0 -s 192.168.0.0/16 -j spoofing
iptables -A FORWARD -i ppp0 -s 10.0.0.0/8 -j spoofing
iptables -A FORWARD -i ppp0 -s 172.16.0.0/12 -j spoofing
iptables -A FORWARD -i ppp0 -s 192.168.0.0/16 -j spoofing
# Ping of death
iptables -N ping-death
iptables -A ping-death -m limit --limit 1/s --limit-burst 4 -j ACCEPT
iptables -A ping-death -j LOG --log-prefix "iptables ping-death: "
iptables -A ping-death -j DROP
iptables -A INPUT -i ppp0 -p icmp --icmp-type echo-request -j ping-death
iptables -A FORWARD -i ppp0 -p icmp --icmp-type echo-request -j ping-death
# Port scan
iptables -N port-scan
iptables -A port-scan -m limit --limit 1/s --limit-burst 4 -j RETURN
iptables -A port-scan -j LOG --log-prefix "iptables port-scan: "
iptables -A port-scan -j DROP
iptables -A INPUT -i ppp0 -p tcp --tcp-flags SYN,ACK,FIN,RST RST -j port-scan
iptables -A FORWARD -i ppp0 -p tcp --tcp-flags SYN,ACK,FIN,RST RST -j port-scan
# SYN flood
iptables -N syn-flood
iptables -A syn-flood -m limit --limit 1/s --limit-burst 8 -j RETURN
iptables -A syn-flood -j LOG --log-prefix "iptables syn-flood: "
iptables -A syn-flood -j DROP
iptables -A INPUT -i ppp0 -p tcp --syn -j syn-flood
iptables -A FORWARD -i ppp0 -p tcp --syn -j syn-flood
# NetBIOS
iptables -N net-bios
iptables -A net-bios -j LOG --log-prefix "iptables net-bios: "
iptables -A net-bios -j DROP
iptables -A INPUT -i eth0 -p tcp -m multiport --sport 135,137,138,139,445 -j DROP
iptables -A INPUT -i eth0 -p udp -m multiport --sport 135,137,138,139,445 -j DROP
iptables -A INPUT -i eth0 -p tcp -m multiport --dport 135,137,138,139,445 -j DROP
iptables -A INPUT -i eth0 -p udp -m multiport --dport 135,137,138,139,445 -j DROP
iptables -A INPUT -i ppp0 -p tcp -m multiport --sport 135,137,138,139,445 -j net-bios
iptables -A INPUT -i ppp0 -p udp -m multiport --sport 135,137,138,139,445 -j net-bios
iptables -A INPUT -i ppp0 -p tcp -m multiport --dport 135,137,138,139,445 -j net-bios
iptables -A INPUT -i ppp0 -p udp -m multiport --dport 135,137,138,139,445 -j net-bios
iptables -A FORWARD -p tcp -m multiport --sport 135,137,138,139,445 -j net-bios
iptables -A FORWARD -p udp -m multiport --sport 135,137,138,139,445 -j net-bios
iptables -A FORWARD -p tcp -m multiport --dport 135,137,138,139,445 -j net-bios
iptables -A FORWARD -p udp -m multiport --dport 135,137,138,139,445 -j net-bios
#######################################################################
# For Router
#######################################################################
# ICMP reply
iptables -A OUTPUT -o ppp0 -p icmp -j ACCEPT
# Traceroute
iptables -A INPUT -i ppp0 -p udp --dport 33434:33500 -m state --state NEW -j ACCEPT
iptables -A OUTPUT -o ppp0 -p udp --sport 33434:33500 -m state --state RELATED -j ACCEPT
# NTP Server
#iptables -A OUTPUT -o ppp0 -d 224.0.1.1 -p udp --sport 123 --dport 123 -j ACCEPT
iptables -A OUTPUT -o ppp0 -d $NTP -p udp --sport 123 --dport 123 -j ACCEPT
#iptables -A INPUT -i ppp0 -s 224.0.1.1 -p udp --sport 123 --dport 123 -j ACCEPT
iptables -A INPUT -i ppp0 -s $NTP -p udp --sport 123 --dport 123 -j ACCEPT
# HTTP
#iptables -A OUTPUT -o ppp0 -d $ANY -p tcp --sport 80 --dport 80 -j ACCEPT
#iptables -A INPUT -i ppp0 -s $ANY -p tcp --sport 80 --dport 80 -j ACCEPT
# IDENT
iptables -A INPUT -i ppp0 -p tcp --dport 113 -j REJECT --reject-with tcp-reset
iptables -A OUTPUT -o ppp0 -p tcp --sport 113 --tcp-flags RST RST -j ACCEPT
# Loopback
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
# Local Network
iptables -A INPUT -i eth0 -j ACCEPT
iptables -A OUTPUT -o eth0 -j ACCEPT
#######################################################################
# For Local Server
#######################################################################
# FTP
#iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 21 -j DNAT --to $SERVER
#iptables -A FORWARD -i ppp0 -d $SERVER -p tcp --dport 21 -m state --state NEW -j ACCEPT
# FTP pasv mode
#iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 4000:4029 -j DNAT --to $SERVER
#iptables -A FORWARD -i ppp0 -d $SERVER -p tcp --dport 4000:4029 -m state --state NEW -j ACCEPT
# SSH
iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 22 -j DNAT --to $SERVER
iptables -A FORWARD -i ppp0 -d $SERVER -p tcp --dport 22 -m state --state NEW -j ACCEPT
# SMTP
iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 25 -j DNAT --to $SERVER
iptables -A FORWARD -i ppp0 -d $SERVER -p tcp --dport 25 -m state --state NEW -j ACCEPT
# DNS
iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 53 -j DNAT --to $SERVER
iptables -A FORWARD -i ppp0 -d $SERVER -p tcp --dport 53 -m state --state NEW -j ACCEPT
iptables -t nat -A PREROUTING -i ppp0 -p udp --dport 53 -j DNAT --to $SERVER
iptables -A FORWARD -i ppp0 -d $SERVER -p udp --dport 53 -m state --state NEW -j ACCEPT
# HTTP
iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 80 -j DNAT --to $SERVER
iptables -A FORWARD -i ppp0 -d $SERVER -p tcp --dport 80 -m state --state NEW -j ACCEPT
# IMAP
iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 143 -j DNAT --to $SERVER
iptables -A FORWARD -i ppp0 -d $SERVER -p tcp --dport 143 -m state --state NEW -j ACCEPT
# HTTPS
#iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 443 -j DNAT --to $SERVER
#iptables -A FORWARD -i ppp0 -d $SERVER -p tcp --dport 443 -m state --state NEW -j ACCEPT
#######################################################################
# For Client
#######################################################################
# MSS
iptables -A FORWARD -o ppp0 -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
# Client
iptables -A FORWARD -i eth0 -s $LOCAL -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i ppp0 -d $LOCAL -m state --state ESTABLISHED,RELATED -j ACCEPT
#######################################################################
# Log
#######################################################################
# LOG
iptables -A INPUT -j LOG --log-prefix "iptables input-drop: "
iptables -A OUTPUT -j LOG --log-prefix "iptables output-drop: "
iptables -A FORWARD -j LOG --log-prefix "iptables forward-drop: "
Copyright 2002-2003 Kai All Rights Reserved & This site is Link Free
戻る