【Network】pfsenseでDS-Lite/transix 固定IP1を使う 
 前回の記事でpfsenseではDS-Liteが使えないと言いましたが、誤りでした。コメント内のアドバイスにより無事に接続ができたのでメモとして残します。通りすがりのどなたか、ありがとうございました。自分の理解のなさを改めて思いしりました。
 ただ、
・dhcp6cで受け取るDNSがシステムに登録されない
・Interface IDを指定できない(一度Preifxを確認してから決め打ちでVIPを作らないといけない)
 の2点がまだ解決できていないので、完璧ではないのですが…。

 環境:pfsenseCE 2.4.5-RELEASE-p1
 インストール自体は終わりWebUIに接続でき、WANアドレスにv6が割り振られている段階からの説明とします。ある程度pfSenseを扱った人を対象としているので一般的なお作法的な部分は省いています。

DNSの設定


 DHCPv6からDNSをもらっても何故かシステムに登録されないので、System→General SetupのDNS Serversに以下のホストを登録しておきます。

2404:1a8:7f01:b::3
2404:1a8:7f01:a::3





 dhcp6cコマンドを打つと帰ってくることは確認しているので、これについては設定次第でどうにかなる気がするのですが、今の所未解決なので決め打ちです。v4トンネル確立後なら通常の8.8.8.8なども使えるのでそちらでもいいのですが、外部DNSだとupdate.transix.jpが引けないので網内のDNSを使うのがいいと思います。
 ローカルコンソールに落ちて dhcp6c -i <WAN NIC>としてDNSアドレスが変わってないことを確認してから設定したほうがいいかもしれません。

DS-Liteの接続をする場合


 DS-Liteで接続する場合は例のIP固定が不要なのでかんたんでした。Interfaces→AssignmentsからGIFを選択します。




 そして、以下のように入力します。例によってgw.transix.jpというドメイン名は指定できないので、 2404:8e00::feed:100もしくは 2404:8e00::feed:101を入れます。
 以前できないと思っていたのは、 GIF tunnel local addressというのが親になるNICのIPv6アドレスを入力するのだと思っていたからでしたが、これはトンネル内で使うIPを指定するところでした。

 ただ、結局カプセル化されてしまうので何でもいいようです。DS-Liteの場合はトンネルのローカルに192.0.0.2を、トンネル先のアドレスに192.0.0.1を指定することになっているので、一応仕様どおりに指定します。




 あとはInterface Assignmentsに戻り、作成したトンネルインターフェースをOPT1として割り当てます。割当後、Interfacesから作成したOPT1を選択して有効化、及び名前の変更(任意)とMTU/MSSをクランピングします。
 



 割り当てたら、System→Routingより、Gateway Monitoringの「Disable Gateway Monitoring」にチェックを入れます。(arpingが届かないので、常にGWがDownと判定されてGWが使えなくなってしまうのを防ぐため)




 ローカルコンソールに落ちてping 1.1.1.1など、適当なところに疎通確認をして外との通信ができることを確認したら完了です。


Zoot Native固定IP1などのTransix固定IPを使う場合


 DS-Liteとほぼ同じなのですが、VIPの割当をするという一部だけ異なります。DUIDなどの調整によりPrefixをもとにホスト部をfeedにできるのではないかとそこそこ調べたのですが、解決できませんでした。IPv6は自分にはまだ早すぎた…。まあv6Prefixについてはそうそう変わらないはずなので、決め打ちで指定してもあまり問題にはならないとは思うのですが、納得できないです…。

 まず、WANにIPv6が割り振られていることを確認したら、そのv6のPrefixを確認します。そのPrefixをコピーしたら、Firewall→Virtual IPsに移動し、IP Aliasとして<Prefix>::feedというVIPを作成します。




 そして、DS-Liteと同じようにInterfaces→AssignmentsからGIFを選択します。VIPを作成したあとであれば、Parent InterfaceにVIPを指定できるので、こちらを指定します。GIF tunnel local addressにはもらったアドレスを、 GIF tunnel remote addressは適当に埋めます。何でもいいようなので、割り振られた固定IPを指定しています。(謝辞:通りすがりのpfSenseユーザーさま)




 最後に、コンソールに落ちて以下のコマンドを実行します。

curl "http://update.transix.jp/request?username=<もらったユーザーID>&password=<もらったパスワード>" --interface <作成したVIP>


 これでトンネルはとりあえずつながるはずなので、あとは、DS-Liteの設定と同じように、
・System→RoutingのGateway Monitoringの「Disable Gateway Monitoring」にチェックを入れる
・InterfacesからMTU/MSSを調整
 をすることによって接続できるようになるはずです。ちなみにDS-Liteと固定IPトンネルは共存できるので、1つのpfsenseで用途によって外に出るGWの選択(PBR)ができます。Rulesの各ルールの中のAdvancedから選べます。便利ですね。速度についてはDebianで接続してもpfで接続しても変化はありませんでした。

まとめ


 今の環境は、ネットワークについては最終的にでかくて複雑なpfsenseのVMで制御しているので、既存環境に設定追加で済むのは新しい管理対象を作らなくて済むのでありがたいです。方法を教えてくれた方に感謝しかありません。ありがとうございました。

 おわり

[ コメントを書く ] ( 202 回表示 )   |  このエントリーのURL  |  $star_image$star_image$star_image$star_image$star_image ( 3 / 301 )  |  
【Network】InterlinkのZOOT NATIVE IPv4固定IP1個をDebianから使う 
 現在この環境にはNuroや今まで通りのPPPoE接続やZOOT NATIVEによるDS-Lite接続など、複数のネットワークを利用しているのですが、固定IPのためのPPPoEセッションがまともに使えるような速度でなくなってきたため、ZOOT NATIVE IPv4固定IP1個というサービスが開始されたのでこちらのサービスに変更しようと思っていました。
 しかし、いまいち使っているトンネルなどの仕様がよくわからず、動作対象外のOSで接続するにはどうすればいいのかがはっきりしなかったため二の足を踏んでいたのですが、人柱になろうと覚悟を決めて契約してみました。

tr;dr


・トンネルとしてはipip6トンネルを利用している
・oepnwrt、pfsense、opensenseといったメジャーどころは現状トンネル形式がipip6に対応していないっぽい
→pfは行けました
・vyarttaは多分イケそうだけど検証してない
・トンネルを張る前にv6網内のWebサーバにcurlなどでクエリを飛ばす必要がある
・ip token set ::feed dev ens192など、Interface IDを指定する必要がある
・Debianだと/etc/network/interfacesの中で完結できないため、いくつかスクリプトをかませる必要があった
・IPv6の再配布やルーティングは今回は考慮していない
設定方法まとめまで飛ぶ

何故保証外のOSを使いたかったのか


 そもそも何故おとなしく動作検証済みの機器を使わなかったかというと、OpenWRTやpfsense/OpenSenseなど、仮想環境で動くOSを利用したかったのです。
 仮想環境で動くものについては、CPUやNICなどの物理HWで殴ればそれに応じてネットワークを速くできること、物理的なネットワーク機器より安価にある程度の性能は達成できること、ハードウェアに縛られないので様々な入れ替えが効くといったメリットが大きく、昔は色々物理ネットワーク機器が動いていましたが、今はすべて仮想環境に集約してしまいました。

 そのため、今は動いているネットワーク機器というとスイッチとAPくらいしかありません。頑張って物理を減らしたのにその逆行をしたくなかったのです。

契約してみた


 契約するとこのような情報がきます。



 さて、この情報だけだとなかなかどうしたらいいかわかりません。なんもわからんので色々調べてみます。

そもそもどうすればつながるのかを調べる


 Univerge IXシリーズの設定例を見ると、どうやら4-over-6というトンネル形式を使っているようなので、これをサポートしているか色々調べてみました。トンネルにIPv4を設定するのにデフォゲアドレスを設定せずにデバイスを指定するのがなんとも違和感がありましたが、そういうものみたいです。DS-Liteの場合は192.0.0.2がB4(ルーターのトンネル内v4IP)で192.0.0.1がAFTER(トンネル先のIP)アドレスとして振られるので何となく分かるのですが、これでいいのかちょっと不安でした。

 transixのページを見てみると、こちらにはIPIPトンネルを利用しているという記述があるので、これらのキーワードで色々調べてみます。

pfsenseの対応


 pfsenseにはgreやgifトンネルを張る機能があるので僅かな可能性ながら行けるかと思いましたが、どうやらできないようです。DS-Liteを使おうとしたときも同じだったのでうっすらわかっていましたが。。いつか対応してくれると嬉しいのですが。
 →pfsenseについては接続できたので訂正します。

OpenWrtの対応


 OpenWrtはDS-Liteのトンネルを張るのに一番かんたんなOSでしたが、それ以外にも色々対応しているので行けるだろうと思っていました。しかし、対応するプロトコルには4-over-6はありませんでした。 6to4(IPv6-in-IPv4Tunnel)はあるのですが、欲しいのは逆なんだよなあ…。。IPIPトンネルもあるのですが、これはv4アドレス同士のトンネルを張るためのプロトコルで、v6アドレスを設定することはできませんでした。
 調べてみるとDebianでのチュートリアルがあったのでip -6 tunで設定できるかと思いましたが、どうやら入っているのはiproute2ではなくiproute1(もしくはBusybox的な何か?)が入っているようで、ip -6 tun addネームスペースは実装されていませんでした。Linux自体は対応しているので、需要が増えてくれば対応してくれる気もしますが、現状どうやってもトンネルは作れませんでした。

Vyattaの対応


 対応しているトンネル方式一覧にはあるので、多分問題なく行ける気がします。しかし、コントリビューター以外がダウンロードできるのはdailyのバッチビルドのOSのみで、個人的な経験ですがdd-wrtやpfsenseなどでdailyビルドについてはあまりいい思い出がないので導入をためらってしまいました。

 どれも微妙な状況だったので、どうしようかなあと思いましたが、Debianでのチュートリアルがあるので、一旦素のDebianでまず接続ができるかどうかを試してみることにしました。iptablesはよく忘れるので、できればWebUI持ってるOSが良かったのですが。CentOS?なんで家でまで社畜しないといけないんですか…。

Debianで接続を試してみる


 チュートリアルにあるように、まずは割り振られたIPをそのまま使って接続を試してみます。

ip l add link ens224 name vlan1000 type vlan id 1000
ip -6 tun add sit1 mode ipip6 local <自動でもらったIPv6> remote 2404:8e00::feed:140 dev vlan1000
ip link set dev sit1 up
ip a add dev sit1 <割り振られたIPv4>
ip route add default dev sit1

 さて、これでping 1.1.1.1などを試してみますが、案の定通信できません。

いろいろ調べてみる


 調べてみると、先駆者の方がいたので色々参考にしました。
https://y2web.net/blog/inet/now-available-fixed-ipv4-service-in-interlink-8229/
 こちらの方が調べたように、特定のURLに対してクエリを飛ばす必要があるようです。試しにcurlで突っついてみます。ここでやっとユーザーとパスワードの出番が来ます。

curl "http://update.transix.jp/request?username=<もらったユーザーID>&password=<もらったパスワード>"

 しかし、RAだけだとDNSまでもらえないので、update.transix.jpが引けませんでした。DS-Lite で接続しているOpenWrtでは引けたので、そちらでDNSを引いて直接IPにして実行しました。IPは変わる可能性があるので直接指定はおすすめしませんが、まずは接続を確立したいので一旦直接指定で進めます。

curl "http://[2404:8e00::feed:400]request?username=<もらったユーザーID>&password=<もらったパスワード>"
→OK

 OKが帰ってきたので行けるだろうと思いましたが、まだ駄目でした。上記ブログにあるように、どうやらアドレスを::feedにしないといけないようです。インターフェースIDってそういうことか…なんでそういう事するの…

ip -6 add add <割り振られたPrefix>::feed/64 dev vlan1000
ip -6 add del <RAでもらったIPv6> dev vlan1000
curl "http://[2404:8e00::feed:400]request?username=<もらったユーザーID>&password=<もらったパスワード>"
→OK

 この状態でping 1.1.1.1などを実行すると、ようやく応答が帰ってきました。やったぜ。

再起動後にも自動接続をするようにしたい


 接続は確立できたので、今回手でやった部分をうまくOSの仕組みに組み込んでいきます。 まずはDNSが引けないところとIPv6を手打ち指定しているところがイケてないので、これらをどうにかします。シェルスクリプトで組んでしまえばなんとでもなりますが、できればそれを避けてOSの標準機構で処理させていきたいと思うので更にいろいろ調べます。

 DNSをもらうためにはDHCPを受ける必要がありますが、inet6 dhcpを指定するとSLAACではなくステートフルDHCPv6で受けようとしているのか、ifupのときに永遠に何かを待ち続けてしまうので、公式マニュアルを参考にSLAACを受けるために以下の設定が必要でした。

#---/etc/network/interfaces---
auto ens224.1000
iface ens224.1000 inet6 auto
dhcp 1
accept_ra 1

 この設定でifup時に/etc/resolv.conに必要な情報が更新されるようになったので多分合ってる気がするのですが、正直あっているのかいまいち自信がありません…。しかし、これだけではアドレスがfeedにならないので、疎通時にホスト部を指定するためにはどうすればいいかと調べてみると、ip token set ::feed dev <IPv6を受けるインターフェース名>と指定すればいけるようでした。

 ただ、これを標準のオプションで指定する方法はないようなので、pre-upで指定するしかありませんでした。

#---/etc/network/interfaces---
auto ens224.1000
iface ens224.1000 inet6 auto
dhcp 1
accept_ra 1
pre-up /sbin/ip token set ::feed dev ens224.1000

 とりあえずこの設定でIPv6周りの設定は再起動後も要件を満たすようになりました。ちなみに受け取ったDNSは以下でした。

#---/etc/resolv.conf---
search flets-east.jp. iptvf.jp.
nameserver 2404:1a8:7f01:b::3
nameserver 2404:1a8:7f01:a::3


 次にトンネルの部分ですが、これが問題でした。Debian 10に入っているifupではインターフェース種類にinet6 tunnelを指定できなかったため、ifup2パッケージを入れ以下の設定をしましたがだめでした。

auto sit0
iface sit0 inet6 tunnel
mode ipip6
dev ens224.1000
local <割り振られたPrefix>::feed
remote 2404:8e00::feed:140
address <割り振られたIPv4>
post-up /sbin/ip route add default dev sit0
post-down /sbin/ip li del sit0

 トンネルはできるのですが、元になるインターフェース(dev ens224.1000の部分)がうまく入らないため、sit0@NONEというインターフェースが出来上がり、またlocalのIPも指定したものが入りませんでした。

 そもそもPrefixが変わってもip tokenで対応できるようにしたのに、localを直接指定するのがイケてないですね…。いろいろ調べたのですが結局解決できなかったなめ、ifup2を消してifupを入れ直し、以下のスクリプトで対応することにしてしまいました。

# --- mkv6tun.sh ---
#!/bin/bash
PATH=$PATH:/usr/sbin/
DEV="$1"
TUN="$2"
REMOTE="2404:8e00::feed:140"
IPADDR="<もらったIPv4>"
LOCAL=`ip -6 a s dev $DEV|sed -nr "s/^\s+inet6 ([^(fe80)][0-9a-f:]*)\/.*/\1/p"`
USER="<もらったユーザーID>"
PASS="<もらったパスワード>"

ip -6 tun add $TUN mode ipip6 local $LOCAL remote $REMOTE dev $DEV
ip l se up $TUN
ip l se mtu 1460 dev $TUN
ip a ad dev $TUN $IPADDR
ip r add default dev $TUN

while :; do
ping -c1 -w1000 update.transix.jp
if [ $? -ne 0 ] ; then
sleep 1
else
logger update url: `/usr/bin/curl -s "http://update.transix.jp/request?username=${USER}&password=${PASS}"`
break
fi
done&


 このスクリプトは引数に "元になるインターフェース" "作りたいトンネル名"を指定するとよしなにやってくれます。curlのところは実際に通信が通るようになるまでちょと時間がかかるので、それをバックグラウンドでやるための処理です。それをしないとsystemdがいつまでもその処理を待ってしまうのでそれの対応です。

 まあ、割り振られるPrefixが変わることはそうそうないので、一度実行すればしばらくは不要な気もしますが、念の為実行するようにしました。思いつきで5分くらいで作ったスクリプトなので雑ですが、とりあえず動いているので大丈夫そうです。これをinterfacesのpost-upに組み込みます。

#---/etc/network/interfaces---
auto ens224.1000
iface ens224.1000 inet6 auto
dhcp 1
accept_ra 1
pre-up /sbin/ip token set ::feed dev ens224.1000
post-up /opt/script/mkv6tun.sh ens224.1000 sit0

 再起動後、curl checkip.amazonaws.comなどで指定したIPが返答されることを確認したら、無事に自動起動の設定が完了です。ここにくるまでに2日かかってしまいましたが。

iptablesを書く


 そのままではルーターにならないので、NATをするためのiptabesを書きます。/etc/sysctl.confにnet.ipv4.ip_forward=1を追記した後、sysctl -pで反映させる必要があります。iptablesについては一般教養だと思うのであまり深く書きませんが、参考設定としてiptables-saveの出力をおいておきます。ens192というのが内部のLANインターフェースという想定で、内部からの接続はガバガバに受け付けます。

#---/etc/iptables.up.rules---
*nat
:PREROUTING ACCEPT [889:57084]
:INPUT ACCEPT [60:10005]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A POSTROUTING -j MASQUERADE
COMMIT
*mangle
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -o sit0 -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
COMMIT
*filter
:INPUT DROP [32:1744]
:FORWARD ACCEPT [1643:1853819]
:OUTPUT ACCEPT [360:64590]
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state ESTABLISHED -j ACCEPT
-A INPUT -i ens192 -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A FORWARD -i ens192 -j ACCEPT
COMMIT

 -A POSTROUTING -o sit0 -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtuが重要で、これをしないとMTU不整合で見えないページが出てきたりします。iptables < /etc/iptables.up.rulesで設定を反映させます。

 v6の方もガバガバなので多少締めます。 2404:8e00::feed(Transixのトンネル先)からの接続はガバガバに受け付けます。必要最低限に絞る作業に疲れました。

#---/etc/ip6tables.up.rules---
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [1570:205385]
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state ESTABLISHED -j ACCEPT
-A INPUT -s fe80::/10 -d fe80::/10 -p udp -m state --state NEW -m udp --sport 547 --dport 546 -j ACCEPT
-A INPUT -s 2404:8e00::feed:140/128 -j ACCEPT
-A INPUT -p icmp6 -j ACCEPT
COMMIT

 -A INPUT -s fe80::/10 -d fe80::/10 -p udp -m state --state NEW -m udp --sport 547 --dport 546 -j ACCEPTが重要で、これを指定しないとDHCPv6を受け付けられません。ハマりました。こちらもip6tables </etc/ip6tables.up.rules で反映させます。

 これらの設定をifup/ifdown時に反映させるために、/etc/network/if-pre-up.d/iptablesというスクリプトを作成します。+xで実行権限を付けないと反映されないので注意です。あとシバン(#!/bin/bash)も忘れず指定してください。

#---/etc/network/if-pre-up.d/iptables---
#!/bin/bash
/sbin/iptables-restore < /etc/iptables.up.rules
/sbin/ip6tables-restore < /etc/ip6tables.up.rules

 これで無事に何度再起動してもルーターとして自動起動してくるようになります。長かった。

作業の要約


 長くなってしまったのでまとめます

ipip6トンネルを作成するためのスクリプト作成


/opt/script/mkv6tun.shなどとして作成します。chmod +xで実行権限を与えるのを忘れずに

#!/bin/bash
PATH=$PATH:/usr/sbin/
DEV="$1"
TUN="$2"
REMOTE="2404:8e00::feed:140"
IPADDR="<もらったIPv4>"
LOCAL=`ip -6 a s dev $DEV|sed -nr "s/^\s+inet6 ([^(fe80)][0-9a-f:]*)\/.*/\1/p"`
USER="<もらったユーザーID>"
PASS="<もらったパスワード>"

ip -6 tun add $TUN mode ipip6 local $LOCAL remote $REMOTE dev $DEV
ip l se up $TUN
ip l se mtu 1460 dev $TUN
ip a ad dev $TUN $IPADDR
ip r add default dev $TUN

while :; do
ping -c1 -w1000 update.transix.jp
if [ $? -ne 0 ] ; then
sleep 1
else
logger update url: `/usr/bin/curl -s "http://update.transix.jp/request?username=${USER}&password=${PASS}"`
break
fi
done&


/etc/network/interfacesの追記


 今回はens224のVLAN1000がWANになるNICですが、よしなに変えてください。post-upで上のスクリプトを指定します。

auto ens224.1000
iface ens224.1000 inet6 auto
dhcp 1
accept_ra 1
pre-up /sbin/ip token set ::feed dev ens224.1000
post-up /opt/script/mkv6tun.sh ens224.1000 sit0
post-down /sbin/ip li del sit0


iptables周りの設定


 NAT/パケットフォワーディングの設定を書きます。昔ながらのiptables-save形式ですが、他にも方法があればそちらでもいいと思います。ens192がLANインターフェースという想定です。
/etc/iptables.up.rules


*nat
:PREROUTING ACCEPT [889:57084]
:INPUT ACCEPT [60:10005]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A POSTROUTING -j MASQUERADE
COMMIT
*mangle
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -o sit0 -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
COMMIT
*filter
:INPUT DROP [32:1744]
:FORWARD ACCEPT [1643:1853819]
:OUTPUT ACCEPT [360:64590]
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state ESTABLISHED -j ACCEPT
-A INPUT -i ens192 -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A FORWARD -i ens192 -j ACCEPT
COMMIT


/etc/ip6tables.up.rules

*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [1570:205385]
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state ESTABLISHED -j ACCEPT
-A INPUT -s fe80::/10 -d fe80::/10 -p udp -m state --state NEW -m udp --sport 547 --dport 546 -j ACCEPT
-A INPUT -s 2404:8e00::feed:140/128 -j ACCEPT
-A INPUT -p icmp6 -j ACCEPT
COMMIT


/etc/network/if-pre-up.d/にiptablesというスクリプトを作成します。+xで実行権限を付けないと反映されないので注意です。あとシバン(#!/bin/bash)も忘れず指定してください。

/etc/network/if-pre-up.d/iptables

#!/bin/bash
/sbin/iptables-restore < /etc/iptables.up.rules
/sbin/ip6tables-restore < /etc/ip6tables.up.rules


測定結果


 速度の測定結果は以下です。
https://beta.speedtest.net/result/9878034837



 PPPoEは下り30Mbps程度しか出ないことも多々あったのでだいぶ良くなったと思います。まあPPPoEも最初は数百Mbps出ていたので、こちらもトンネル先が詰まるまでの時間の問題かもしれませんが…。

 測定中の負荷は、Xeon 2695v2の上で動くVM(2vCPU/2GB/vmxnet3)ですが、atopで見ている限り1コアあたり20%程度irqに持っていかれる程度で、1Gbps環境では大した負荷ではないようです。まあiptablesにルールも大したこと書いてないので、これが増えてきたらどうなるかわかりませんが、最近の高クロックなCPUなら全く問題ないと思います。組み込み向けのCel N3000などでも物理で動かす限りは1Gbps程度なら問題ないと思います。

まとめ


 現状ではお手軽に、とは言えないものの、仮想環境(Linux)でもZoot Native 固定IP1を使うことは可能だとわかりました。transix IPv4接続(固定IP)形式を利用しているのであればほかでも同様だと思います。10G クロスの契約をしてもこの方法は使えそうですね。

 ただ、苦労をしたくないのであれば動作検証済みのネットワーク機器を入れるのがいいかと思います。実際途中で心が折れて中古のIX2106あたりを買おうかと思いました。あと少しで動きそうだけどなにかが足りない、という状況は、解決できないけど諦めもつかないという一番泥沼状態になりやすいですね。後半の動機は意地でした。

 Shorewallなどの検証もしてから切り替えようかと思ってるので実運用はまだできていませんが、いずれ切り替えていきたいと思います。固定IP1を契約した状態であっても(サポート的にはどちらか一方という回答をもらったものの)DS-Lite は利用できるので、併用して使っていくのはありだと思いました。

おわり

[ 8 コメント ] ( 3234 回表示 )   |  このエントリーのURL  |  $star_image$star_image$star_image$star_image$star_image ( 3 / 1066 )  |  
【HW】新しめのFortigateに使われてるACを自作する 
 かなり更新をサボっていたので久々の更新です。Confluenceもメモ書きとして契約してしまっているのでこのブログをどうしようか悩んでいるのでいるのですが、しばらくは生かしておこうかと思います。さて、ちょっと前に秋葉原で捨て値で売っていたFortigate 40Cをいくつか買ってみたのですが、ACが付いてこなかったためつくってみました。




 まず、このコネクタの名称の知識がなく調べる手がかりがなかったので、Googleの画像検索やら各レセプタの形状や名称一覧などを大量に調べました。その結果、どうやらMolex 5557の4.2ミリピッチというコネクタがそれっぽいようでした。


 コネクタやコンタクトピンについては、千石通商などに売っているようなのですが、SonicwallのAP(TZ-100)にも同型のコネクタが使われていて、そのACで基本的な動作確認が出来てしまったので「急ぎでもないし、より安価なモノタロウで何か買うついでにいつか買おう」と放置していました。(ちなみに買った時点ではぎりぎりライセンスが生きていたのでOSのアップグレードが出来ました。) そして先日、諸々を買う機会があったのでついでに興味本位で買ってみました。




今回買ったコネクタとコンタクトピンは以下の二つです。
Molex 5557コネクタ 5557-02R-210
https://www.monotaro.com/p/0856/1585/
コンタクトピン 5556T3L
https://www.monotaro.com/p/7593/9272/

コネクタについてはより安いこっちでもよかった気がします。
https://www.monotaro.com/p/0856/1472/

 とりあえずコネクタだけ形状が合うか確認しましたが、これであっているようでした。




 次に、起動できるACの極性を確認しましたが、爪がある方が+でその下がーになっているようです。




 極性が分かったのでピンをかしめていこうとしたのですが、専用の圧着機がないとつらいです。最終的にニッパーでかしめる技術を習得しましたが、何回かピンからケーブルがすっぽ抜けてブチ切れそうになったので、今回はやりませんでしたがハンダで軽くとめておくのが確実な気がします。(圧着とは…)

 絶縁のために(ビニールテープが見つからなかったので)養生テープで根本を軽く巻いたのですが、これが失敗でした。ただでさえコネクタの奥までピンを押し込むのが大変なのですが、このテープのせいで余計やりづらくなりました。電子工作になれている人やもっと几帳面な人であればこんなことをしないと思いますが、動けばいいだろ位な雑な気持ちでやった結果、無駄な苦労をしました。




 なんとかピンを奥まで押し込んでピンがロックされたことを確認したので、ちゃんとコネクタ内部のピン同士が接触していること、逆接になって爆発しないことを祈りながらACに繋いでみました。




 すると、電源の容量不足やピンの接触が甘いといったこともなく、爆発せずに無事起動してきました。コネクタからピンのすっぽ抜け防止に紫外線硬化樹脂などで後ろを固めるのがよりよいと思いましたが、必要な物を買うと割と高くなるうえに買っても使うことは多くなさそうなので今回は見送りました。

 作った感想ですが、コンタクトピンの圧着器を持っていないのであればおすすめしません。その辺の工具で済ませようとすると器用さというかコツが必要です。ラジオペンチやニッパーで代用は可能ですが、慣れるまでピンを4本無駄にしました。また、AC自体はオークションなどで1000円前後で売っているので、必要であればこっちを買うべきです。

 ただ、自分のようにジャンクでAC無しのFGをいくつか拾って、しかもACをいくつか欲しいけどACが本体より高いし12VのACは大量に余っているので自作したい、という貧乏な考えがあるのであれば作るというのも一つの手ではあります。
 しかし、カシメが不十分でケーブルがすっぽ抜けたりピンがしっかり奥まで入っていないためケーブルを動かすと接触不良で電源が落ちる、という事が起こるので(実際に起きて作り直した)、作ったとしても精々検証用にとどめておくのをおすすめします。

 ちなみに、このFGはFlets網内のv6折返しのテストに使おうと思っていたのですが、FortiOS 5.2だとIPv6の自動設定にDHCP6-PDやSLAACが使えず、かつNP6を搭載していないためv6の通信がCPU処理になってしまい残念なことになった(LAN内のv6NAT通信で200MbpsくらいでCPUが張り付く)ので、v6関係は諦めVDOMが使えた頃の軽量な4.0MR3に戻しました。v6のSNATができたのは良かったのですが…残念。

[ コメントを書く ] ( 712 回表示 )   |  このエントリーのURL  |  $star_image$star_image$star_image$star_image$star_image ( 3.1 / 1324 )  |  
【Network】Nuroを試してみた が… 
 最近、Fletsの回線がISP(OCN、オープンサーキット、インタリンクが対象)に関わらず特に19時前後が目に見えて遅いので、Nuroに興味を持っていました。
一応、1Gの線は引いているのですが、19時前後では
http://beta.speedtest.net/
のSoftEther社を選んでも大体3-50Mbps程度で、午前3時4時に同じく実行すると上下500Mbps程度出たりします。1G線を引いた直後はそれなりに速かったのですが、最近になって速度低下が目立つようになってきました。PPPoEの収容が限界に近いという話もあり、そろそろつらい感じです。

生活LANの午前3時頃の速度です。



同日の午後19時頃の速度です



中々にひどい

 某所でv6のIPIPトンネル張ってあれこれしようという話もあったのですが、残念ながらひかり電話が必要なため、NGN網内IPv6が受けられず、この方法は断念しました。

 そんなところにNuroを500円で体験できるワンコイン体験キャンペーン(すでに終了してます)があったので申し込んでみました。が、開通まで1ヶ月以上要しました…。

開通までの苦痛


 新規で申し込むにあたり、ページにあるように
1 宅外FCキャビネットから宅内へのファイバ引き込み (So-net施工)
2 電線からFCキャビネットへのファイバ引き込み (NTT施工)
という2ステップの工事があり、2回の日程調整および立ち会いが必要になります。

 1回目のSo-net側の工事は問題なく終わったのですが、2回目のNTT側の工事で問題が起きました。宅内工事の際に、次回訪問日程の確認を行い、同意を得たはずだったのですが、当日19時になってもNTTが現れませんでした。

 19時はさすがに遅すぎると思いSo-netのサポートセンターに連絡したところ、申し込みの際に自宅の住所を「東京都千代田区千代田1-1-1」といった住所をハイフン抜きで入力してしまい、「東京都千代田区千代田111」と入力してしまったため、NTT側から「そんな住所ねえよ」と差し戻しを食らっていたとのことでした。

 1回目の訪問が(おそらく施工者がよしなに解釈してしまったが故に)問題なく行われていたため、まさか入力ミスがあるとは気がつきませんでした。
 確かに自分の非ではあるのですが、そもそも何故リジェクトされた時点でこちらに連絡をしないのか、NTTも郵便番号が入ってるのだからそれくらい分かるだろこのクソ役所ども…という黒い気持ちを抑え、とりあえず内容を修正してもらい、いつ頃なら予定が取れるかという折り返しの連絡をしてもらうことにしました。ここで1週間のロス。

 そして連絡を待つこと4日…未だに連絡が来なかったので、さすがに遅すぎると再度サポートセンターに電話をしたところ、「大変申し訳ありません。こちら予約の取得が可能となっておりました。最短1週間後から取得可能となっておりますが、いかがなさいますか?」との返答。

わーーー!!御社には引き継ぎと社内コミュニケーションが苦手なフレンズ し か いないんだね!!!!くそーーーーーい!!! ほんまつっかえ…
 こちらから連絡しなかったら永遠に来なかったのではないでしょうか…まあSo-netに多くのことを期待することがそもそもの間違えであり、経験上過去にも実績(悪い意味で)があるので、納得は出来ます。
  また、サポートセンターに繋ぐ際には非常に長くの時間「ただ今混み合っているので少々お待ちください」の自動音声を聞く必要がある為、スピーカーホンにしてしばらく電話を放置する必要があります。SIPサーバやVoIP機の音声の途切れや揺れなどを確認するためのベンチマークの電話先としてはいいかもしれません。
  まあ、そのレベルで人的資源が足りていないと言う事なのでしょう。

 結局、宅外工事は申し込んでから1ヶ月以上経ってようやく完了しました。

開通後の苦痛


 NuroではGPONがグローバルIPをもつ仕様となり、配布するのは基本的にローカルIPのみと言うことは把握していたので、前もって今のネットワークを大きく変更しないでGWを追加するためのセグメントを作成していました。しかし箱を開けてみてびっくり、渡されたHG8045Dが思っていた以上にクズでした。

  VLANが切れないとかIPインターフェースを複数持てないとかは許せないながらも仕方ないとして、スタティックルーティングすらも切れないのです。2000円で買えるばっふぁろーのルーターやNTTから渡されるONUについているおまけルーターですらもその程度は出来るので、まさかこれができないとは思っていませんでした。

 はっきり言って、HGWとして渡される何かは「でんきにつなげるとあったかくなるみどりいろにひかるゴミ」です。 既存の物があり、要件にも合わず、極力無駄なことをさせたくなかったので、無線も含めDHCPやDNSプロクシなど不要な機能は全て無効にしました。
 せめてもの救いとしてはDMZ機能を持っているので、この「みどりいろにひかるゴミ」をどうにかするために既存のVMにNATをさせ、普段はそちらのVMをDMZとし、ポートフォワードなどの必要な機能はNAT-VMでどうにかすることにしました。pfsenseちゃんマジ天使
 もっとも、固定IPオプション付きの法人向けのGPONはその下にDHCPでグローバルIPを払い出してくれるので、ある程度複雑なネットワークであればそちらにするべきだとは思います。費用的に個人で出すには少しつらいですが。

 ひとつNuroの肩を持つとすれば、下り2Gbpsというのは確かにでます。2台のDell Latitude E7440(片方はCore i5 4510u/RAM16G、もう片方は4500u/8G)を「みどりいろにひかるゴミ」のLANポートにそれぞれ直接接続しスピードを測ったところ、タスクマネージャからみてもそれぞれで違うサーバから900Mbpsに近い速度はでていたので、たとえそれが速度測定サイトのみ加速する、いわゆる「チートブースト」であったとしても一応スペック通りと言えるとは思います。



 また、VMにNAT(宅内二重NAT)させたあとのスコアも、上りが若干落ちるものの十分な速度はでています。ショートパケットはどうだか分かりませんが。



 では実際のところはどうか、となると、JAISTや理研などからDebianのISOを落とすときには大体3-400Mbps位になるので、まあそんなところです。
 ただ、Flets側が腐る時間帯でもNuroでは大きな速度低下はないので、メリットはありました。

まとめ


・So-netに何か確認するときには自分から積極的に進捗に関して突っつこう
・ある程度複雑なネットワークがあると、渡されるHGWは「でんきにつなげるとあったかくなるみどりいろにひかるゴミ」
・ネットワークに関しては、「今のところは」悪くない

以上、愚痴でした。

[ コメントを書く ] ( 1393 回表示 )   |  このエントリーのURL  |  $star_image$star_image$star_image$star_image$star_image ( 3.1 / 1472 )  |  
【HW】RackSwitch G8124-Eのファンを交換してみた 



 3年くらい前にRackSwitch G8124-EをeBayで仕入れ、しばらく使用していたのですが、あるときにファンの一つが故障し、それまで30%くらいで回転していたファンが全て減退運転に入り、全て80%くらいで回転するようになりました。それまでは結構静かだったのですが、さすがに小型ファンの高速回転はうるさく、部屋のノイズ主成分(音的な意味で)になっていました。
 うるさい事と定期的にファン故障のトラップが飛ぶ以外は特に問題がないので(問題ですが)、故障後も放置してしばらく使っていましたが、運良く非常に安くApresia 130000が手に入ったので交換してしまいました。





 燦然と輝く真っ青なスイッチに、VLANを使った程度のL2ネットワークをさせるだけではオーバースペック感ありますが、まあそれなりに静かでいい感じです。
 その後、G8124は放置になっていたのですが、ふと直せるかどうか気になったのでふたを開けてみました。

 壊れたファンはSUNONのGM1204PQV1-8Aと言うファンで、他のファンはUltraFlo W40S12BUA5-52なのですが、何故かこれだけSUNON製のものになっていました。元のオーナーが同じように手で直したのでしょうか…。




 とりあえず、ファンの形状やコネクタは一般的なもののように見えたので、手元のゴミを漁ったら秋葉原でいつか役に立ちそうな気がして買った40ミリファンの連結した何かが出てきたので、それを分解して交換することにしました。




 多分Supermicroの保守パーツ的な何かだと思いますが、もはやこれが何であってもどうでもいいです。




 その中のファンにはSanAceの109P0412J3063が使われていました。むしろ他のも全てこれに交換してしまいたいレベルですが、とりあえず壊れた部分だけ交換します。

 交換して、ひとまず動くか電源ON。起動しましたが、その直後異臭が立ちこめたので真顔で即座にACを引っこ抜きました。幸い、発煙や炎上はありませんでしたが、部屋がICを過電流で焼いたときの臭いで包まれました。この臭いほんとに嫌いです…(嗅ぐ羽目になったシチュエーションでは大体ああああああなことになってるので)

 原因を確認してみると、コネクタは普通の3ピンなのですがアサインが違いました。これは死ぬ。何故確認しなかったし…。




 解決策として、SUNON製のファンのコネクタを切り取り、綺麗な芋ハンダ(汚い)で直そうかと思いましたが、半田ごてをしばらく使っていなかったので引っ張り出すのがめんどくさくなり、その代わり手元にあったブレッドボード用のジャンプワイヤを使う事にしました。




 その後おそるおそる起動してみると、とりあえずファンは順調に回っていたので、再び電源を落とし、ふたを戻しました。
 ふたを戻したあと、起動してみると、普段はファン故障でファンの回転数は落ちないのですが、今回は無事に回転数が落ちました。ファンの全回転時と比べ、20Wくらいの差がありました。
 コンソールに入ってみると、無事に回転数も取れていました。

RS G8124-E#show sys-info

System Information at 15:44:38 Mon Sep 5, 2016
Time zone: No timezone configured
Daylight Savings Time Status: Disabled

IBM Networking Operating System RackSwitch G8124-E

Switch has been up for 0 days, 0 hours, 12 minutes and 9 seconds.
Last boot: 15:32:42 Mon Sep 5, 2016 (power cycle)

MAC address: xx:xx:xx:xx:xx:xx IP (If 1) address: 0.0.0.0
MGMT-A Port MAC Address: xx:xx:xx:xx:xx:xx
MGMT-A Port IP Address (if 127): 172.20.1.6
MGMT-B Port MAC Address: xx:xx:xx:xx:xx:xx
MGMT-B Port IP Address (if 128): 192.168.51.50
Hardware Revision: 8
Board Revision: 2
Switch Serial No: xx:xx:xx:xx:xx:xx
Hardware Part No: xx:xx:xx:xx:xx:xx Spare Part No: xx:xx:xx:xx:xx:xx
Manufacturing date: 10/46


Software Version 7.9.11 (FLASH image2), active configuration.
Boot kernel version 7.9.11



Temperature Sensor 1: 21.5 C
Temperature Sensor 2: 27.0 C
Temperature Sensor 3: 26.00 C
Temperature Sensor 4: 43.75 C
Temperature Sensor 5: 35.50 C

Warning at 85C and Failure at 100C

Speed of Fan 1: 7964 RPM (75 PWM)
Speed of Fan 2: 8169 RPM (75 PWM)
Speed of Fan 3: 8023 RPM (75 PWM) <---故障したファン
Speed of Fan 4: 8503 RPM (75 PWM)
Speed of Fan 5: 8256 RPM (75 PWM)
Speed of Fan 6: 8120 RPM (75 PWM)

System Fan Airflow: Front to Rear

State of Power Supply 1: On
State of Power Supply 2: On


 自分の不確認により一つSanAceの109P0412J3063が犠牲になりましたが、最終的には無事に直すことが出来ました。直しても今後使う予定はないので微妙ですが、某所のラボネットワークの変更時に持ち込もうかなあ…。

 ピンアサインにさえ気をつければ一般品でも交換できるので、保守のないスイッチで、もし同じようにファン故障で困っている人がいたら試す価値はあると思います。

[ コメントを書く ] ( 1126 回表示 )   |  このエントリーのURL  |  $star_image$star_image$star_image$star_image$star_image ( 3 / 1676 )  |  

<戻る | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 進む> 最後へ>>