キーボード修理

イメージ
前回 調子が悪くなったと書きましたが、部品が手配できて時間が取れたので直しました。 茶軸のスイッチを購入 Cherryの茶軸は 10個で1,399- ということで購入。 本当は1個で充分なんだけど、仕方なく残りは予備部品として保管。 作業手順 キーボードの裏側ネジを3箇所外します。 左右と中央の丸シールの下。 左右はパッドを貼っているので、少しめくって外します。 (あとで綺麗に戻るので心配なしです) ケーブルが出ている方は、スッと外れ、手前(下側)は、内部に爪が有るので、ピックやカード、マイナスドライバなどで少し隙間を開けるようにして広げれば外れます。 自分は親指の爪で空きました。 今回は「E」が調子悪いので、該当のピン2箇所をハンダ吸いで綺麗に取り除いて、裏側から引き抜いて完了。 基板にしっかりとどのキーかがプリントされているので分かりやすいですねぇ 入手した新品の茶軸を差し込んでハンダ付けします。 この時点で動作確認が可能になるので、直したキーとその周辺が正しく入力できるのをチェック。 問題なく、無事に動作しました。 最後にカバーを取り付けて完了! 残ったのは9個の茶軸…。 今回の費用 Cherryの茶軸10個セット :1,399- キーキャップ引き抜き工具 : 475-  ちなみに10個セットには、簡易引き抜きがついてきますが、ちゃんとしたもののほうが楽に作業できます。(昔買ったのに、どこかに行ってしまったので再購入)  ということで、1900円ほどで完治しました。  手間賃考えると買ったほうが安いかも(笑)

proxyのufwで苦戦

ubuntuをproxyに設定

今回は、無線LANルータが1台設置されていたのだけれど、無線は減らしていきたいのと、細かなコントロールが、逆に面倒なのでLinuxマシンをルータ兼proxyとして動作させることにした。

過去、Vine LinuxやRedHat、CentOSなどをよく使っていたのだけれど、最近非常に使い勝手が良くなっているのと、ちょうどLTS版の12.04が出て、そろそろ不具合も改善されている頃なので、思い切って利用して見ることにした。
もちろん、デスクトップ版は11.10も11.04も…結構使ってきているので、別に心配はしていないんだけどね。

さて、ubuntuをインストールして、eth0は外向け、eth1は内部で192.168.0.1とする。さらにWindows Serverは192.168.0.2として、Windows Serverからしか問い合わせに答えない設定を多々するかたちで…。
あとは、dnsmasqとsquid,squidGuardを入れて、先のntpサーバとしても利用する。

そんなに奇をてらった設定ではないので、楽勝かと…。

ufwを調べて設定する

以前は、iptablesを利用してマスカレードしたり、ポート塞いだり、開けたりというのが、ごく一般的でしたが、9.10の頃からufwなんてツール(iptablesのwrapper)が利用できるようになっております。
これまで、縁がなかったのだけれども、簡単に設定できるらしいという情報は掴んでいたので、こいつを使って設定してみる。

いちいちsudoは面倒なので、最初にrootに上がって作業することに。

$ sudo -s
# ufw reset
# ufw enable
# ufw allow proto udp from 192.168.0.2/32 to any port 53
# ufw allow proto tcp from 192.168.0.0/24 to any port 3128
# ufw allow proto tcp from 192.168.0.2/32 to 192.168.0.1 port 5900
# ufw disable && ufw enable
# ufw status

ほう、まあ簡単やね。
ただ、masqueradeを設定するには、設定ファイルを直接書かないといけないということで、まずは/etc/default/ufw

DEFAULT_FORWARD_POLICY="DROP"

DEFAULT_FORWARD_POLICY="ACCEPT"
に変更。

続いて、/etc/sysctl.confの

#net/ipv4/ip_forward=1
がコメントアウトされているので、#を削除。

最後に/etc/ufw/before.rulesに修正を加える。

# nat Table rules
*nat
:POSTROUTING ACCEPT [0:0]
# Forward traffic from eth1 through eth0.
-A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE
# don't delete the 'COMMIT' line or these nat table rules won't be proceessed
COMMIT

これを最初のコメントブロックの後に書き込めと…。

すべての作業が終わったら、
# ufw disable && ufw enable
これで完了。

ところが…

自宅で設定した感じでは、特に問題は無さそうだったんだけど…。
現地では、eth0側は光を使っているので、pppoeで接続する。
そこで、pppoeconfを使って設定をしてやることで、接続はできた。OK簡単だ。
eth0側がppp0だと表示がされる。

この時、ネットワークマネージャを利用して設定しておけば、良かったのかもしれない。
あとで調べてみると、古い設定方法だと書かれているじゃないですか…。

このマシンから外部への接続はOK。ブラウザも利用できるし、pingも通る。

なのに、内部のマシンから、どうも様子がおかしい…。外部への接続が通らない。
といっても、これ以上触りようがない。

結構すったもんだした挙句、基本通りに初めからやり直すことに。
しかも、wrapperなんて使わずに、iptablesで書きなおすことにした。で@ITなんかからサンプルを引っ張りだして、その場でカキカキ…。とりあえずiptables.shを作成してテストすることに。


#! /bin/sh
trusthost='192.168.0.2'
internal_ip='192.168.0.0/24'
my_internal_ip='192.168.0.1'
if_inner='eth1'
if_outer='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 -P OUTPUT ACCEPT
iptables -P FORWARD DROP
iptables -A FORWARD -i $if_inner -o $if_outer -s $internal_ip -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
#########
#loopback
#########
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
#########
#icmp
#########
iptables -A FORWARD -i $if_inner -p icmp -j ACCEPT
#######################
#dns internal-> myhost
#######################
iptables -A INPUT  -p udp -s $internal_ip --dport 53 -j ACCEPT
iptables -A OUTPUT -p udp -d $internal_ip --sport 53 -j ACCEPT
iptables -A INPUT  -p tcp -m state --state NEW -s $internal_ip --dport 53 -j ACCEPT
#######################
#squid internal-> myhost
#######################
iptables -A INPUT  -p tcp -s $internal_ip --dport 3128 -j ACCEPT
#######################
#vnc
#######################
iptables -A INPUT  -p tcp -s 192.168.0.2 -d 192.168.0.1 --dport 5900 -j ACCEPT
#######################
#mail
#######################
iptables -A FORWARD -p tcp -s $internal_ip --dport 110 -j ACCEPT
iptables -A FORWARD -p tcp -s $internal_ip --dport 995 -j ACCEPT
iptables -A FORWARD -p tcp -s $internal_ip --dport 25  -j ACCEPT
iptables -A FORWARD -p tcp -s $internal_ip --dport 587 -j ACCEPT
iptables -A FORWARD -p tcp -s $internal_ip --dport 465 -j ACCEPT
#######################
#windows update?
#######################
iptables -A FORWARD -p tcp -s $internal_ip --dport 443 -j ACCEPT
#################
#SNAT(masquerade)
#################
iptables -t nat -A POSTROUTING -o $if_outer -s $internal_ip -j MASQUERADE
################################################
#Outgoing packet should be real internet Address
################################################
iptables -A OUTPUT -o $if_outer -d 10.0.0.0/8 -j DROP
iptables -A OUTPUT -o $if_outer -d 176.16.0.0/12 -j DROP
iptables -A OUTPUT -o $if_outer -d 192.168.0.0/16 -j DROP
iptables -A OUTPUT -o $if_outer -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

問題点がわかった!

このスクリプトを使っても、上手くいかない。もちろん、もっと削って1ブロックずつ試したりしているんだけど…。

結論から言うと、外側のinterfaceの扱いが間違っていた。
if_outer='eth0'
と書いていたのだけれど、
if_outer='ppp0'
にすれば、全部OKだった。

物理的には、eth0が外部につながっているんだけど、どうやらppp0で設定する必要があるらしい。
いままで、ルータ内部でしかiptablesを設定したことがなかったので、気づかなかった。

ということは、ufwでも同様だったのかもしれないけれど、もう動くようになったものを再度設定し直す勇気も気力もないので…。

これでOKとしましょう。
あとは忘れず、
#service iptables-save
で保存をかけておきます。

思い込みはやっぱり面倒ですな。おかげで半日無駄に過ごしました…。


コメント

このブログの人気の投稿

WPS Officeで日本語入力ができない

VirtualBoxでUSBから起動

Virtualboxとnvidiaドライバ