【鉄壁】iptablesの使 ..
577:login:Penguin
08/07/13 06:14:03 hmSEn1ns
iptables -A INPUT -j LOG で獲ったログの内容で、
MAC=XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX
という部分があります。
16進数で14バイトのデータを表しているようですが、
イーサーネットのMACアドレスを表しているようで、そうでないようで、
よくわかりません。
イーサーネットのMACアドレスは通常6バイトです。
この意味をご存知の方がおられましたら教えてください。
ちなみに、使用している iptables は ver.1.2.7a です。
578:login:Penguin
08/07/13 16:32:09 KrnMSNSr
>>577
これがでんじゃね? 6+6+2 で14バイト
struct ether_header
{
u_int8_t ether_dhost[ETH_ALEN]; /* destination eth addr */
u_int8_t ether_shost[ETH_ALEN]; /* source ether addr */
u_int16_t ether_type; /* packet type ID field */
} __attribute__ ((__packed__));
579:login:Penguin
08/07/13 21:50:16 hmSEn1ns
>>578
ありがとうございます。大変参考になりました。
580:下っ端10年
08/07/15 00:58:58 ws2H6nIo
フラグメントの処理、自信のある方いますか?
iptables -A OUTPUT -f -d 192.168.1.1 -j DROP
こんな霊があったんですけど理解不足で
必要なのはFORWARD、INPUT、じゃないかと思いますが、
とりあえずこれ入れとけ。間違いない!とか
ここ見て出直して恋とか♪お願いします
581:login:Penguin
08/07/15 01:18:46 L/KarHmr
>>580
マニュアルくらい読め。 それと、そのマシンのIP設定くらい書け。
意味:
「断片化されたパケットの宛先が192.168.1.1ならば破棄する」
通常のパターンだと、192.168.1.1はルータだな。
要するに、外部に送信される妖しいパケットを叩き落とす設定。
582:下っ端15年
08/07/15 14:37:00 ws2H6nIo
ありがとうございます。
心配事なんですがセッションが盗まれてその中に攻撃パケットを流して
ブラウザーの脆弱性が攻撃されたりすることってありますか
盗まれなくてもIPが判っていたら紛れ込ますとか
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
上記の設定を加える?以外に安心策とかあればお願いします。
iptables -P INPUT DROP
それともこれだけで十分なのですか
583:login:Penguin
08/07/15 16:26:44 0LMTpKxH
>>582
あるかどうかという点でいえば「ある」。
ただそれを心配するのならインターネットに接続せず切り離しておけば良かろう。
584:login:Penguin
08/07/15 22:54:06 Gfj6ql9u
>>582
セキュリティに「これだけで十分」はないよ。
-j ACCEPTなルールは(単独で見れば)許可の追加なんだから安心材料にはならない。
闇雲に心配するより先にマニュアル嫁。
585:見習い18年
08/07/16 03:38:44 jnmMI8rz
こんなの作ってみました。クライアント専用です。
メールの問い合わせはWEBの見てから作ろうと思います。
皆さんでこれを育ててください。
僕が育てると3ヶ月かかりそうなんです。
#/bin/sh
# ルールの初期化
/sbin/iptables -F
/sbin/iptables -t nat -F
# すべてのパケットを拒否
/sbin/iptables -P INPUT DROP
/sbin/iptables -P FORWARD DROP
/sbin/iptables -P OUTPUT DROP
# ループバックアドレスに関してはすべて許可
/sbin/iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
/sbin/iptables -A OUTPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
#LOG# Internetからの送信元IPアドレスがプライベートアドレスのパケットを入り込む前に破棄
/sbin/iptables -A INPUT -i eth0 -s 10.0.0.0/8 -j DROP
/sbin/iptables -A INPUT -i eth0 -s 172.16.0.0/12 -j DROP
/sbin/iptables -A INPUT -i eth0 -s 192.168.0.0/16 -j DROP
586:見習い卒業
08/07/16 03:44:43 jnmMI8rz
#LOG# Internetからの送信先IPアドレスがプライベートアドレスのパケットを出て行く前に破棄
/sbin/iptables -A OUTPUT -i eth0 -d 10.0.0.0/8 -j DROP
/sbin/iptables -A OUTPUT -i eth0 -d 172.16.0.0/12 -j DROP
/sbin/iptables -A OUTPUT -i eth0 -d 192.168.0.0/16 -j DROP
#LOG#Internetからの宛先IPアドレスがプライベートアドレスのパケットを破棄
(NetBIOS関連のパケットは、Internetに出さない)
/sbin/iptables -A INPUT -i eth0 -d 10.0.0.0/8 -j DROP
/sbin/iptables -A INPUT -i eth0 -d 172.16.0.0/12 -j DROP
/sbin/iptables -A INPUT -i eth0 -d 192.168.0.0/16 -j DROP
#LOG#フラグメント化(怪しい)されたパッケトは破棄 (このルール自体が怪しい)
/sbin/iptables -A OUTPUT -f -d 192.168.1.1 -j DROP
/sbin/iptables -A OUTPUT -f -d 192.168.1.1 -j DROP
#ブラウザーWEB閲覧用 (このルールも怪しい)
/sbin/iptables -A OUTPUT -i eth0 -o tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
#(DHCP問い合わせ用)
/sbin/iptables -A OUTPUT -i eth0 -p tcp -d (ルーター) --dport 67 -j ACCEPT
/sbin/iptables -A OUTPUT -i eth0 -p tcp -d (ルーター)--dport 68 -j ACCEPT
#(DNS)問い合わせ用)
/sbin/iptables -A OUTPUT -i eth0 -p tcp -d (ルーター) --dport 53 -j ACCEPT
# その(1)確立セッションのアクセスは許可
/sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT)
# その(2)接続戻りパケットを許可する
/sbin/iptables -A INPUT -i eth0 -m state --state ESTABLISHED -j ACCEPT
/sbin/ipchains-save
LOGの部分はlim...意味が難しくてではよろしくです。
ダメダメなのは判っています。
587:login:Penguin
08/07/16 10:29:06 AB1ESdB4
ダメダメです。
何がしたいのかさっぱりです。
グローバルIPを持ったインターネット直結のクライアントPCなのか、プライベートIPを持った
LAN内クライアントPCなのかすら不明。
前者ならプライベートアドレス絡みの設定は不要だし、後者ならLAN内の他のクライアントと
通信不能です。
それから、確立済みセッションのアクセスを許可する設定をいれるなら、その他の個別の外向き
の穴あけは一切不要です。
588:一から出直し
08/07/16 18:38:36 jnmMI8rz
はい。おっしゃるとおりです。
想定としては、ルーターにぶら下げるクライアントPCを考えていますが
その上でVitualBoxにWindowsを乗せてたりして走らせたいのです。
ゆくゆくは、ルーターとして使いまわしの利く雛形が作りたい出のです。
最後のアドバイスですが
ーA OUTPUT DROP
とどうしてもしたいのですがクライアントに必要なルールをアドバイスしてください。
/sbin/iptables -P OUTPUT DROP
/sbin/iptables -A OUTPUT -i eth0 -o tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
DHCPクライアントようだとかもいまいちどうすればいいのかぴんと来ないです
Mail関係はWEBのをいじれば何とかなると思っています。
PS.皆さんはNetBios?だけ防いでるみたいなんですけど通常はそれで大丈夫なんでしょうか?
589:login:Penguin
08/07/16 20:00:05 eQpwIRIV
>>588
何をしたいのかはっきりすれ。
590:login:Penguin
08/07/16 20:05:36 kFZg22Oc
OUTPUTは基本ACCEPTだと何か困ります?まぁ、人それぞれですが。
ルールですが、俺はなるべくシンプルに書くようにしてます。
>PS.皆さんはNetBios?だけ防いでるみたいなんですけど通常はそれで大丈夫なんでしょうか?
とりあえずこいつらがゴミパケだな。
135
137-139
445
1900
5353
591:login:Penguin
08/07/16 20:30:48 UBWifgR3
クライアントならこれで充分
iptables -P INPUT DROP
iptables -A INPUT -s 127.0.0.1/32 -i lo -j ACCEPT
iptables -A INPUT -s 192.168.1.2/32 -i lo -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
サーバーなら使うポートを開けていけばいい
592:login:Penguin
08/07/16 21:52:12 5/9UA2S9
うほっ、いい流れ
俺もクライアント用のルールを勉強させてくれ
593:一から出直し
08/07/17 00:11:34 nfCUoiJG
590さんありがとございます
591さんありがとございます
592さん一緒ににがんばりましょう
どうしてOUTPUT DORPじゃなければダメなのかと言いますと
もれてはイケナイ情報を入れておきたいからなんです
NoScriptを動かしていても何かの拍子で悪い事をする物が
入ってしまうことがあると思うのです
鍵を閉めずに泥棒に入られても諦めがつかない
閉めておけば自分で自分を慰めれる、、、
そんなところでしょうか。
594:login:Penguin
08/07/17 00:16:19 f01xAF4u
ふつーのtcp/ipアプリは1024以上の任意のポート(OSやIPスタックにも依存するが)を使って通信を始める
どのポートをACCEPTするかいつ誰が決めるの?
595:login:Penguin
08/07/17 00:16:24 rdjy5BJ1
>>593
じゃあ、真っ先にHTTPを閉じるべき。
596:login:Penguin
08/07/17 01:06:04 pkHmyVt0
>>593
|もれてはイケナイ情報を入れておきたい
ネットワークに接続されたマシンに、安全は無い。
そのマシンからLANカードを抜け。 物理的に遮断するのが最も安全。
究極は「紙に手書きする」。 この紙を銀行の貸金庫に保管しろ。(自宅なら耐火金庫。これで火事に遭っても情報は守られる。)
次点がスタンドアロンマシンに記録する方法。 ノート機に入力し、鍵のかかる机にでも入れるといい。
597:一から出直し
08/07/17 01:34:32 nfCUoiJG
595さん
596さん
お約束にお約束を重ねていただいてありがとうございました
僕は知っているこれを乗り越えて初めて答えがもらえることを。
594さんへ
port80へ向かうパケットを許すみたいな記述が出来ると思っています。
何しろ取り組みだしてまだ3日ぐらいなので自信はありませんが
じっくり取り組めるのは今週限り、何とかそれまでにその辺の答えに
たどり着きたいと思っています
598:login:Penguin
08/07/17 05:37:30 WKroJssy
面倒だからiptables使ってない。
何でも来い。
599:login:Penguin
08/07/17 06:14:15 RsBioRyn
zombieになってなきゃいいが
600:login:Penguin
08/07/17 07:55:29 w9Uw0jKl
>>594
それはaccept(listen)する側ではなくてconnectする側だと思うが。
一般的でないアプリケーションとしてaccept(listen)する場合は、
あらかじめ取り決めをしておくだけ。
601:一から出直し
08/07/17 09:15:29 nfCUoiJG
598
どこまで男前なんだ
600
わかる人にはわかるんでしょうけど僕にはわかりません
/sbin/iptables -P OUTPUT DROP
/sbin/iptables -A OUTPUT -i eth0 -o tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
結局これではだめなのでしょうか?
602:login:Penguin
08/07/17 10:10:43 EloNkrJv
Ubuntu ならそれでもいいけど、Debian ではきびしい
603:login:Penguin
08/07/17 10:56:20 rdjy5BJ1
>>601
どうしてもOUTPUTを潰したいならそうしても構わないけれど、いくら窓や裏口を
戸締りしたところで、良く見える正面玄関(TCP80番ポート)を開けっ放しにしてたら
台無しだよ。
で、80番での出口も閉じるのが現実的なコンピュータならそれでもいいだろうけれど、
そういう特殊用途なのかい?
604:login:Penguin
08/07/17 13:09:29 RsBioRyn
webだけ許可するなら
iptables -A INPUT -p tcp -m tcp --sport 80 -j ACCEPT
iptables -A OUTPUT -p tcp -m tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --sport 443 -j ACCEPT
iptables -A OUTPUT -p tcp -m tcp --dport 443 -j ACCEPT
でいんじゃないの。あと-iとか追加で。
605:login:Penguin
08/07/17 13:14:40 3QYpKb1i
>>601
ESTABLISHEDはACKが立ってるいわゆる戻りパケットだからOUTで使わなくていい。
OUTの穴あけはSYNの要求だから
-A OUTPUT -p tcp --dport 80 -j ACCEPT
-A OUTPUT -p tcp --dport 119 -j ACCEPT
とかかな。
FTPのパッシブの場合は逆にACKフラグが立ってる1024-65535を開けなきゃ通信出来ないから
-A OUTPUT -p tcp ! --syn --dport 1024:65535 -j ACCEPT
になるのか・・・したこと無いのでよく分からんがw
606:login:Penguin
08/07/17 19:52:59 V9y8Yy3u
>>602
ubuntuもdebianも一緒でしょ
デフォはiatables空だし
607:login:Penguin
08/07/17 20:01:22 btY7UUii
クライアント用途なら >>173 のようなパーソナルファイアウォール的な
--cmd-owner でやるのが適しているんじゃないの?
608:login:Penguin
08/07/17 22:02:01 nfCUoiJG
602
すいません。厳しいの意味がわかりません。
603
現在このマシンでサーバーを立てる予定はありません。
そうゆう意味でいいですか?
つまり想定しているのはクライアント専用です。
そこからLinuxの世界に入れてもらおうと思っています。
609:login:Penguin
08/07/17 22:45:05 aqSb7+WT
>>601
このへんから始めたら。
modprobe ip_conntrack_ftp
iptables -P INPUT DROP
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -P OUTPUT DROP
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A OUTPUT -m limit --limit 1/s --limit-burst 5 -j LOG --log-level warning --log-prefix "bad OUTPUT packet: "
iptables -P FORWARD DROP
で、最初は大量にbad OUTPUTなログが出るから、ログを見ながら必要なものを
OUTPUTのログ指定の前に足していけばいい。必要そうなものは例えば
iptables -A OUTPUT -p udp -m udp --sport bootpc -j ACCEPT
iptables -A OUTPUT -p udp -m udp --dport domain -j ACCEPT
iptables -A OUTPUT -p tcp -m tcp --dport http -j ACCEPT
iptables -A OUTPUT -p icmp -m icmp --icmp-type echo-request -j ACCEPT
てな具合。インタフェース指定やポートの細かい限定などは、
意味があるとき以外はしないでいいっしょ。管理するの面倒だし。
あと、把握できてないルールはつけない。
610:一から出直し
08/07/17 23:10:07 nfCUoiJG
607
そうなんですよ。そこもチェックしてたんですけど
効果的な使い道が浮かばなくて、、とほほです。
609
ありがとうございます。
勉強の雛形にさせてもらいます
611:login:Penguin
08/07/23 01:53:42 1UUyJ2NP
knoppix firewallの一番簡単な設定を選んで、iptables -Lしたのが
以下のやつ。
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT 0 -- anywhere anywhere
FROMINTERNET 0 -- anywhere anywhere
Chain FORWARD (policy DROP)
target prot opt source destination
ACCEPT 0 -- anywhere anywhere state RELATED,ESTABLISHED
FWDINTERNET 0 -- anywhere anywhere
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
TOINTERNET 0 -- anywhere anywhere
Chain FROMINTERNET (3 references)
target prot opt source destination
ACCEPT icmp -- anywhere anywhere
ACCEPT 0 -- anywhere anywhere state RELATED,ESTABLISHED
DROP 0 -- anywhere anywhere
Chain FWDINTERNET (3 references)
target prot opt source destination
ACCEPT 0 -- anywhere anywhere
Chain TOINTERNET (3 references)
target prot opt source destination
ACCEPT 0 -- anywhere anywhere
きっと突っ込みどころ満載だろうけど、これを参考に自分は
がんばってみる。
612:login:Penguin
08/07/24 01:01:09 ht7CyEPW
>>611
せっかくだからiptables -L -vしたら
613:login:Penguin
08/07/24 01:06:59 FHo+/IiI
ウチの環境(日本のみ許可、携帯のみ許可、etc...)で
そんなことしたら表示が恐ろしいことに・・・
-n を付けようぜ!
614:611
08/07/25 02:20:35 LOINhS18
>>612
突っ込みサンクス。INPUTが筒抜けになってるのね。改善をはかって
下のような感じにしてみた。クライアント用途ならこんな感じで
良いのかな。
Chain INPUT (policy ACCEPT)
target___prot___opt___source___destination
frominternet___0___--___anywhere___anywhere
Chain FORWARD (policy ACCEPT)
target___prot___opt___source___destination
fwdinternet___0___--___anywhere___anywhere
Chain OUTPUT (policy ACCEPT)
target___prot___opt___source___destination
tointernet___0___--___anywhere___anywhere
Chain frominternet (1 references)
target___prot___opt___source___destination
ACCEPT___icmp___--___anywhere___anywhere
ACCEPT___0___--___anywhere___anywhere___state RELATED,ESTABLISHED
DROP___0___--___anywhere___anywhere
Chain fwdinternet (1 references)
target___prot___opt___source___destination
ACCEPT___0___--___anywhere___anywhere___state RELATED,ESTABLISHED
DROP___0___--___anywhere___anywhere
Chain tointernet (1 references)
target___prot___opt___source___destination
ACCEPT___0___--___anywhere___anywhere
615:login:Penguin
08/07/31 17:36:39 XyjnsPYp
Debianでどのように設定していますか
if-pre-upのどこにリンク張っていますか
pre-upに置いたらまずいですか
616:login:Penguin
08/07/31 21:30:17 zdX0l+Wk
/etc/network/if-pre-up.d/にスクリプト
なんの話だ
別に
617:login:Penguin
08/08/05 21:25:25 Z3eVziP2
forwardチェインでログとってもMACアドレス記録されるようにしてほすぃ
618:login:Penguin
08/08/11 23:54:22 TGzzuzuv
OSはCentOS5です
ルータでは特定のIPからのポートスキャンをはじけないので、
IPテーブルの設定ではじきたいのですが、具体的なコマンドを教えてください
ちなみに、まちBBSからのポートスキャンをはじかないと書き込みができないので、
まちBBSからのポートスキャンのみはじきたいです
619:login:Penguin
08/08/12 00:50:06 Bc57GTps
サーバ管理してるなら、それくらいは自力で頑張ってみよう
620:login:Penguin
08/08/14 22:25:32 84iyOxyD
>>23
>>24
24氏のアドバイスで、ppp0の全てのパケットは、192.168.0.10へ
DNAT(Destination NAT)されるようになったけど、それでよかった
んだよね。
>>31
で、31氏が書いているのは、iptablesが動いているマシンに
httpdや、smtp,pop3, DNSなどのサービスが動いてたら、
それらを除外せにゃならんよねという、話だと理解しました。
で、最後にDNATがチェインの最後で実行されればいいんですよね
621:login:Penguin
08/08/15 03:07:08 AyoNWC/X
↑2年半前にレスってどうよ?w
622:login:Penguin
08/08/15 07:47:13 g1wlhWWM
専ブラ使っているんでね、このスレ見つけて
最初から読んで、resってみたんだが、ダメかね。
というか、このスレ立ってから、そんなに経つのか
よく落ちないな。
623:login:Penguin
08/08/15 07:53:05 3444HIb9
UNIX板のipfilterのスレなんて5年半で200レスくらい……
624:login:Penguin
08/08/31 23:21:06 n+n8JTmC
国内プロキシ経由の海外からのアクセスは防ぎようはないのかな
625:login:Penguin
08/09/01 00:27:34 fjO0v2rO
国内プロキシを弾くしかないね。
逆に、ホワイトリストを作成し、登録したIP以外を全部弾いた方が楽だと思う。
626:login:Penguin
08/09/02 03:53:13 U/dhSPhZ
うん。それもアリなんだね
だけどサーバー目的じゃないんだ
攻撃者特定の為に国内限定にしようと思ったんだけど
踏み台からの攻撃もあるから努力のしようがないことに気がついた
627:login:Penguin
08/09/02 04:05:58 CyZGqQKe
webサーバの保護の話でないなら別に放っておけばいんでないの
628:login:Penguin
08/09/13 13:23:36 W75dUOM6
サーバをPCルータ化して、クライアントPCでネットをしようと思い、
以下のような、サーバ用のスクリプトを作成したのですが、
Windows, Linuxのどちらからも、外に出られません。
eth1(192.168.0.1)が内向きで、ppp0 が PPPoE 接続した際にできたもので、
クライアントPCのアドレスは、DHCPで割り振っています。
添削をよろしくお願いいたします。
# 長いので、二つに分けます。
client_ip='192.168.0.0/24'
server_ip='192.168.0.1'
echo 1 > /proc/sys/net/ipv4/ip_forward
# テーブルの初期化
iptables -F
iptables -t nat -F
iptables -X
# テーブルの設定(INPUT)
iptables -P INPUT DROP
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i eth1 -s $client_ip -d $server_ip -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
629:628
08/09/13 13:24:55 W75dUOM6
# テーブルの設定(OUTPUT)
iptables -P OUTPUT ACCEPT
# インターネットに向けたローカルアドレスは全て破棄
iptables -A OUTPUT -o ppp0 -d 10.0.0.0/8 -j DROP
iptables -A OUTPUT -o ppp0 -d 176.16.0.0/12 -j DROP
iptables -A OUTPUT -o ppp0 -d 192.168.0.0/16 -j DROP
iptables -A OUTPUT -o ppp0 -d 127.0.0.0/8 -j DROP
# テーブルの設定(FORWARD)
iptables -P FORWARD DROP
# ファイル共有
iptables -A FORWARD -p tcp -i eth1 -o ppp0 --dport 137:139 -j DROP
iptables -A FORWARD -p udp -i eth1 -o ppp0 --dport 137:139 -j DROP
iptables -A FORWARD -p tcp -i eth1 -o ppp0 --dport 445 -j DROP
iptables -A FORWARD -p udp -i eth1 -o ppp0 --dport 445 -j DROP
# RPC
iptables -A FORWARD -p tcp -i eth1 -o ppp0 --dport 111 -j DROP
iptables -A FORWARD -p udp -i eth1 -o ppp0 --dport 111 -j DROP
iptables -A FORWARD -i eth1 -o ppp0 -s $client_ip -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
# IPマスカレードを設定
iptables -t nat -A POSTROUTING -o ppp0 -s $client_ip -j MASQUERADE
630:login:Penguin
08/09/13 13:43:36 12jhi4RP
なんか一見合ってそうに見えるけどな……
カーネルはデフォルトのもの?エラーとか出ないで
スクリプト実行できてるよね。
631:login:Penguin
08/09/13 15:13:23 XkB/m5n5
>>629
まずはチェインがどの順序で解釈されるものなのか知っておいたほうがいい。
POSTROUTINGはFORWARDやOUTPUTよりも後で実行されるので、
そこでMASQUERADEするのであればクライアントIPなどの判断はその後で
やらなきゃダメ。
632:628
08/09/13 15:27:44 W75dUOM6
レス、ありがとうございます。
>>630
カーネルは、Ubuntu 8.04 サーバー版で、特に手を加えていません。USBメモリに入れているくらいです。
スクリプトもエラーは出ていません。
>>631
なるほど、解釈される順番には気がつきませんでした。
早速試してみます!
633:login:Penguin
08/09/13 15:33:01 oHtnNr1m
クライアントから外部に向かうパケットがinput段階で叩き落とされないか?
634:login:Penguin
08/09/13 18:26:06 12jhi4RP
ホントだ。-d が余計だな。
635:628
08/09/13 21:32:24 XplBrS+o
返信遅れて申し訳ありません。
iptableと格闘していましたが、一向につながる気配がありません。
レスを頂いた件を、すべて試してみたり、
> Linuxで作るファイアウォール[NAT設定編]
> URLリンク(www.atmarkit.co.jp)
に、乗っているサンプルを改造したりしていましたが
成果はさっぱりです。
636:login:Penguin
08/09/14 02:13:23 ko4Rvcco
>> iptables -A FORWARD -i eth1 -o ppp0 -s $client_ip -j ACCEPT
FORWARDチェインなんでエラーは出ないんだが、
-i と-o はどちらか一方でないと成立しないような気がする
637:login:Penguin
08/09/14 02:14:57 uvFDe4SI
>>635
iptables -nvL と iptables -nvL -t nat、各種ログはチェックした?
638:login:Penguin
08/09/14 09:28:28 FG5fpXZJ
-s -d とか -i -o あたりが自分の使ってるルールに比べると
ちと厳密だね。その辺外して後から変えていったら。
639:login:Penguin
08/09/14 11:34:18 aDiVPCKf
URLリンク(fedorasrv.com)
のやり方で海外からのアクセスを弾いてるのですが
読めば読むほどよくわからなくなってきたので
質問させていただきます。
cidr.txt ・・・ cidr.txt.1 ・・・ cidr.txt.100 ・・・ cidr.txt.1056
と同じようなファイルがどんどん増えていきます(汗
消しても消しても増えるのですが新規にファイルを作成するのではなく
cidr.txt に上書きするようにすることはできないのでしょうか??
あと、(2)IPアドレスリスト更新チェック に
毎日自動でIPアドレスリストの更新有無をチェック
と書いてますが何時に更新するか設定はできないのでしょうか?
640:login:Penguin
08/09/14 11:42:51 WXeKp2xK
>>639
上書き
wgetを-Oで保存ファイル名指定
更新時刻
crontabで設定
641:628
08/09/14 16:53:01 1R1R/rhZ
>>636,638
オプションを付けたり外したり、
全部の組み合わせを同時に宣言して見ましたが、うまくいきません…
>>637
設定は、スクリプトに書いたとおりでした
ただ、ログがまったくでません。(時折外からくる、変なIPを弾くのを除く)
eth1にくるのを拒否すると、ちゃんとログに残るので
何がなんだかさっぱりです。
ログの設定は、以下です。
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
iptables -A OUTPUT -j LOGGING
642:login:Penguin
08/09/14 17:40:13 kd4iGQPt
全部ACCEPTにしてもつながらないとかないのかね
643:login:Penguin
08/09/14 17:57:54 RVgh8DFt
>>642
いや、さすがに、それは無いでしょ?
先にルーティングできることを確認しなかったら何が悪いか判らないじゃない?
644:628
08/09/14 19:51:28 TY7yI4CN
>>643
そうですね。何がわからないのか分からない状態です。
>>642
このような感じのもので、試してみましたが
クライアントPCでは、何もできませんでした。
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -F
iptables -t nat -F
iptables -X
iptables -P INPUT ACCEPT
iptables -A INPUT -j ACCEPT
iptables -P OUTPUT ACCEPT
iptables -A OUTPUT -j ACCEPT
iptables -P FORWARD ACCEPT
iptables -A FORWARD -j ACCEPT
iptables -t nat -A POSTROUTING -o ppp0 -s $client_ip -j MASQUERADE
ところで、-t nat -nvL で出てくる、POSTROUTING の pkts が
幾ら操作しても、0のままなのですが、これが正常なのでしょうか?
645:login:Penguin
08/09/14 20:27:29 RVgh8DFt
>>644
> >>643
> そうですね。何がわからないのか分からない状態です。
まず、iptableを切って、クライアントから外界が見れることを確認してください。
その状態から、徐々に絞っていく方が楽でしょう。(なお、クライアントの防備は厚めに。)
646:628
08/09/15 22:06:16 mFiXr7+/
>>645
原因が分かりました。
すごく、くだらない原因で、DNSの設定を自動で取得してくる状態のままでした(Windowsルータ時代はこれで良かった)
手動で、指定したところ、問題なく接続できました。
皆様、ご迷惑をおかけいたしました。
# ちら裏
結果的に修正した部分は、
>>628 の
iptables -A INPUT -i eth1 -s $client_ip -d $server_ip -j ACCEPT を
iptables -A INPUT -i eth1 -s $client_ip -j ACCEPT
に、したくらいです。
# ちら裏終わり
647:login:Penguin
08/09/15 23:01:45 NBhfMiPw
>>646
お疲れさん(笑
648:login:Penguin
08/09/26 20:02:35 rMTLXZXd
2分置きに↓のログが残るんだけど何だろう?
[iptables SPOOFING] IN=eth0 OUT= MAC=01:00:5e:00:00:01:00:14:f1:65:a4:6a:08:00 SRC=172.20.1.1 DST=224.0.0.1 LEN=28 TOS=0x00 PREC=0xC0 TTL=1 ID=60045 PROTO=2
649:login:Penguin
08/09/26 21:47:23 G3dQVRC8
ISPからくるIGMPのマルチキャストのパケットらしい。
中身まで見ると、何かわかるかも。
URLリンク(www.dslreports.com)
650:login:Penguin
08/09/30 09:25:20 6LAw1Ent
kernel2.4系で使っていたルールをkernel2.6系に使ったら
svnのコミット出来なくなったり、一部2.4の時と動作が違うのですがどの辺が変わってるんでしょうか?
651:login:Penguin
08/10/02 15:52:16 Cu06Z5f2
WebページのCGIからソケット開いて〜 ってやったものの応答をうけとるには
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
ではダメなようなのですが どうしたら受け取れますかね?
652:login:Penguin
08/10/02 20:50:38 3mmtWAQL
>>650
と言われても何とも言えん。ルールを出せ。
>>651
そのWebページとやらはどこにあるんだよ。
構成を出せ。
653:login:Penguin
08/10/05 11:41:14 Fghhu9nw
おまえら、netstat-natの出力みたことありますか。
なかなか楽しいが、見た内容を人にしゃべっちゃだめだぞ。
654:login:Penguin
08/10/05 21:15:29 1+nQfTzw
NATを使わない単なるルーターだが、port制限行うタイプの設定が
まったくわかりません。
(LAN1) -eth0[Linux Box]eth1- (LAN2)
・LAN1からLAN2へのpingは許可
・LAN2からLAN1への pingも許可
・LAN1からLAN2へのsshは許可
・上記以外の接続は全て不可
ぐぐるとNATばかりでてきます。NATもpppoeも関係なのです。
あーん、誰か助けてくらはい。
655:login:Penguin
08/10/05 21:17:03 1+nQfTzw
>>654
誤)ぐぐるとNATばかりでてきます。NATもpppoeも関係なのです。
正)ぐぐるとNATばかりでてきます。NATもpppoeも関係ないのです。
間違えちゃったorz
656:login:Penguin
08/10/05 21:28:53 1+nQfTzw
>>654
間違え&連投すいません。
ルーターとして[Linux Box]は動いています。ずぼずぼ通信できてしまいます。
制限ができないのです。
連投すいません。
657:login:Penguin
08/10/05 22:26:42 j+q2VtR8
>>654
普通にFORWARDチェインに対してACCEPTとDROPのルールを作ればいい。
-t natとかは不要。
658:login:Penguin
08/10/05 22:38:39 1+nQfTzw
LAN1 から LAN2は全部OK
LAN2 から LAN1はDROPとした場合
iptables -P INPUT ACCEPT
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD -s LAN1 -d LAN2 -j ACCEPT
iptables -P FORWARD -s LAN2 -d LAN1 -j DROP
だめですー(x x)
659:login:Penguin
08/10/06 00:04:41 Q2gv2CnD
iptables -L -v
と
iptables -t nat -L -v
を晒せ
660:login:Penguin
08/10/06 00:20:27 E4Yiq6p1
ICMPなpingは行き帰り両方をきちんと定義しないと駄目じゃないか?
661:login:Penguin
08/10/06 07:52:15 kHXndwyF
>>658
TCPだってping (ICMP echo)だって行き帰りのパケットがあるだろうに。
ネットワークの基礎を勉強し直せ。
662:login:Penguin
08/10/07 00:18:45 L0iIKOv8
TCPはステート情報を使うようにすれば、片方向の定義だけでいいけどね。
(FTPとか特殊なプロトコルをのぞく)
663:login:Penguin
08/10/07 07:21:32 4sfRDV6t
RELATED,ESTABLISHEDは超重要
664:login:Penguin
08/10/08 19:26:44 Hntgc9sn
>>652
2.4と同じじゃなかった(汗
$IPTABLES -t nat -A PREROUTING -i $INTIF -p tcp --dport 80 -j REDIRECT --to-port 8080
これでコミット出来なかった・・・
iptablesじゃなくて串の設定かorz
665:login:Penguin
08/11/02 15:09:02 fqVxYuim
>>658
確立したコネクション塞いだら通信できなるだろうが
それになぜポリシーにルール設定してんだよw
iptables -P INPUT ACCEPT
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
iptables -A FORWARD -s LAN1 -d LAN2 -j ACCEPT
iptables -A FORWARD -s LAN2 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -s LAN2 -d LAN1 -j DROP
666:login:Penguin
08/11/02 15:14:37 fqVxYuim
>>664
-i $INTIF 取ってみな
667:login:Penguin
08/11/02 15:51:43 fqVxYuim
>>658
あと追記だけど、LAN1/LAN2側双方へのマスカレードの設定があと必要だとおもうよ。
このくらい自分でしらべてくれよん
668:login:Penguin
08/11/07 15:57:30 TIV9E6l7
ルーター(192.168.0.1)
↓
eth0┐(192.168.0.2)
│←pc0
│
eth1┘(192.168.1.1)
↓
pc1
iptables -A FORWARD -i eth1 -o eth0 -s 192.168.1.0/24 -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.1.0/24 -j MASQUERADE
pc1にインターネット共有をさせたくて上記のように設定してみましたが
だめでした
これだとpc0のWAN側がインターネットでないとダメなのかなとか
ひょっとしてできないのかなでもWindowsだとチェックボックスひとつで
共有できるしなあとか思ってはみるものの具体策がわかりません
おしえてください
669:login:Penguin
08/11/07 16:39:12 CnNNPz2n
pc1 は ip_forward してますか?
670:login:Penguin
08/11/07 16:39:43 CnNNPz2n
ごめん、pc0 は ip_forward してますか?
671:login:Penguin
08/11/07 20:21:24 TIV9E6l7
>>670
/proc/sys/net/ipv4/ip_forward
に1とあり大丈夫なようです
672:login:Penguin
08/11/07 21:48:58 lFnUHJKa
>>668
というか「ルータ」に192.168.1.0/24のスタティックルートを設定できないのか?
673:login:Penguin
08/11/08 00:50:25 hssA2L52
前提としてルーター(192.168.0.1)には、もう一個ポートがあって、インターネット(ISP)に繋がっている。
ということでOK?
で、そのルーターは当然のごとくにIP Masquarade(NAT)している、ということでOK?
で、やりたいことは、ローカルネットワークにNATルーター(pc0)を設置してpc1は二重にNATしたい、ということでOK?
pc1をインターネットに繋がるようにしたいだけなら 192.168.0.0/24 のアドレスにしてpc0のeth0と同じ側に繋ぐか、
672 の言うとおり pc0 を(NATしない)普通のルーターとして働かせれば、いいはずだが、それを敢えて二重に
NATしたい、と。
他に -j DROP なルールなどががあったりしなければ、668の設定で基本的にはいいはずだけど、
その前にpc0からはインターネットにルーター(192.168.0.1)経由で繋がるのか?
674:login:Penguin
08/11/08 01:41:09 MJgV0EtY
restartしてないだけというエスパー予想。
675:667
08/11/08 20:06:18 0iWj6iOE
>>668
#WAN側のアドレスとか差っぴいちゃうからアドレスの指定とかやらないほうがいい
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
iptables -A FORWARD -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -j DROP
#↓WAN出力側は、マスカレードを無条件に許可する
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
#↓LAN側から入ってきたソースだけをpc1への戻りアドレス書き換えるマスカレード
#ローカルサーバーが必要ないなら、こいつは別に要らないかな?
iptables -t nat -A POSTROUTING -o eth1 -s 192.168.0.0/16 -j MASQUERADE
で、逝けそうな気がするけど。
それから、/etc/network/options に次の記述があるか確認してみ
ip_forward=yes
676:667
08/11/08 20:09:41 0iWj6iOE
訂正: >>668 の図見ると、eth0 eth1 逆じゃん?
iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT
iptables -A FORWARD -i eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -j DROP
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 192.168.0.0/16 -j MASQUERADE
てところか
677:667
08/11/08 20:14:24 0iWj6iOE
WAN側からの接続をシャットアウトしたいんだっけ?
勘違いしてた。
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
#↓この行だけ違った
iptables -A FORWARD -o eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -j DROP
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 192.168.0.0/16 -j MASQUERADE
678:667
08/11/08 20:27:54 0iWj6iOE
iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT
iptables -A FORWARD -o eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -j DROP
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 192.168.0.0/16 -j MASQUERADE
なんか、このほうがスッキリするけど…。
679:667
08/11/08 20:34:22 0iWj6iOE
>>668 をまとめるとこんな感じだな
よくわからないか、まとめてみた。
1) WANへの接続は許す
2) WANからの接続は潰す
3) ただし、LANからWANへ接続済みにしたパケットのWAN側からの転送は許す
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
iptables -A FORWARD -o eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -j DROP
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 192.168.0.0/16 -j MASQUERADE
680:667
08/11/08 20:38:58 0iWj6iOE
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
#↓ FORWARD に -o 張れないから やっぱこれでいいはず…
iptables -A FORWARD -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -j DROP
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 192.168.0.0/16 -j MASQUERADE
681:login:Penguin
08/11/08 23:10:35 iMsDtzmC
>>680
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
これは余計じゃないかな。
>>668
それとip_conntrack モジュールはロードしている
682:667
08/11/09 07:45:30 cyMfQhQp
>>681
余計かなぁ…?
ルーターとPC1が別のアドレス空間になっているから
PC0用のアドレスに書き換えてやらないとパケット戻ってこない気がするけど
683:login:Penguin
08/11/09 13:35:21 uYzy9N5y
668のやりたいことが>>673の問いかけ通り(最初の4行通り)なら、
673の指摘通り668の記述であっている(NATも以下の一つでいい)。
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.1.0/24 -j MASQUERADE
実際、最初の4行に書かれている通りのことを今やっている。
違いはeth0を固定IPにしているので、MASQUERADEでなくSNATを使ってることぐらい。
うまくいかない原因は、668に記載された3行以外にあると思うのだが?
684:667
08/11/09 14:02:18 MyRkucom
なーるー
原因不明だな
全部のiptablesオプションに --modprobe=/sbin/modprobe 付け足して
呼んでみるとかやってみるべきかもね
それでもダメなら pc0 に pc1 から ping して応答が帰ってくるかどうか
ぐらいのレベルから検証してみたほうがよさそうだね。
685:login:Penguin
08/11/10 22:31:41 vjcGauLJ
eth0を物理1つのエイリアス2に区切りました。
eth0 192.168.0.10
eth0:0 192.168.0.11
eth0:1 192.168.0.12
.0.10にだけtelnetが繋がるようにするには
どうすればいいのでしょうか?
686:login:Penguin
08/11/11 02:07:43 lioaoJiT
IPエイリアスの場合、全部eth0に変わりないので
-A INPUT -i eth0 -d 192.168.0.10 --dport 23 -j ACCEPT
-A INPUT -i eth0 --dport 23 -j REJECT
こんな感じじゃない
687:login:Penguin
08/11/13 19:57:50 zJ0w7PDt
telnetにListenIP設定すれば?
絞るなら大本から絞れ
688:login:Penguin
08/11/14 17:28:14 FovMWI9O
>>687
こういうのって(iptablesとデーモンの)両方やらないか?
689:login:Penguin
08/11/14 20:11:16 4rtpLX5i
ポートを開けないようにアプリ(telnet)側でやり、
さらにうっかり開かないようにiptablesで縛るね。
片方だけだと「うっかり」が結構出るけど、両方とも独立に
設定するならオペミスで開いてしまう事故は非常に起こりにくくなる。
690:login:Penguin
08/11/15 01:42:42 Zo/JTpVo
ssh+鍵暗号 でいいやん
telnet 殺しちゃいなよ
691:login:Penguin
08/11/15 02:14:20 26XJ0s7F
ここでの telnet はあくまで例なんじゃないの?
692:login:Penguin
08/11/15 08:53:49 OWM1nEoc
それやるとミスもあるんだよな。wrapperではじいてるから
後でFW設定しようとか思ってたら一台だけ設定してなかった、とか。
693:login:Penguin
08/11/15 09:18:53 4Owtonid
後でやろうと思ったとか、ちゃんと手順にそってやったことを確認しながらやらないのは問題外
ヒューマンエラーを防止するために手順メモとチェックリストは個人的にでも作ったほうがいい。
まあ、より強固で確かな方から設定していった方が漏れがあった時被害が少ないかもな…。
694:login:Penguin
08/11/15 13:00:17 OWM1nEoc
実際はもうちょっと複雑な過程ではまるんだが、ちと面倒だったんで……
あとはAの方ではじいてると思ってそっちのルール更新してたらBだった、とか。
695:login:Penguin
08/11/18 00:18:36 ruHhaDcu
ubuntuのufwで出力されるiptablesのルールって誰か分かりますか?
あれってデスクトップ用に最適化されているんですかね?
696:login:Penguin
08/11/18 00:24:59 jDfQIBNa
2.4 系だと MANGLE に TCPMSS 張れないから
FORWARD と OUTPUT に張っているけど
MANGLE に張る場合となにが違うのかよくわからん
697:login:Penguin
08/11/18 04:32:57 d3c/lwkM
>>695
設定してシェルから
iptables -L -v
してみれば良いのでは?
ていうかして、参考にしたいから。
自分はknoppix firewallと同じルールにしているけど、ubuntuのやつも
見てみたい。
698:login:Penguin
08/11/18 10:14:23 MRSXpnk2
>>697
いや、自分も手元にubuntu環境ないから見てみたいのですよ
699:login:Penguin
08/11/18 10:17:31 MRSXpnk2
あ、ubuntuライブCDが手元にあったわ
ufw enable して iptables -L -v 見てみる
700:544
08/11/24 21:48:01 qB2Gxz8P
NIC二枚刺して、一方はLANを通ってLAN内のルーターから外に
もう一方はグローバルIP持ってて直接外に
|-eth0(192.168.0.102)-ルーター-インターネット
PC-|
|-eth1(211.4.228.10)-インターネット
こんな構成になってるんだけど
eth0からインターネットに送信するときにeth1のIPアドレスがソースアドレスになっちゃいます。
eth0からLAN内にはちゃんと192.168.0.102がソースアドレスになります。
とりあえずiptables -A POSTROUTING -t nat -o eth0 -j SNAT --to-source 192.168.0.102
として、ソースアドレス設定してるですけど
tcpdumpで見てみるとDNSとかeth1のアドレスで尋ねにいってタイムアウトしてます。
そもそも、ifconfig見るとちゃんとeth0にIPアドレス設定されてるのに、なんでSNATが必要になるんでしょうか?
SNATしなくても済む方法ありますか?
701:700
08/11/24 21:56:04 qB2Gxz8P
追加です。
ping 66.249.89.99 -I eth0
とかすると、ソースアドレスはeth0のアドレスになってて問題なくpingは通ります。
702:login:Penguin
08/11/25 01:17:36 zZh6AovX
・IPv4
・マルチホームホスト
・デフォルトゲートウェイ2つ
・ポリシールーティングなし
が条件かな?
この場合、
・ルーティングエントリは、送出先インターフェースに関連づけられる。
・IPアドレスは、インターフェースに関連づけられる(が、他のインターフェース経由で送出されても良い)
・IPアドレスとルーティングエントリを直接関連づける機構がない。
・2つのデフォルトゲートウェイのうちどちらが使われるかは、メトリックによって決まる。値が同じなら平等。
みたいなかんじ。
IPアドレスと同じサブネットにいるゲートウェイが必ず使われるという保証はない、と言う状況になると思う。
解決策は、今のようにSNATをかけるか、ポリシールーティングで厳密にルーティングを指定するか、だと思うが。
703:700=544
08/11/25 18:33:11 +bzr+l5D
>>702
レスサンクスです
ポリシールーティングなのかわからないんだけど
>>544にあるように、UIDによってルーティングテーブルを分けてます。
mainテーブルはeth1がデフォルトになってて、
一部のユーザーはテーブル2を見て、eth0に振られます。
>>700の現象が起きるのはそのユーザーのみです。後出しですいません。
tcpdump見てると、domainのみeth1のアドレスでまず送って、その後eth0のアドレスで送ってます。
>>544で言ってた遅さの原因は最初のDNS問い合わせがタイムアウトしてるからのようです。
>・IPアドレスは、インターフェースに関連づけられる(が、他のインターフェース経由で送出されても良い)
ここを厳密にインターフェースに関連付けられればいいんですけど、SNATしかないんでしょうか?
704:700=544
08/11/25 18:34:16 +bzr+l5D
ipコマンドの結果とiptablesの一部載せます
# ip rule list
0: from all lookup 255
100: from 192.168.0.102 lookup 2
101: from all fwmark 0xb lookup 2
32766: from all lookup main
32767: from all lookup default
# ip route show table 2
192.168.0.0/24 dev eth0 proto kernel scope link src 192.168.0.102
default via 192.168.0.1 dev eth0 src 192.168.0.102
# ip route show table main
192.168.0.0/24 dev eth0 proto kernel scope link src 192.168.0.102
211.4.228.0/24 dev eth1 proto kernel scope link src 211.4.228.10
default via 211.4.228.1 dev eth1
# iptables -L -t mangle
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
MARK all -- anywhere anywhere MARK set 0xa
MARK all -- anywhere anywhere OWNER UID match serv1 MARK set 0xb
705:700
08/11/25 19:15:43 +bzr+l5D
自分でも混乱してきたのでまとめ
table2を見てる特別ユーザーの場合
>>704の状態
ソースアドレスがeth1のアドレスになってしまって通信不可
>>704に加えてSNAT
基本的にソースアドレスはSNATで指定したアドレスになり通信できるが
DNSのみeth1のアドレスで問い合わせ後、SNAT指定のアドレスで問い合わせるので遅くなる。
706:login:Penguin
08/12/25 14:38:37 W3gIymfl
>>666
亀ですんません
-i $INTIF取ってもダメでした
結局、-s ! $OREIPで凌いでます
707:login:Penguin
08/12/26 00:11:11 VXirjz6Y
今さっき、単純なポリシールーティング(fwmark未使用)なら動いたけど・・・・
なんか、自分のよりずいぶんややこしいことやってるな
708:700
08/12/26 18:06:08 ltPqHwfd
やりたいことは単純で、ユーザー毎に使うネットワークを分けたいだけなんですけどね。
宛先のみでは分けれないので静的なルーティングでは実現できず、fwmark使うしか思いつかなかったんです。
709:login:Penguin
08/12/27 00:08:55 opgamkt1
既に理解しているようならスルーしてくれ。
まず、linuxのポリシールーティングがどういうものかというと、
「ルーティングテーブルを複数持って、条件によって使うテーブルを切り替える」
機構になってる。
これは、普段使うmainテーブルを複数持つような物だと思えばいい。
つまり、切り替えたテーブルにおいて、ネットワークの定義等が無いと、そのネットワーク等は使えない。
通常、mainテーブルが
$network1 dev $if1 scope link src $ip1
$network2 dev $if2 scope link src $ip2
127.0.0.0/8 dev lo scope link
default via $gw1 dev $if1
のようになり、
これとほぼ同じものを、切り替え用のテーブルとして用意する
(127.0.0.0/8 も、テーブルごとに用意した方がいい)
また、アプリケーション側でソケットを作成する際に、
local側をbindして、bindしたアドレスと別のネットワークに飛ばそうとすると
当然の如く、ネットワークを跨ぐことができず、ルーティングに失敗する。
(ip_forward=1にすれば超えれるのかな?)
bindをanyにした場合は、送信先に対応するネットワークをルーティングテーブルから選択して、
そのテーブルに書かれているIPアドレスorデバイスをlocalのbindとする。
どうやって調べるかという話はあるにしろ、どこが問題なのかはっきりさせた方がいい気がする。
#完全にiptablesの話じゃないな
710:700
08/12/27 00:58:36 jUvzXagD
自分でsocketから書けばbindでIPアドレス指定することで
ルーティングで小細工しなくてもNICを使い分けれるんですね。知らなかった。
でもwgetとか普通のクライアントアプリならbindとか呼ばず、いきなりconnectじゃないですか?
そういう場合ってどうやってソースアドレス決定するんでしょう?
ルーティングテーブルでローカルネットワーク使うように設定しても(>>704のtable2)
ソースアドレスがグローバルIPになっちゃうんですよね。
##完全にiptablesの話じゃないな
#たしかに。板違いかも。
711:login:Penguin
08/12/27 07:35:52 opgamkt1
いや、ポリシールーティングの設定はいる。
けど、fwmark使わずに、ソースアドレスでテーブルを振り分ける。
echo "127 net1" >> /etc/iproute2/rt_tables
echo "126 net2" >> /etc/iproute2/rt_tables
ip route add $network1 dev $if1 scope link src $ip1 table net1
ip route add $network2 dev $if2 scope link table net1
ip route 127.0.0.0/8 dev lo scope link table net1
ip route default via $gw1 dev $if1 table net1
ip route $network2 dev $if2 scope link src $ip2 table net2
ip route $network1 dev $if1 scope link table net2
ip route 127.0.0.0/8 dev lo scope link table net2
ip route default via $gw2 dev $if2 table net2
ip rule add from $ip1 table net1 prio 14998
ip rule add from $ip2 table net2 prio 14999
いわゆる、参考文献でよく見る基本形
・localのbindによって、gw1とgw2を振り分ける。
・localのbindがanyの場合は、mainテーブルのdefault gatewayによってlocalのbindが確定する
・listenしているソケットがanyの場合は、acceptしてlocal側のbindが確定した段階で、
出力先のネットワークが確定する。つまり、受け取ったif側のgwが使用される
・wgetにはbindaddress指定があるので、
wget --bind-address=${ip1} URLリンク(hogehoge)<) ではgw2
wget URLリンク(hogehoge) ではmainテーブルで指定したgw
に向かってパケットが投げられる
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
4659日前に更新/298 KB
担当:undef