ラズパイルーター

Raspberry Pi で PPPoE NATルーターを構築。

市販普及型ルーターとは一線を画す安定性!
ソフトウエアVPNサーバーの実装で実用性も最高!

現在は、Wi-Fiブリッジとしても稼働中。
最新情報は、「Raspberry PiによるWi-Fi AP付PPPoEルーター構成」の記事を参照して下さい。

こちらの内容で構築したラズパイルーター、
早速、OPT100Eの上に仮置き。

問題ないので、OPT100Eを仕舞い込んでラズベリーパイに置き換え。

スループットもOPT100Eと比較しても遜色ない。(というか、手前のVDSLが遅くてボトルネックだから比較評価できない;)

現状のファイアウォールは以下の通り。
これでしばらく試すことにした。

#! /bin/sh

local_net=‘192.168.1.0/24’
my_local_ip=‘192.168.1.254’
#my_test_ip=‘192.168.1.253’

WAN=‘ppp0’
LAN=‘eth0’

#echo 1 > /proc/sys/net/ipv4/ip_forward

##############
#Flush & Reset
##############
iptables -F
iptables -t nat -F
iptables -X

##############
#Deafult Rule
##############
iptables -P INPUT DROP
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i $LAN -s $local_net -d $my_local_ip -j ACCEPT
#iptables -A INPUT -i $LAN -s $local_net -d $my_test_ip -j ACCEPT

#DHCP permission
iptables -A INPUT -i $LAN -p udp --dport 67:68 --sport 67:68 -j ACCEPT

iptables -P OUTPUT ACCEPT

iptables -P FORWARD DROP
iptables -A FORWARD -i $LAN -o $WAN -s $local_net -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

##################
#VPN pass-through
##################
#iptables -A FORWARD -i $WAN -o $LAN -p esp -j ACCEPT
#iptables -A FORWARD -i $WAN -o $LAN -p ah -j ACCEPT

#########
#loopback
#########
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

#################
#SNAT(masquerade)
#################
iptables -t nat -A POSTROUTING -o $WAN -s $local_net -j MASQUERADE

#################
#DNAT(HTTP)
#################
server_ip=‘192.168.1.1’

http_port=‘80’
iptables -t nat -A PREROUTING -p tcp -i $WAN --dport 80 -j DNAT --to-destination $server_ip:$http_port
iptables -A FORWARD -i $WAN -o $LAN -p tcp -d $server_ip --dport $http_port -j ACCEPT
#################
#DNAT(HTTPS)
#################
https_port=‘443’
iptables -t nat -A PREROUTING -p tcp -i $WAN --dport 443 -j DNAT --to-destination $server_ip:$https_port
iptables -A FORWARD -i $WAN -o $LAN -p tcp -d $server_ip --dport $https_port -j ACCEPT
#################
#DNAT(Softether)
#################
softether_port=‘5555’
iptables -t nat -A PREROUTING -p tcp -i $WAN --dport 5555 -j DNAT --to-destination $server_ip:$softether_port
iptables -A FORWARD -i $WAN -o $LAN -p tcp -d $server_ip --dport $softether_port -j ACCEPT

softether_port2=‘992’
iptables -t nat -A PREROUTING -p tcp -i $WAN --dport 992 -j DNAT --to-destination $server_ip:$softether_port2
iptables -A FORWARD -i $WAN -o $LAN -p tcp -d $server_ip --dport $softether_port2 -j ACCEPT
#################
#DNAT(IKE)
#################
ike_port=‘500’
iptables -t nat -A PREROUTING -p udp -i $WAN --dport 500 -j DNAT --to-destination $server_ip:$ike_port
iptables -A FORWARD -i $WAN -o $LAN -p udp -d $server_ip --dport $ike_port -j ACCEPT
#################
#DNAT(NAT-T)
#################
nat_t_port=‘4500’
iptables -t nat -A PREROUTING -p udp -i $WAN --dport 4500 -j DNAT --to-destination $server_ip:$nat_t_port
iptables -A FORWARD -i $WAN -o $LAN -p udp -d $server_ip --dport $nat_t_port -j ACCEPT
#################
#DNAT(SMTP)
#################
smtp_port=‘25’
iptables -t nat -A PREROUTING -p tcp -i $WAN --dport 25 -j DNAT --to-destination $server_ip:$smtp_port
iptables -A FORWARD -i $WAN -o $LAN -p tcp -d $server_ip --dport $smtp_port -j ACCEPT
#################
#DNAT(SUBMISSION)
#################
submission_port=‘587’
iptables -t nat -A PREROUTING -p tcp -i $WAN --dport 587 -j DNAT --to-destination $server_ip:$submission_port
iptables -A FORWARD -i $WAN -o $LAN -p tcp -d $server_ip --dport $submission_port -j ACCEPT
#################
#DNAT(POP3 over SSL)
#################
pop3s_port=‘995’
iptables -t nat -A PREROUTING -p tcp -i $WAN --dport 995 -j DNAT --to-destination $server_ip:$pop3s_port
iptables -A FORWARD -i $WAN -o $LAN -p tcp -d $server_ip --dport $pop3s_port -j ACCEPT
#################
#DNAT(SSH)
#################
ssh_port=‘22’
iptables -t nat -A PREROUTING -p tcp -i $WAN --dport 22 -j DNAT --to-destination $server_ip:$ssh_port
iptables -A FORWARD -i $WAN -o $LAN -p tcp -d $server_ip --dport $ssh_port -j ACCEPT

################################################
#Outgoing packet should be real internet Address
################################################
iptables -A OUTPUT -o $WAN -d 10.0.0.0/8 -j DROP
iptables -A OUTPUT -o $WAN -d 172.16.0.0/12 -j DROP
iptables -A OUTPUT -o $WAN -d 192.168.0.0/16 -j DROP
iptables -A OUTPUT -o $WAN -d 127.0.0.0/8 -j DROP

#########
#logging
#########
iptables -N LOGGING
iptables -A LOGGING -j LOG --log-level warning --log-prefix “DROP:” -m limit
iptables -A LOGGING -j DROP
iptables -A INPUT -j LOGGING
iptables -A FORWARD -j LOGGING