linux iptablesでsambaの許可

2011/03/15

色々失敗したのをだらだら書くのは面倒だから成功した内容のみ書く。

記述方法の確認

$ iptables -A INPUT -p udp –dport 137:139 -j ACCEPT

上記の命令は、「チェイン:INPUT」に「ルールを追加(-A)」。
内容は、「プロトコル(-p)」が「udp」で「送信先のポート(–dport)」が「137と139(137:139)」のときは「許可(-j ACCEPT)」。
ポートの137と139はsamba。

実際に記載してみる

基本的な流れとしては、ルールをチェック。
次にルールを追加して、保存。
ルールの再チェック。
iptablesを再起動して、Windowsで接続チェック。

ルールの確認

$ sudo iptables -L

これは見るだけ。見て、どこにルールを追加するかを考える。

私の場合は「RH-Firewall-1-INPUT」というチェインにルールを追加することにする。
「RH-Firewall-1-INPUT」にはルールが13行ある。

「Chain RH-Firewall-1-INPUT」のすぐ下の行はカウントしないので下記例のような感じで数える。

 : Chain RH-Firewall-1-INPUT (2 references)
 : target prot opt source destination
1: ACCEPT all — anywhere anywhere
2: ACCEPT icmp — anywhere anywhere icmp any
3: REJECT all — anywhere anywhere reject-with icmp-host-prohibited

sambaの許可のルールを追加

$ sudo iptables -I RH-Firewall-1-INPUT 13 -p udp –dport 137:139 -j ACCEPT

「RH-Firewall-1-INPUT」の最後にある「reject-with icmp-host-prohibited」の前にルールを追加しないといけないから13行目に追加する。

「reject-with icmp-host-prohibited」は「前述以外は全部拒絶」的な意味になる。
そのため、この前にルールを追加する必要がある。

追加する際は「-A」ではなく「-I」。
「RH-Firewall-1-INPUT」の13行目に追加するので「13」。

次に、tcpもACCEPTしてあげる。

$ sudo iptables -I RH-Firewall-1-INPUT 14 -p tcp –dport 137:139 -j ACCEPT

「udp」の方を追加したので、行数が一つ増えて「14」にした。
順番が逆でも問題ないかもしれないけど…。

ルールの確認

$ sudo iptables -L

今回も見るだけ。間違ってたら修正してあげる。
修正するのが面倒だから、削除して追加すればいい。
※修正もやり方を調べたら簡単かも。

ルールの削除

削除は「-D」を使う。
あとはどのチェインの何番目を削除するのかを指定する。
下記は「チェイン:RH-Firewall-1-INPUT」の「2番目」を削除する場合。

$ sudo iptables -D RH-Firewall-1-INPUT 2

iptableの保存

再起動する際に設定がクリアされるらしいので保存してあげる。

$ sudo service iptables save

iptableの再起動

$ sudo service iptables restart

参考:くわぞうメモ: iptableのルールを追加するiptables 設定 – ルールの削除

新着(ニュース関連以外)

2018-07-26
年賀状で「新春」とか書くけど・・・何故なんだろうと8月を目前にした今、疑問に思った。
2018-05-16
PHPで画像のヘッダ情報(?)の「Orientation」を元に画像回転させたい。
2018-03-05
Android Studioをインストール。エミュレータを軽くするトコまで終わらせたかったけど、挫折した。
2018-02-23
プッシュ通知について調べてた時にでてきたServiceWorker。そのServiceWorkerについてのメモ。
2017-12-13
jqueryで取得したDOM要素をオブジェクトじゃなくて、配列で受け取りたい