Ubuntuの起動時にbr0/tun0/tap0/iptablesを自動設定する
いつもアクセスありがとうございます。匠技術研究所の谷山 亮治です。
今回は、UbuntuのIPアドレス設定を固定するだけでなく、ブリッジ、トンネル、タップの生成と設定を行い、かつiptablesでパケットフィルターを設定する事例を紹介します。
UbuntuでIPアドレスを固定する方法は、以下の記事で紹介しています。
Linux/UbuntuでIPを自動取得から固定IPに変更する(このブログ内記事)
さらにUbuntuのネットワーク設定ファイル"/etc/network/interfaces"には、インターフェイスの初期化タイミングや終了タイミングに応じて、外部コマンドを記述して実行する機能があり、とても便利です。
■Ubuntuでtapインターフェイスを起動時に自動設定する
設定方針:
1.物理インターフェイスeth0を定義します。
2.論理ブリッジ・インターフェイスbr0を定義し、eth0と接続します。
3.br0定義後、論理タップ・インターフェイスtap0を定義し、br0と接続します。
4.eth0にiptablesでフィルターをかけます。
5.ネットワーク停止時に、作成したインターフェイスを消去します。
(*)5.を設定しない場合は、/etc/init.d/networking restartが失敗します。
実装例:
$ sudo cat /etc/network/interfaces
# 必須。loopbackインターフェイスを定義する。
auto lo
iface lo inet loopback
# 物理LANポートを定義する。ここでは詳細の設定を行わない。
auto eth0
iface eth0 inet manual
# 論理ブリッジ・インターフェイスを定義し、IPアドレスの設定を行う。
auto br0
iface br0 inet static
address 192.168.100.5
netmask 255.255.255.0
network 192.168.100.0
broadcast 192.168.100.255
gateway 192.168.100.1
dns-nameservers 192.168.100.1 # DNSの設定もここで行い、設定ファイルを一元化する。
pre-up /sbin/ifconfig eth0 0.0.0.0 promisc up # eth0に到着したパケットはすべて処理する。
pre-up /sbin/brctl addbr br0 # br0をブリッジとして定義する。
pre-up /sbin/ip tuntap add mode tap tap0 # tap0を定義する。
pre-up /sbin/ifconfig tap0 0.0.0.0 promisc up # tap0に到着したパケットはすべて処理する。
post-up /sbin/brctl addif br0 eth0 # br0にeth0をつなぐ。
post-up /sbin/brctl addif br0 tap0 # br0にtap0をつなぐ。
post-up /sbin/iptables -I INPUT -i eth0 -p udp --dport 67 -j DROP # eth0に到着したDHCPを落とす。
post-up /sbin/iptables -I INPUT -i eth0 -p udp --dport 68 -j DROP # eth0に到着したDHCPを落とす。
post-up /sbin/iptables -I OUTPUT -o eth0 -p udp --dport 67 -j DROP # eth0からDHCPを出さない。
post-up /sbin/iptables -I OUTPUT -o eth0 -p udp --dport 68 -j DROP # eth0からDHCPを出さない。
pre-down /sbin/ifconfig tap0 down # tap0をdownにする。
pre-down /sbin/ifconfig eth0 down # eth0をdownにする。
post-down /sbin/ifconfig br0 down # br0をdownにする。
post-down /sbin/brctl delbr br0 # br0を削除する。