想定している構成

やりたい事は

① Raspberry Piを透過Proxyにして、外に出る通信はSquid経由にする
② 外からWebサーバーへのアクセスはNginx+ModSecurityを通して接続する
③ Raspberry PiのログデーターはLog Serverに転送する
※使用する物
Raspberry Pi 2 Model B

Raspberry Piのeth0は本体のLANで、eth1はUSB-LANアダプタを使用する

まず最初にRaspberry Piのブリッジ設定

$ sudo apt-get update
$ sudo apt-get install bridge-utils
$ sudo vi /etc/network/interfaces
内容は以下
---------------------------------------
auto eth0
iface eth0 inet manual

auto eth1
iface eth1 inet manual

auto br0
iface br0 inet static
address 192.168.101.12
netmask 255.255.255.0
gateway 192.168.101.1
dns-nameservers 192.168.101.1
bridge_ports eth0 eth1
bridge_stp off
bridge_maxwait 1
---------------------------------------

次はセキュリティを少し強化

SSHにアクセスできるのはローカル側192.168.11.XXXのみにする。
(※後でGoogleAuthenticatorを使った2段階認証にするつもり)
$ sudo vi /etc/hosts.deny
 ↓以下を追加(全ての接続を禁止)
---------------------------------------
sshd : all
---------------------------------------
$ sudo vi /etc/hosts.allow
 ↓以下を追加(192.168.11.xxxからのみ許可)
---------------------------------------
sshd : 192.168.11.
---------------------------------------

ついてにIPv6を無効化

$ sudo vi /etc/sysctl.d/ipv6.conf
 ↓以下を有効にする。
---------------------------------------
net.ipv6.conf.all.disable_ipv6 = 1
---------------------------------------
 再起動後に"ifconfig"コマンドで"ipv6"の項目がなくなっていればOK!

この状態でスループットを計測してみる。

上記でTest PC、FTP Serverのeth1側はすべてUSB-LANアダプタを使用。(接続はUSB2.1)
計測方法はTest PCからFTPコマンドを使って以下の通り

まずテスト用ファイル作成(以外と時間がかかるのでしばらく待つ)
$ dd bs=1024 count=1024000 if=/dev/urandom of=test_1G
1024000+0 records in 
1024000+0 records out
1048576000 bytes (1.0 GB, 1000 MiB) copied, 89.9111 s, 11.7 MB/s
でテストは以下の通り
$ ftp 192.168.0.101
Connected to 192.168.0.101.
220 (vsFTPd 3.0.3)
Name (192.168.0.101:toshi-e):
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.

※※送信テスト※※
ftp> put test_1G
local: test_1G remote: test_1G
200 PORT command successful. Consider using PASV.
150 Ok to send data.
226 Transfer complete.
1048576000 bytes sent in 8.94 secs (111.8337 MB/s)

※※受信テスト※※
ftp> get test_1G /dev/null
local: /dev/null remote: test_1G
200 PORT command successful. Consider using PASV.
150 Opening BINARY mode data connection for test_1G (1048576000 bytes).
226 Transfer complete.
1048576000 bytes received in 9.02 secs (110.8978 MB/s)
ftp> quit
221 Goodbye.

こんな感じで送受信をテストしてみた結果

  接続方法 送信 受信  
Test PCからFTP Serverへ直接接続(eth0側) 111.8 MB/s 110.8 MB/s  
Test PCからFTP Serverへ直接接続(eth1側) 11.1 MB/s 11.2 MB/s  
Raspberry Pi を経由した接続 11.2 MB/s 11.1 MB/s  

②と③の違いは、Test PC <-> FTP Server間にRaspberry Piを入れたか入れなかったなので、スループットはRaspberry Piの性能というよりもUSB-LANアダプタを使ったネットワーク自体の問題のよう。

後日、eth0側で③と同様なテストをやってみると
送信 11.2 MB/sで受信が1.6 MB/s
と、なりなぜか受信速度が全然でない。
ネットワークの設定をミスしている様だが調べるのが面倒なので、ブリッジするだけではRaspberry Piの性能によるスループットの低下は余りないと結論する。
問題はUSB-LANアダプタ。これはどうしようもないのでこのまま進める予定。

一旦ここまで。