質問編集履歴
19
字数制限による、新たな投稿
test
CHANGED
File without changes
|
test
CHANGED
@@ -568,21 +568,11 @@
|
|
568
568
|
|
569
569
|
|
570
570
|
|
571
|
-
```
|
572
|
-
|
573
|
-
エラーメッセージ
|
574
|
-
|
575
|
-
```
|
576
|
-
|
577
|
-
|
578
|
-
|
579
|
-
### 該当のソースコード
|
580
|
-
|
581
|
-
|
582
|
-
|
583
|
-
|
584
|
-
|
585
|
-
###
|
571
|
+
### 続き
|
572
|
+
|
573
|
+
字数制限のため、[新たな投稿](https://teratail.com/questions/145425)をしました。
|
574
|
+
|
575
|
+
|
586
576
|
|
587
577
|
### 補足情報(FW/ツールのバージョンなど)
|
588
578
|
|
18
eth1のipがdhcp再リースで変更されたこと。
test
CHANGED
File without changes
|
test
CHANGED
@@ -232,7 +232,7 @@
|
|
232
232
|
|
233
233
|
```
|
234
234
|
|
235
|
-
root@raspberrypi:/
|
235
|
+
root@raspberrypi:/# ip route
|
236
236
|
|
237
237
|
default via 192.168.0.1 dev eth0 src 192.168.0.3 metric 202
|
238
238
|
|
@@ -360,8 +360,12 @@
|
|
360
360
|
|
361
361
|
やっていることは、「特定ユーザのip route変更」です。squidのユーザーであるproxyのip route変更のため、このサイトを参考にし、
|
362
362
|
|
363
|
+
(当該記事は、異なるnicの切り替えでなく、単純な同一ネットワーク内でのgw変更である)
|
364
|
+
|
363
365
|
http://d.hatena.ne.jp/rti7743/20150320/1426880601
|
364
366
|
|
367
|
+
|
368
|
+
|
365
369
|
以下の操作をしました。
|
366
370
|
|
367
371
|
|
@@ -372,7 +376,7 @@
|
|
372
376
|
|
373
377
|
|
374
378
|
|
375
|
-
#再起動で各nicのipが変動するための取得方法
|
379
|
+
#再起動で各nicのipが再dhcpリースにより変動するための自動的な取得方法
|
376
380
|
|
377
381
|
#https://askubuntu.com/questions/430853/how-do-i-find-my-internal-ip-address
|
378
382
|
|
@@ -522,8 +526,6 @@
|
|
522
526
|
|
523
527
|
|
524
528
|
|
525
|
-
|
526
|
-
|
527
529
|
```
|
528
530
|
|
529
531
|
|
@@ -540,6 +542,10 @@
|
|
540
542
|
|
541
543
|
|
542
544
|
|
545
|
+
proxygwのルーティングテーブルは理解していますが、iptablesのmangleはまだ正しく理解していないところです。
|
546
|
+
|
547
|
+
|
548
|
+
|
543
549
|
###事前調査について
|
544
550
|
|
545
551
|
|
17
rpi再インストールで、squid + iptables でsub-gwへの転送ができなくなった。
test
CHANGED
File without changes
|
test
CHANGED
@@ -350,6 +350,196 @@
|
|
350
350
|
|
351
351
|
|
352
352
|
|
353
|
+
## 発生している問題・エラーメッセージ)(その3)
|
354
|
+
|
355
|
+
|
356
|
+
|
357
|
+
rpiが起動しなくなり、再インストールしてから、squid + iptables で同様の設定までしたところ、何故かsub-gwへの転送ができなくなってしまいました。
|
358
|
+
|
359
|
+
|
360
|
+
|
361
|
+
やっていることは、「特定ユーザのip route変更」です。squidのユーザーであるproxyのip route変更のため、このサイトを参考にし、
|
362
|
+
|
363
|
+
http://d.hatena.ne.jp/rti7743/20150320/1426880601
|
364
|
+
|
365
|
+
以下の操作をしました。
|
366
|
+
|
367
|
+
|
368
|
+
|
369
|
+
squidユーザのルーティングテーブル変更コード
|
370
|
+
|
371
|
+
```
|
372
|
+
|
373
|
+
|
374
|
+
|
375
|
+
#再起動で各nicのipが変動するための取得方法
|
376
|
+
|
377
|
+
#https://askubuntu.com/questions/430853/how-do-i-find-my-internal-ip-address
|
378
|
+
|
379
|
+
|
380
|
+
|
381
|
+
eth0_ip=$(ip addr show eth0 |grep -v inet6 | awk '/inet/ {print $2}' | cut -d/ -f1) &&
|
382
|
+
|
383
|
+
eth1_ip=$(ip addr show eth1 |grep -v inet6 | awk '/inet/ {print $2}' | cut -d/ -f1)
|
384
|
+
|
385
|
+
|
386
|
+
|
387
|
+
proxy_route_tbl=proxygw &&
|
388
|
+
|
389
|
+
proxy_route_tbl_number=201 &&
|
390
|
+
|
391
|
+
echo 1 > /proc/sys/net/ipv4/ip_forward &&
|
392
|
+
|
393
|
+
echo "$proxy_route_tbl_number $proxy_route_tbl" >> /etc/iproute2/rt_tables &&
|
394
|
+
|
395
|
+
ip rule add fwmark 1 table $proxy_route_tbl &&
|
396
|
+
|
397
|
+
ip route add table $proxy_route_tbl default via 192.168.0.1 dev eth0 src $eth0_ip metric 203 &&
|
398
|
+
|
399
|
+
ip route add table $proxy_route_tbl default via 192.168.1.1 dev eth1 src $eth1_ip metric 202 &&
|
400
|
+
|
401
|
+
ip route add table $proxy_route_tbl 192.168.0.0/24 dev eth0 proto kernel scope link src $eth0_ip metric 203 &&
|
402
|
+
|
403
|
+
ip route add table $proxy_route_tbl 192.168.1.0/24 dev eth1 proto kernel scope link src $eth1_ip metric 202 &&
|
404
|
+
|
405
|
+
iptables -t mangle -P OUTPUT ACCEPT &&
|
406
|
+
|
407
|
+
iptables -t mangle -A OUTPUT -m owner --uid-owner proxy -j MARK --set-mark 1
|
408
|
+
|
409
|
+
|
410
|
+
|
411
|
+
# ip route,iptables 初期化用
|
412
|
+
|
413
|
+
|
414
|
+
|
415
|
+
ip rule del fwmark 1 table $proxy_route_tbl &&
|
416
|
+
|
417
|
+
ip route del table $proxy_route_tbl default via 192.168.0.1 dev eth0 src $eth0_ip metric 203 &&
|
418
|
+
|
419
|
+
ip route del table $proxy_route_tbl default via 192.168.1.1 dev eth1 src $eth1_ip metric 202 &&
|
420
|
+
|
421
|
+
ip route del table $proxy_route_tbl 192.168.0.0/24 dev eth0 proto kernel scope link src $eth0_ip metric 203 &&
|
422
|
+
|
423
|
+
ip route del table $proxy_route_tbl 192.168.1.0/24 dev eth1 proto kernel scope link src $eth1_ip metric 202 &&
|
424
|
+
|
425
|
+
iptables -F &&
|
426
|
+
|
427
|
+
iptables -F -t mangle
|
428
|
+
|
429
|
+
|
430
|
+
|
431
|
+
```
|
432
|
+
|
433
|
+
また、変更後のip route,iptablesの設定は、
|
434
|
+
|
435
|
+
|
436
|
+
|
437
|
+
ip routeの変更後の設定
|
438
|
+
|
439
|
+
```
|
440
|
+
|
441
|
+
root@raspberrypi:/# ip route show table main
|
442
|
+
|
443
|
+
default via 192.168.0.1 dev eth0 src 192.168.0.3 metric 202
|
444
|
+
|
445
|
+
default via 192.168.1.1 dev eth1 src 192.168.1.5 metric 203
|
446
|
+
|
447
|
+
192.168.0.0/24 dev eth0 proto kernel scope link src 192.168.0.3 metric 202
|
448
|
+
|
449
|
+
192.168.1.0/24 dev eth1 proto kernel scope link src 192.168.1.5 metric 203
|
450
|
+
|
451
|
+
|
452
|
+
|
453
|
+
root@raspberrypi:/# ip route show table proxygw
|
454
|
+
|
455
|
+
default via 192.168.1.1 dev eth1 src 192.168.1.5 metric 202
|
456
|
+
|
457
|
+
default via 192.168.0.1 dev eth0 src 192.168.0.3 metric 203
|
458
|
+
|
459
|
+
192.168.0.0/24 dev eth0 proto kernel scope link src 192.168.0.3 metric 203
|
460
|
+
|
461
|
+
192.168.1.0/24 dev eth1 proto kernel scope link src 192.168.1.5 metric 202
|
462
|
+
|
463
|
+
```
|
464
|
+
|
465
|
+
iptablesの変更後の設定
|
466
|
+
|
467
|
+
|
468
|
+
|
469
|
+
```
|
470
|
+
|
471
|
+
root@raspberrypi:/# iptables -L
|
472
|
+
|
473
|
+
Chain INPUT (policy ACCEPT)
|
474
|
+
|
475
|
+
target prot opt source destination
|
476
|
+
|
477
|
+
|
478
|
+
|
479
|
+
Chain FORWARD (policy ACCEPT)
|
480
|
+
|
481
|
+
target prot opt source destination
|
482
|
+
|
483
|
+
|
484
|
+
|
485
|
+
Chain OUTPUT (policy ACCEPT)
|
486
|
+
|
487
|
+
target prot opt source destination
|
488
|
+
|
489
|
+
|
490
|
+
|
491
|
+
root@raspberrypi:/# iptables -L -t mangle
|
492
|
+
|
493
|
+
Chain PREROUTING (policy ACCEPT)
|
494
|
+
|
495
|
+
target prot opt source destination
|
496
|
+
|
497
|
+
|
498
|
+
|
499
|
+
Chain INPUT (policy ACCEPT)
|
500
|
+
|
501
|
+
target prot opt source destination
|
502
|
+
|
503
|
+
|
504
|
+
|
505
|
+
Chain FORWARD (policy ACCEPT)
|
506
|
+
|
507
|
+
target prot opt source destination
|
508
|
+
|
509
|
+
|
510
|
+
|
511
|
+
Chain OUTPUT (policy ACCEPT)
|
512
|
+
|
513
|
+
target prot opt source destination
|
514
|
+
|
515
|
+
MARK all -- anywhere anywhere owner UID match proxy MARK set 0x1
|
516
|
+
|
517
|
+
|
518
|
+
|
519
|
+
Chain POSTROUTING (policy ACCEPT)
|
520
|
+
|
521
|
+
target prot opt source destination
|
522
|
+
|
523
|
+
|
524
|
+
|
525
|
+
|
526
|
+
|
527
|
+
```
|
528
|
+
|
529
|
+
|
530
|
+
|
531
|
+
また、rpi側から見たtcpdumpの結果としては、
|
532
|
+
|
533
|
+
client-rpi間は、普通に (eth0のip):3128 への通信
|
534
|
+
|
535
|
+
rpi-通信先サーバ間は、例えば1.1.1.1宛にすると、
|
536
|
+
|
537
|
+
物理nicがeth1でのdumpなのに、srcipがeth0のipとなり、
|
538
|
+
|
539
|
+
サーバからの応答を受信できません。
|
540
|
+
|
541
|
+
|
542
|
+
|
353
543
|
###事前調査について
|
354
544
|
|
355
545
|
|
16
あ
test
CHANGED
File without changes
|
test
CHANGED
@@ -364,7 +364,11 @@
|
|
364
364
|
|
365
365
|
|
366
366
|
|
367
|
-
また、英語の質問サイトで、本質問で挙げた3つのツールと「異なるnicに変更する方法」、「異なるネットワークに転送する方法」を調べても、これといったものはありませんでした。
|
367
|
+
また、英語の質問サイトで、本質問で挙げた3つのツールと「異なるnicに変更する方法」、「異なるネットワークに転送する方法」を調べても、これといったものはありませんでした。
|
368
|
+
|
369
|
+
|
370
|
+
|
371
|
+
普段のネット接続と別の通信にしたいなどの要望は多く、ip routeやvpnでの対応が多いが、設定を大幅に変更してしまい、普段のネットワーク環境を破壊する恐れがあるので、簡単な操作・変更で済みそうなプロキシーにより実現できると良い。
|
368
372
|
|
369
373
|
|
370
374
|
|
15
事前調査について
test
CHANGED
File without changes
|
test
CHANGED
@@ -348,6 +348,12 @@
|
|
348
348
|
|
349
349
|
|
350
350
|
|
351
|
+
|
352
|
+
|
353
|
+
###事前調査について
|
354
|
+
|
355
|
+
|
356
|
+
|
351
357
|
よく「linuxルータを作ろう」などという記事があり、
|
352
358
|
|
353
359
|
異なるネットワーク間の通信を異なるnicでクリアしていますが、
|
@@ -358,6 +364,8 @@
|
|
358
364
|
|
359
365
|
|
360
366
|
|
367
|
+
また、英語の質問サイトで、本質問で挙げた3つのツールと「異なるnicに変更する方法」、「異なるネットワークに転送する方法」を調べても、これといったものはありませんでした。(普段のネット接続と別の通信にしたいなどの要望は多く、vpnでの対応が多いが、望ましくない。)
|
368
|
+
|
361
369
|
|
362
370
|
|
363
371
|
```
|
14
誤字脱字
test
CHANGED
File without changes
|
test
CHANGED
@@ -262,7 +262,7 @@
|
|
262
262
|
|
263
263
|
client-pcがrpi-eth0 (192.168.0.3:3218)を宛先とする通信しかしない
|
264
264
|
|
265
|
-
(client
|
265
|
+
(client-pcからwiresharkで確認)ので、
|
266
266
|
|
267
267
|
squidで処理したあとの通信をどうにかしてsubnet-Bに向ける事が重要です。
|
268
268
|
|
13
ツールのバージョンの追加
test
CHANGED
File without changes
|
test
CHANGED
@@ -16,10 +16,6 @@
|
|
16
16
|
|
17
17
|
今、以下のようなネットワーク構成であるとする。
|
18
18
|
|
19
|
-
(左側のaはスペースを反映させるための装飾で、特に意味はない。
|
20
|
-
|
21
|
-
また、モバイル版では図が崩れて表示されます。)
|
22
|
-
|
23
19
|
|
24
20
|
|
25
21
|
```
|
@@ -50,11 +46,11 @@
|
|
50
46
|
|
51
47
|
|
52
48
|
|
53
|
-
client-pc:ubuntu 18.04 (client-pcは今後増える可能性あり)
|
49
|
+
client-pc : ubuntu 18.04 (client-pcは今後増える可能性あり)
|
54
|
-
|
50
|
+
|
55
|
-
rpi: raspberry pi stretch
|
51
|
+
rpi : raspberry pi stretch
|
56
|
-
|
52
|
+
|
57
|
-
main-gw,sub-gw:市販のルータで、dhcpサーバ機能を持つ
|
53
|
+
main-gw,sub-gw : 市販のルータで、dhcpサーバ機能を持つ
|
58
54
|
|
59
55
|
|
60
56
|
|
@@ -383,3 +379,7 @@
|
|
383
379
|
### 補足情報(FW/ツールのバージョンなど)
|
384
380
|
|
385
381
|
dante 1.52.10.2
|
382
|
+
|
383
|
+
iptables v1.6.0
|
384
|
+
|
385
|
+
squid3-3.5.23
|
12
ネットワーク構成図の修正その2
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
```
|
2
|
-
|
3
1
|
## 注意点
|
4
2
|
|
5
3
|
|
@@ -24,6 +22,8 @@
|
|
24
22
|
|
25
23
|
|
26
24
|
|
25
|
+
```
|
26
|
+
|
27
27
|
(subnet-A : 192.168.0.0/24)
|
28
28
|
|
29
29
|
clien-pc(192.168.0.2)ー main-gw(192.168.0.1)ーwan1
|
@@ -46,6 +46,8 @@
|
|
46
46
|
|
47
47
|
(subnet-B : 192.168.1.0/24)
|
48
48
|
|
49
|
+
```
|
50
|
+
|
49
51
|
|
50
52
|
|
51
53
|
client-pc:ubuntu 18.04 (client-pcは今後増える可能性あり)
|
@@ -381,5 +383,3 @@
|
|
381
383
|
### 補足情報(FW/ツールのバージョンなど)
|
382
384
|
|
383
385
|
dante 1.52.10.2
|
384
|
-
|
385
|
-
```
|
11
ネットワーク構成図の修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
```
|
2
|
+
|
1
3
|
## 注意点
|
2
4
|
|
3
5
|
|
@@ -26,21 +28,21 @@
|
|
26
28
|
|
27
29
|
clien-pc(192.168.0.2)ー main-gw(192.168.0.1)ーwan1
|
28
30
|
|
29
|
-
|
31
|
+
|
|
30
|
-
|
32
|
+
|
31
|
-
|
33
|
+
|
|
32
|
-
|
34
|
+
|
33
|
-
|
35
|
+
|
|
34
|
-
|
36
|
+
|
35
|
-
|
37
|
+
rpi-eth0 (192.168.0.3)
|
36
|
-
|
38
|
+
|
37
|
-
|
39
|
+
| (rpi内部)
|
38
|
-
|
40
|
+
|
39
|
-
|
41
|
+
rpi-eth1 (192.168.1.3)
|
40
|
-
|
42
|
+
|
41
|
-
|
43
|
+
|
|
42
|
-
|
44
|
+
|
43
|
-
|
45
|
+
sub-gw (192.168.1.1)ーwan2
|
44
46
|
|
45
47
|
(subnet-B : 192.168.1.0/24)
|
46
48
|
|
@@ -379,3 +381,5 @@
|
|
379
381
|
### 補足情報(FW/ツールのバージョンなど)
|
380
382
|
|
381
383
|
dante 1.52.10.2
|
384
|
+
|
385
|
+
```
|
10
あ
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
##
|
1
|
+
## 注意点
|
2
2
|
|
3
3
|
|
4
4
|
|
@@ -8,7 +8,7 @@
|
|
8
8
|
|
9
9
|
|
10
10
|
|
11
|
-
##
|
11
|
+
##前提・実現したいこと
|
12
12
|
|
13
13
|
|
14
14
|
|
@@ -16,7 +16,9 @@
|
|
16
16
|
|
17
17
|
今、以下のようなネットワーク構成であるとする。
|
18
18
|
|
19
|
-
(左側のaはスペースを反映させるための装飾で、特に意味はない
|
19
|
+
(左側のaはスペースを反映させるための装飾で、特に意味はない。
|
20
|
+
|
21
|
+
また、モバイル版では図が崩れて表示されます。)
|
20
22
|
|
21
23
|
|
22
24
|
|
@@ -86,7 +88,7 @@
|
|
86
88
|
|
87
89
|
|
88
90
|
|
89
|
-
##
|
91
|
+
## 発生している問題・エラーメッセージ(その1)
|
90
92
|
|
91
93
|
danteについて
|
92
94
|
|
@@ -178,11 +180,11 @@
|
|
178
180
|
|
179
181
|
|
180
182
|
|
181
|
-
|
183
|
+
####client-pcからのsocks proxy接続の結果について、
|
182
|
-
|
183
|
-
|
184
|
-
|
184
|
+
|
185
|
+
|
186
|
+
|
185
|
-
|
187
|
+
sub-gw(192.168.1.1)の管理画面にはアクセスできる、つまり、
|
186
188
|
|
187
189
|
subnet-B(eth1を経由とは書かない)を経由しているが、
|
188
190
|
|
@@ -212,7 +214,7 @@
|
|
212
214
|
|
213
215
|
|
214
216
|
|
215
|
-
|
217
|
+
####proxy server本体となるrpiを送信元とする結果について
|
216
218
|
|
217
219
|
|
218
220
|
|
@@ -244,9 +246,11 @@
|
|
244
246
|
|
245
247
|
|
246
248
|
|
247
|
-
##
|
249
|
+
## 発生している問題・エラーメッセージ(というより、方法を模索中)(その2)
|
248
|
-
|
250
|
+
|
251
|
+
|
252
|
+
|
249
|
-
squid + iptablesについて
|
253
|
+
###squid + iptablesについて
|
250
254
|
|
251
255
|
|
252
256
|
|
@@ -264,7 +268,7 @@
|
|
264
268
|
|
265
269
|
|
266
270
|
|
267
|
-
|
271
|
+
####中継プロキシ-通信先サーバの間の通信について
|
268
272
|
|
269
273
|
|
270
274
|
|
@@ -344,6 +348,16 @@
|
|
344
348
|
|
345
349
|
|
346
350
|
|
351
|
+
よく「linuxルータを作ろう」などという記事があり、
|
352
|
+
|
353
|
+
異なるネットワーク間の通信を異なるnicでクリアしていますが、
|
354
|
+
|
355
|
+
今回はrpiをgwとする通常のルータの利用方法とは違うので、
|
356
|
+
|
357
|
+
それらの記事を参考にして、目標を達成することはできません。
|
358
|
+
|
359
|
+
|
360
|
+
|
347
361
|
|
348
362
|
|
349
363
|
```
|
9
ネットワークの質問なのに、説明不足と致命的なミス、さらに説明の流れがなっていないので、修正
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
プロキシー接続による異なるネットワーク間のルーティングができない
|
test
CHANGED
@@ -1,18 +1,28 @@
|
|
1
|
+
### 注意点
|
2
|
+
|
3
|
+
|
4
|
+
|
5
|
+
この質問は、既に行った方法と、これからやろうと試みているが、理解が足りず進んでいない部分を並列して載せているので、読みづらいかと思います。
|
6
|
+
|
7
|
+
ご了承ください。
|
8
|
+
|
9
|
+
|
10
|
+
|
1
11
|
### 前提・実現したいこと
|
2
12
|
|
3
|
-
|
13
|
+
|
4
|
-
|
5
|
-
|
6
|
-
|
14
|
+
|
7
|
-
2つの回線があり、メインの回線とは別に、特定の操作をした時にサブ回線を
|
15
|
+
2つの回線があり、メインの回線とは別に、特定の操作をした時に通信がサブ回線を経由するようにしたい。
|
16
|
+
|
8
|
-
|
17
|
+
今、以下のようなネットワーク構成であるとする。
|
18
|
+
|
9
|
-
|
19
|
+
(左側のaはスペースを反映させるための装飾で、特に意味はない)
|
10
|
-
|
11
|
-
|
12
|
-
|
20
|
+
|
21
|
+
|
22
|
+
|
13
|
-
(subnet
|
23
|
+
(subnet-A : 192.168.0.0/24)
|
14
|
-
|
24
|
+
|
15
|
-
pc(192.168.0.2)
|
25
|
+
clien-pc(192.168.0.2)ー main-gw(192.168.0.1)ーwan1
|
16
26
|
|
17
27
|
a |
|
18
28
|
|
@@ -20,39 +30,59 @@
|
|
20
30
|
|
21
31
|
a |
|
22
32
|
|
23
|
-
a rpi
|
33
|
+
a rpi-eth0 (192.168.0.3)
|
24
|
-
|
34
|
+
|
25
|
-
a |(rpi内部)
|
35
|
+
a | (rpi内部)
|
26
|
-
|
36
|
+
|
27
|
-
a rpi
|
37
|
+
a rpi-eth1 (192.168.1.3)
|
28
|
-
|
38
|
+
|
29
|
-
a
|
39
|
+
a |
|
30
|
-
|
40
|
+
|
31
|
-
a sub
|
41
|
+
a sub-gw (192.168.1.1)ーwan2
|
32
|
-
|
42
|
+
|
33
|
-
(subnet
|
43
|
+
(subnet-B : 192.168.1.0/24)
|
44
|
+
|
45
|
+
|
46
|
+
|
34
|
-
|
47
|
+
client-pc:ubuntu 18.04 (client-pcは今後増える可能性あり)
|
48
|
+
|
35
|
-
|
49
|
+
rpi: raspberry pi stretch
|
50
|
+
|
36
|
-
|
51
|
+
main-gw,sub-gw:市販のルータで、dhcpサーバ機能を持つ
|
52
|
+
|
53
|
+
|
54
|
+
|
55
|
+
rpiには、lanケーブルとusb-lanアダプタの2つのnicがついており、それぞれeth0,eth1である。また、ip割当は各ルータのdhcp機能により行った。rpiがルータの役割をする事はない。
|
56
|
+
|
57
|
+
|
58
|
+
|
37
|
-
特定の操作をしたときに、sub
|
59
|
+
特定の操作をしたときに、client-pcの通信がsub-gwを経由してwan2を利用できればよいので、
|
38
|
-
|
60
|
+
|
39
|
-
どんな方法でも良いが、client
|
61
|
+
どんな方法でも良いが、client-pcのip routeの変更やvpn設定はしたくない。
|
40
|
-
|
62
|
+
|
63
|
+
|
64
|
+
|
41
|
-
|
65
|
+
プログラムの通信を経由させる事を考えると、プログラム上でも人間でも簡単な操作により、wan2が利用できることが望ましいので、方法はプロキシあたりになると思います。
|
42
|
-
|
66
|
+
|
43
|
-
大きな変更はプロキシとなるrpiに対して行うものと
|
67
|
+
そして、大きな変更はプロキシとなるrpiに対して行うものとして、
|
44
|
-
|
68
|
+
|
45
|
-
|
69
|
+
client機器には負担をかけたくない。
|
46
|
-
|
47
|
-
|
48
|
-
|
70
|
+
|
71
|
+
|
72
|
+
|
49
|
-
自分が考えている方法は、rpi
|
73
|
+
自分が考えている方法は、rpi-eth0にプロキシ接続をして、ルーティングされる方法です。
|
50
|
-
|
74
|
+
|
51
|
-
やった方法は、
|
75
|
+
やった方法は、 「dante socks proxy」で、
|
76
|
+
|
52
|
-
|
77
|
+
途中で諦めて、再び試しているのは、「squid + iptables」です。
|
78
|
+
|
79
|
+
|
80
|
+
|
53
|
-
できな
|
81
|
+
できていないので、経緯を詳しく書きます。
|
54
|
-
|
82
|
+
|
55
|
-
使用したツールについての動作や概念を正しく理解している自
|
83
|
+
使用したツールについての動作や概念を正しく理解している自信がないため、
|
84
|
+
|
85
|
+
自分の理解を提示しつつ、説明を書いていきます。
|
56
86
|
|
57
87
|
|
58
88
|
|
@@ -62,6 +92,262 @@
|
|
62
92
|
|
63
93
|
```
|
64
94
|
|
95
|
+
・subnet-B宛の通信はeth1を経由するが、それ以外はeth0経由となる。
|
96
|
+
|
97
|
+
```
|
98
|
+
|
99
|
+
|
100
|
+
|
101
|
+
### 該当のソースコード
|
102
|
+
|
103
|
+
|
104
|
+
|
105
|
+
「danted.conf」の設定
|
106
|
+
|
107
|
+
|
108
|
+
|
109
|
+
・入口と出口のnicを別々にした
|
110
|
+
|
111
|
+
・カーネルパニック対策にローカルアドレスに対しても、client passを設定した。(https://qiita.com/hirohiro77/items/087c4d9e6b03050f70ad)
|
112
|
+
|
113
|
+
|
114
|
+
|
115
|
+
```
|
116
|
+
|
117
|
+
# $Id: sockd.conf,v 1.52.10.2 2014/09/03 14:49:13 michaels Exp $
|
118
|
+
|
119
|
+
logoutput: syslog stdout /var/log/sockd.log
|
120
|
+
|
121
|
+
debug: 1
|
122
|
+
|
123
|
+
internal: eth0 port = 1080
|
124
|
+
|
125
|
+
external: eth1
|
126
|
+
|
127
|
+
socksmethod: none
|
128
|
+
|
129
|
+
clientmethod: none
|
130
|
+
|
131
|
+
user.privileged: root
|
132
|
+
|
133
|
+
user.unprivileged: nobody
|
134
|
+
|
135
|
+
timeout.connect: 30
|
136
|
+
|
137
|
+
client pass {
|
138
|
+
|
139
|
+
from: 192.168.0.0/24 port 1-65535 to: 0.0.0.0/0
|
140
|
+
|
141
|
+
}
|
142
|
+
|
143
|
+
client pass {
|
144
|
+
|
145
|
+
from: 127.0.0.1/32 port 1-65535 to: 0.0.0.0/0
|
146
|
+
|
147
|
+
}
|
148
|
+
|
149
|
+
socks pass {
|
150
|
+
|
151
|
+
from: 192.168.0.0/24 to: 0.0.0.0/0
|
152
|
+
|
153
|
+
}
|
154
|
+
|
155
|
+
```
|
156
|
+
|
157
|
+
|
158
|
+
|
159
|
+
### 試したこと
|
160
|
+
|
161
|
+
|
162
|
+
|
163
|
+
まず、firefoxのプロキシ設定を
|
164
|
+
|
165
|
+
|
166
|
+
|
167
|
+
protocol version : socks_v4 or v5
|
168
|
+
|
169
|
+
proxy server:eth0のipアドレス
|
170
|
+
|
171
|
+
|
172
|
+
|
173
|
+
に設定した。
|
174
|
+
|
175
|
+
|
176
|
+
|
177
|
+
また、上記に記載したdanted.confの設定により、eth0からeth1に転送できるようにしたつもり。
|
178
|
+
|
179
|
+
|
180
|
+
|
181
|
+
まず、client-pcからのsocks proxy接続の結果について、
|
182
|
+
|
183
|
+
|
184
|
+
|
185
|
+
すると、sub-gw(192.168.1.1)の管理画面にはアクセスできる、つまり、
|
186
|
+
|
187
|
+
subnet-B(eth1を経由とは書かない)を経由しているが、
|
188
|
+
|
189
|
+
1.1.1.1 (dns無しでhttp/httpsアクセス可能なアドレスで試行) には、
|
190
|
+
|
191
|
+
subnet-Aを経由しています。
|
192
|
+
|
193
|
+
|
194
|
+
|
195
|
+
tcpdumpで確認すると、
|
196
|
+
|
197
|
+
subnet-B宛は、tcpdump -i eth1 で確認できるが、
|
198
|
+
|
199
|
+
1.1.1.1宛は、tcpdump -i eth0で、しかも送信元が192.168.1.3(eth1)のアドレスです。
|
200
|
+
|
201
|
+
|
202
|
+
|
203
|
+
つまり、danteの設定において、
|
204
|
+
|
205
|
+
宛先がsubnet-B以外だと、必ずeth0から出力されるが、送信元がexternalで設定したeth1のアドレスとなり、応答パケット受信できないです。
|
206
|
+
|
207
|
+
この意味は、danteの設定において、interanlとexternalが異なる事は、
|
208
|
+
|
209
|
+
送信先ネットワークセグメントの違いとは限らない、ということなので、
|
210
|
+
|
211
|
+
セグメント分けには利用できないです。
|
212
|
+
|
213
|
+
|
214
|
+
|
215
|
+
次に、proxy server本体となるrpiを送信元とする結果について
|
216
|
+
|
217
|
+
|
218
|
+
|
219
|
+
rpiにssh loginしてpingすると、
|
220
|
+
|
221
|
+
subnet-B宛はeth1を通るが、
|
222
|
+
|
223
|
+
それ以外はeth0を経由しており、
|
224
|
+
|
225
|
+
宛先選択には、danteの設定以前にosのルーティングテーブルが優先されているようです。(以下に貼り付けた)
|
226
|
+
|
227
|
+
danteなら異なるnic間の転送ができると期待しましたが、異なるネットワークセグメント間の転送はできないようです。
|
228
|
+
|
229
|
+
|
230
|
+
|
231
|
+
```
|
232
|
+
|
233
|
+
root@raspberrypi:/etc# ip route
|
234
|
+
|
235
|
+
default via 192.168.0.1 dev eth0 src 192.168.0.3 metric 202
|
236
|
+
|
237
|
+
default via 192.168.1.1 dev eth1 src 192.168.1.3 metric 203
|
238
|
+
|
239
|
+
192.168.0.0/24 dev eth0 proto kernel scope link src 192.168.0.3 metric 202
|
240
|
+
|
241
|
+
192.168.1.0/24 dev eth1 proto kernel scope link src 192.168.1.3 metric 203
|
242
|
+
|
243
|
+
```
|
244
|
+
|
245
|
+
|
246
|
+
|
247
|
+
### 発生している問題・エラーメッセージ(というより、方法を模索中)(その2)
|
248
|
+
|
249
|
+
squid + iptablesについて
|
250
|
+
|
251
|
+
|
252
|
+
|
253
|
+
次に考えたことは、rpiにsquidを立て、client-pcからsquidに対する通信をiptablesによりsubnet-Bへルーティングする事です。http/httpsプロキシの挙動については知らないので、自分の理解を示しながら説明していきます。
|
254
|
+
|
255
|
+
|
256
|
+
|
257
|
+
http/httpsプロキシだと、本来の通信先サーバがどこでも、
|
258
|
+
|
259
|
+
client-pcがrpi-eth0 (192.168.0.3:3218)を宛先とする通信しかしない
|
260
|
+
|
261
|
+
(client pcからwirsharkで確認)ので、
|
262
|
+
|
263
|
+
squidで処理したあとの通信をどうにかしてsubnet-Bに向ける事が重要です。
|
264
|
+
|
265
|
+
|
266
|
+
|
267
|
+
次に、中継プロキシ-通信先サーバの間の通信について
|
268
|
+
|
269
|
+
|
270
|
+
|
271
|
+
http/httpsのproxy接続では、中継プロキシ-通信先サーバの間の通信は、
|
272
|
+
|
273
|
+
メインの通信内容(layer5以上?)はclient-pcのもの、
|
274
|
+
|
275
|
+
tcpヘッダまでは中継プロキシのものになる。
|
276
|
+
|
277
|
+
よって、実質的には、中継プロキシであるrpiを発信元とする通信とみなして問題を考えれば良い。
|
278
|
+
|
279
|
+
|
280
|
+
|
281
|
+
そこで、このサイトの
|
282
|
+
|
283
|
+
https://www.virment.com/iptables-outline/
|
284
|
+
|
285
|
+
「各チェインがどのパケットを対象とするかを表したイメージ図」を参考にすると、
|
286
|
+
|
287
|
+
「squid」というローカルプロセスで処理された通信を、「OUTPUT」「POSTROUTING」で操作する必要があります。
|
288
|
+
|
289
|
+
そして、これらの説明には、
|
290
|
+
|
291
|
+
|
292
|
+
|
293
|
+
引用文:
|
294
|
+
|
295
|
+
「
|
296
|
+
|
297
|
+
OUTPUTとPOSTROUTINGの違い
|
298
|
+
|
299
|
+
|
300
|
+
|
301
|
+
OUTPUTはローカルプロセスに処理されて出力されたパケット、すなわち送信元がホストマシンであるパケットを対象としているのに対し、POSTROUTINGは送信元がホストマシンであるとは限りません。例えば、FORWARDによって転送されたパケットも対象となります。
|
302
|
+
|
303
|
+
」
|
304
|
+
|
305
|
+
とあり、今回はrpi本体からの通信とみなして良いので、
|
306
|
+
|
307
|
+
説明文中の「ホストマシン」だけを考えており、実質的には、「OUTPUT」だけを考えれば良いです。
|
308
|
+
|
309
|
+
しかし、これでは、iptablesから見た時に、
|
310
|
+
|
311
|
+
src ipはrpi本体、src portはランダムなため、
|
312
|
+
|
313
|
+
squidからの通信かどうか判別不能です。
|
314
|
+
|
315
|
+
|
316
|
+
|
317
|
+
さらに、iptablesのsubnet-Bへの転送設定を弄ろうとしているので、
|
318
|
+
|
319
|
+
OUTPUTで変な設定をすると、
|
320
|
+
|
321
|
+
rpiへのssh accessも含め、全てsubnet Bへ転送されて、
|
322
|
+
|
323
|
+
ssh切断の危険性もあります。
|
324
|
+
|
325
|
+
|
326
|
+
|
327
|
+
となると、iptablesをやめて、squidの設定に、
|
328
|
+
|
329
|
+
client-pcからのsquid宛はsubnet-Bへ転送させる設定をする必要があります。
|
330
|
+
|
331
|
+
そのような設定があるか探しましたが、転送先を変更する方法として、「tcp_outgoing_address」というものがありましたが、
|
332
|
+
|
333
|
+
転送先nicではなく宛先ipが変更されるため、
|
334
|
+
|
335
|
+
通信先サーバへのアクセスができないです。
|
336
|
+
|
337
|
+
|
338
|
+
|
339
|
+
転送先nicとネットワークセグメントをうまく処理するツールがないため、
|
340
|
+
|
341
|
+
どうしようもありません。
|
342
|
+
|
343
|
+
自分でツール開発できるスキルはありません。
|
344
|
+
|
345
|
+
|
346
|
+
|
347
|
+
|
348
|
+
|
349
|
+
```
|
350
|
+
|
65
351
|
エラーメッセージ
|
66
352
|
|
67
353
|
```
|
@@ -72,196 +358,10 @@
|
|
72
358
|
|
73
359
|
|
74
360
|
|
75
|
-
「danted.conf」の設定
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
・入口と出口のnicを別々にした
|
80
|
-
|
81
|
-
・カーネルパニック対策にローカルアドレスに対しても、client passを設定した。(https://qiita.com/hirohiro77/items/087c4d9e6b03050f70ad)
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
```
|
86
|
-
|
87
|
-
# $Id: sockd.conf,v 1.52.10.2 2014/09/03 14:49:13 michaels Exp $
|
88
|
-
|
89
|
-
logoutput: syslog stdout /var/log/sockd.log
|
90
|
-
|
91
|
-
debug: 1
|
92
|
-
|
93
|
-
internal: eth0 port = 1080
|
94
|
-
|
95
|
-
external: eth1
|
96
|
-
|
97
|
-
socksmethod: none
|
98
|
-
|
99
|
-
clientmethod: none
|
100
|
-
|
101
|
-
user.privileged: root
|
102
|
-
|
103
|
-
user.unprivileged: nobody
|
104
|
-
|
105
|
-
timeout.connect: 30
|
106
|
-
|
107
|
-
client pass {
|
108
|
-
|
109
|
-
from: 192.168.0.0/24 port 1-65535 to: 0.0.0.0/0
|
110
|
-
|
111
|
-
}
|
112
|
-
|
113
|
-
client pass {
|
114
|
-
|
115
|
-
from: 127.0.0.1/32 port 1-65535 to: 0.0.0.0/0
|
116
|
-
|
117
|
-
}
|
118
|
-
|
119
|
-
socks pass {
|
120
|
-
|
121
|
-
from: 192.168.0.0/24 to: 0.0.0.0/0
|
122
|
-
|
123
|
-
}
|
124
|
-
|
125
|
-
```
|
126
|
-
|
127
361
|
|
128
362
|
|
129
363
|
### 試したこと
|
130
364
|
|
131
|
-
まず、firefoxのプロキシ設定からsocks_v4 or v5でeth0に設定した。
|
132
|
-
|
133
|
-
また、上記に記載したdanted.confの設定により、eth0からeth1に転送できるようにした。
|
134
|
-
|
135
|
-
すると、sub gw(192.168.1.1)の管理画面にはアクセスできる、つまり、
|
136
|
-
|
137
|
-
subnet B(eth1を経由とは書かない)を経由しているが、
|
138
|
-
|
139
|
-
1.1.1.1 (dns無しでhttp/httpsアクセス可能なアドレスで試行) には、
|
140
|
-
|
141
|
-
subnet Aを経由しています。
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
tcpdumpで確認すると、
|
146
|
-
|
147
|
-
subnet B宛は、tcpdump -i eth1 で確認できるが、
|
148
|
-
|
149
|
-
1.1.1.1宛は、tcpdump -i eth0で、しかも送信元が192.168.1.3(eth1)のアドレスです。
|
150
|
-
|
151
|
-
つまり、danteの設定において、
|
152
|
-
|
153
|
-
宛先がsubnet B以外だと、必ずeth0から出力されるが、送信元がexternalで設定したeth1のアドレスとなり、応答パケット受信できないです。
|
154
|
-
|
155
|
-
そして、interanlとexternalが異なる事は、送信先ネットワークセグメントの違いとはならないようなので、セグメント分けには利用できないです。
|
156
|
-
|
157
|
-
また、rpiにssh loginしてpingすると、subnet B宛はeth1を通るが、
|
158
|
-
|
159
|
-
それ以外はeth0を経由しており、
|
160
|
-
|
161
|
-
宛先選択には、danteの設定以前にosのルーティングテーブルが優先されているようです。(以下に貼り付けた)
|
162
|
-
|
163
|
-
danteなら異なるnic間の転送ができると期待しましたが。
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
```
|
168
|
-
|
169
|
-
root@raspberrypi:/etc# ip route
|
170
|
-
|
171
|
-
default via 192.168.0.1 dev eth0 src 192.168.0.3 metric 202
|
172
|
-
|
173
|
-
default via 192.168.1.1 dev eth1 src 192.168.1.3 metric 203
|
174
|
-
|
175
|
-
192.168.0.0/24 dev eth0 proto kernel scope link src 192.168.0.3 metric 202
|
176
|
-
|
177
|
-
192.168.1.0/24 dev eth1 proto kernel scope link src 192.168.1.3 metric 203
|
178
|
-
|
179
|
-
```
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
### 発生している問題・エラーメッセージ(その2)
|
184
|
-
|
185
|
-
squid + iptablesについて、
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
次に考えたことは、rpiにsquidを立て、client pcからsquidに対する通信をiptablesによりsubnet Bへルーティングする事です。
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
http/httpsプロキシだと、client pcがrpi (192.168.0.3:3218)を宛先とする通信しかしない(client pcからwirsharkで確認)ので、squidで処理したあとの通信をどう扱うかが重要です。
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
特に、このサイトの
|
198
|
-
|
199
|
-
https://www.virment.com/iptables-outline/
|
200
|
-
|
201
|
-
「各チェインがどのパケットを対象とするかを表したイメージ図」を参考にすると、
|
202
|
-
|
203
|
-
「squid」というローカルプロセスで処理された通信を、「OUTPUT」「POSTROUTING」で操作する必要があります。
|
204
|
-
|
205
|
-
そして、これらの説明には、
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
引用文:
|
210
|
-
|
211
|
-
「
|
212
|
-
|
213
|
-
OUTPUTとPOSTROUTINGの違い
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
OUTPUTはローカルプロセスに処理されて出力されたパケット、すなわち送信元がホストマシンであるパケットを対象としているのに対し、POSTROUTINGは送信元がホストマシンであるとは限りません。例えば、FORWARDによって転送されたパケットも対象となります。
|
218
|
-
|
219
|
-
」
|
220
|
-
|
221
|
-
とあり、実質的には、「OUTPUT」だけを考えれば良いです。
|
222
|
-
|
223
|
-
そして、http/https接続では、中継プロキシ-通信先サーバの間の通信は、
|
224
|
-
|
225
|
-
tcpヘッダまでは中継プロキシのものになるので、
|
226
|
-
|
227
|
-
iptablesから見た時に、src ip,portによりsquidからの通信かどうか判別不能です。
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
だから、OUTPUTで変な設定をすると、rpiへのssh accessも含め、全てsubnet Bへ転送されて、ssh切断の危険性もあります。
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
となると、squidの設定に、squid宛はsubnet Bへ転送させる設定をすることになりますが、tcp_outgoing_addressを設定すると、転送先nicが変更されるのではなく、宛先ipが変更されており、通信先サーバへのアクセスができないです。
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
転送先nicとネットワークセグメントをうまく処理するツールがないため、
|
240
|
-
|
241
|
-
どうしようもありません。
|
242
|
-
|
243
|
-
自分でツール開発できるスキルはありません。
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
```
|
250
|
-
|
251
|
-
エラーメッセージ
|
252
|
-
|
253
|
-
```
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
### 該当のソースコード
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
### 試したこと
|
264
|
-
|
265
365
|
### 補足情報(FW/ツールのバージョンなど)
|
266
366
|
|
267
367
|
dante 1.52.10.2
|
8
タグ追加
test
CHANGED
File without changes
|
test
CHANGED
File without changes
|
7
あ
test
CHANGED
File without changes
|
test
CHANGED
@@ -36,7 +36,7 @@
|
|
36
36
|
|
37
37
|
特定の操作をしたときに、sub gwを経由してwan2を利用できればよいので、
|
38
38
|
|
39
|
-
どんな方法でも良いが、client pcのip routeの変更はしたくない。
|
39
|
+
どんな方法でも良いが、client pcのip routeの変更やvpn設定はしたくない。
|
40
40
|
|
41
41
|
あくまでも、簡易な特定の操作により、wan2が利用できることが望ましいので、
|
42
42
|
|
@@ -76,7 +76,7 @@
|
|
76
76
|
|
77
77
|
|
78
78
|
|
79
|
-
・入
|
79
|
+
・入口と出口のnicを別々にした
|
80
80
|
|
81
81
|
・カーネルパニック対策にローカルアドレスに対しても、client passを設定した。(https://qiita.com/hirohiro77/items/087c4d9e6b03050f70ad)
|
82
82
|
|
6
iptables squidではできないこと
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
squid+iptables , dante socks等
|
1
|
+
squid + iptables , dante socks等を利用したプロキシー接続による異なるnic or ネットワークセグメント間のルーティングについて
|
test
CHANGED
@@ -52,7 +52,7 @@
|
|
52
52
|
|
53
53
|
できなかったので、経緯を詳しく書きます。
|
54
54
|
|
55
|
-
|
55
|
+
使用したツールについての動作や概念を正しく理解している自身はありません。
|
56
56
|
|
57
57
|
|
58
58
|
|
@@ -190,13 +190,15 @@
|
|
190
190
|
|
191
191
|
|
192
192
|
|
193
|
-
http/httpsプロキシだと、client pcがrpi (192.168.0.3:3218)を宛先とする通信しかしないので、squidで処理したあとの通信をどう扱うかが重要です。
|
193
|
+
http/httpsプロキシだと、client pcがrpi (192.168.0.3:3218)を宛先とする通信しかしない(client pcからwirsharkで確認)ので、squidで処理したあとの通信をどう扱うかが重要です。
|
194
|
+
|
195
|
+
|
194
196
|
|
195
197
|
特に、このサイトの
|
196
198
|
|
197
199
|
https://www.virment.com/iptables-outline/
|
198
200
|
|
199
|
-
「各チェインがどのパケットを対象とするかを表したイメージ図」
|
201
|
+
「各チェインがどのパケットを対象とするかを表したイメージ図」を参考にすると、
|
200
202
|
|
201
203
|
「squid」というローカルプロセスで処理された通信を、「OUTPUT」「POSTROUTING」で操作する必要があります。
|
202
204
|
|
@@ -216,9 +218,17 @@
|
|
216
218
|
|
217
219
|
」
|
218
220
|
|
221
|
+
とあり、実質的には、「OUTPUT」だけを考えれば良いです。
|
222
|
+
|
219
|
-
|
223
|
+
そして、http/https接続では、中継プロキシ-通信先サーバの間の通信は、
|
224
|
+
|
220
|
-
|
225
|
+
tcpヘッダまでは中継プロキシのものになるので、
|
226
|
+
|
227
|
+
iptablesから見た時に、src ip,portによりsquidからの通信かどうか判別不能です。
|
228
|
+
|
229
|
+
|
230
|
+
|
221
|
-
だから、OUTPUTで変な設定をすると、rpiへのssh accessも含め、全てsubnet B
|
231
|
+
だから、OUTPUTで変な設定をすると、rpiへのssh accessも含め、全てsubnet Bへ転送されて、ssh切断の危険性もあります。
|
222
232
|
|
223
233
|
|
224
234
|
|
@@ -226,8 +236,14 @@
|
|
226
236
|
|
227
237
|
|
228
238
|
|
239
|
+
転送先nicとネットワークセグメントをうまく処理するツールがないため、
|
240
|
+
|
229
241
|
どうしようもありません。
|
230
242
|
|
243
|
+
自分でツール開発できるスキルはありません。
|
244
|
+
|
245
|
+
|
246
|
+
|
231
247
|
|
232
248
|
|
233
249
|
```
|
5
iptables or squidの設定ではどうにもできない
test
CHANGED
File without changes
|
test
CHANGED
@@ -182,9 +182,51 @@
|
|
182
182
|
|
183
183
|
### 発生している問題・エラーメッセージ(その2)
|
184
184
|
|
185
|
-
squid + iptables
|
185
|
+
squid + iptablesについて、
|
186
|
+
|
187
|
+
|
188
|
+
|
186
|
-
|
189
|
+
次に考えたことは、rpiにsquidを立て、client pcからsquidに対する通信をiptablesによりsubnet Bへルーティングする事です。
|
190
|
+
|
191
|
+
|
192
|
+
|
187
|
-
|
193
|
+
http/httpsプロキシだと、client pcがrpi (192.168.0.3:3218)を宛先とする通信しかしないので、squidで処理したあとの通信をどう扱うかが重要です。
|
194
|
+
|
195
|
+
特に、このサイトの
|
196
|
+
|
197
|
+
https://www.virment.com/iptables-outline/
|
198
|
+
|
199
|
+
「各チェインがどのパケットを対象とするかを表したイメージ図」に参考にすると、
|
200
|
+
|
201
|
+
「squid」というローカルプロセスで処理された通信を、「OUTPUT」「POSTROUTING」で操作する必要があります。
|
202
|
+
|
203
|
+
そして、これらの説明には、
|
204
|
+
|
205
|
+
|
206
|
+
|
207
|
+
引用文:
|
208
|
+
|
209
|
+
「
|
210
|
+
|
211
|
+
OUTPUTとPOSTROUTINGの違い
|
212
|
+
|
213
|
+
|
214
|
+
|
215
|
+
OUTPUTはローカルプロセスに処理されて出力されたパケット、すなわち送信元がホストマシンであるパケットを対象としているのに対し、POSTROUTINGは送信元がホストマシンであるとは限りません。例えば、FORWARDによって転送されたパケットも対象となります。
|
216
|
+
|
217
|
+
」
|
218
|
+
|
219
|
+
とあり、http/https接続では、中継プロキシ-通信先サーバの間の通信は、tcpヘッダまでは中継プロキシのものになるので、squidによる通信か判別不能です。
|
220
|
+
|
221
|
+
だから、OUTPUTで変な設定をすると、rpiへのssh accessも含め、全てsubnet Bからやる必要が出る可能性もあります。
|
222
|
+
|
223
|
+
|
224
|
+
|
225
|
+
となると、squidの設定に、squid宛はsubnet Bへ転送させる設定をすることになりますが、tcp_outgoing_addressを設定すると、転送先nicが変更されるのではなく、宛先ipが変更されており、通信先サーバへのアクセスができないです。
|
226
|
+
|
227
|
+
|
228
|
+
|
229
|
+
どうしようもありません。
|
188
230
|
|
189
231
|
|
190
232
|
|
4
あ
test
CHANGED
File without changes
|
test
CHANGED
@@ -128,9 +128,9 @@
|
|
128
128
|
|
129
129
|
### 試したこと
|
130
130
|
|
131
|
-
まず、firefoxのプロキシ設定からsocks_v4 or v5でeth0に設定し
|
131
|
+
まず、firefoxのプロキシ設定からsocks_v4 or v5でeth0に設定した。
|
132
|
-
|
132
|
+
|
133
|
-
eth0からeth1に
|
133
|
+
また、上記に記載したdanted.confの設定により、eth0からeth1に転送できるようにした。
|
134
134
|
|
135
135
|
すると、sub gw(192.168.1.1)の管理画面にはアクセスできる、つまり、
|
136
136
|
|
@@ -138,7 +138,9 @@
|
|
138
138
|
|
139
139
|
1.1.1.1 (dns無しでhttp/httpsアクセス可能なアドレスで試行) には、
|
140
140
|
|
141
|
-
et
|
141
|
+
subnet Aを経由しています。
|
142
|
+
|
143
|
+
|
142
144
|
|
143
145
|
tcpdumpで確認すると、
|
144
146
|
|
@@ -148,9 +150,9 @@
|
|
148
150
|
|
149
151
|
つまり、danteの設定において、
|
150
152
|
|
151
|
-
宛先がsubnet B以外だと、必ずeth0から出力されるが、送信元がexternalで設定したeth1のアドレスとなり、
|
153
|
+
宛先がsubnet B以外だと、必ずeth0から出力されるが、送信元がexternalで設定したeth1のアドレスとなり、応答パケット受信できないです。
|
152
|
-
|
154
|
+
|
153
|
-
interanlとexternalが異なる事は、送信先ネットワークセグメントの違いとはならないようなので、セグメント分けには利用できないです。
|
155
|
+
そして、interanlとexternalが異なる事は、送信先ネットワークセグメントの違いとはならないようなので、セグメント分けには利用できないです。
|
154
156
|
|
155
157
|
また、rpiにssh loginしてpingすると、subnet B宛はeth1を通るが、
|
156
158
|
|
3
danteがnic設定が宛先ネットワークセグメントを選択できない事
test
CHANGED
File without changes
|
test
CHANGED
@@ -72,7 +72,17 @@
|
|
72
72
|
|
73
73
|
|
74
74
|
|
75
|
-
|
75
|
+
「danted.conf」の設定
|
76
|
+
|
77
|
+
|
78
|
+
|
79
|
+
・入り口と出口のポートを別々にした
|
80
|
+
|
81
|
+
・カーネルパニック対策にローカルアドレスに対しても、client passを設定した。(https://qiita.com/hirohiro77/items/087c4d9e6b03050f70ad)
|
82
|
+
|
83
|
+
|
84
|
+
|
85
|
+
```
|
76
86
|
|
77
87
|
# $Id: sockd.conf,v 1.52.10.2 2014/09/03 14:49:13 michaels Exp $
|
78
88
|
|
@@ -124,15 +134,31 @@
|
|
124
134
|
|
125
135
|
すると、sub gw(192.168.1.1)の管理画面にはアクセスできる、つまり、
|
126
136
|
|
127
|
-
eth1を経由しているが、
|
137
|
+
subnet B(eth1を経由とは書かない)を経由しているが、
|
128
138
|
|
129
139
|
1.1.1.1 (dns無しでhttp/httpsアクセス可能なアドレスで試行) には、
|
130
140
|
|
141
|
+
eth0を経由しています。
|
142
|
+
|
143
|
+
tcpdumpで確認すると、
|
144
|
+
|
131
|
-
et
|
145
|
+
subnet B宛は、tcpdump -i eth1 で確認できるが、
|
146
|
+
|
147
|
+
1.1.1.1宛は、tcpdump -i eth0で、しかも送信元が192.168.1.3(eth1)のアドレスです。
|
148
|
+
|
149
|
+
つまり、danteの設定において、
|
150
|
+
|
151
|
+
宛先がsubnet B以外だと、必ずeth0から出力されるが、送信元がexternalで設定したeth1のアドレスとなり、
|
152
|
+
|
153
|
+
interanlとexternalが異なる事は、送信先ネットワークセグメントの違いとはならないようなので、セグメント分けには利用できないです。
|
132
154
|
|
133
155
|
また、rpiにssh loginしてpingすると、subnet B宛はeth1を通るが、
|
134
156
|
|
157
|
+
それ以外はeth0を経由しており、
|
158
|
+
|
135
|
-
|
159
|
+
宛先選択には、danteの設定以前にosのルーティングテーブルが優先されているようです。(以下に貼り付けた)
|
160
|
+
|
161
|
+
danteなら異なるnic間の転送ができると期待しましたが。
|
136
162
|
|
137
163
|
|
138
164
|
|
2
修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -38,7 +38,9 @@
|
|
38
38
|
|
39
39
|
どんな方法でも良いが、client pcのip routeの変更はしたくない。
|
40
40
|
|
41
|
-
あくまでも、簡易な特定の操作により、wan2が利用できることが望ましい
|
41
|
+
あくまでも、簡易な特定の操作により、wan2が利用できることが望ましいので、
|
42
|
+
|
43
|
+
大きな変更はプロキシとなるrpiに対して行うものとする。
|
42
44
|
|
43
45
|
(プログラムの通信も通すことを考えて)
|
44
46
|
|
1
追加
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
プロキシー接続による異なるnic or ネットワークセグメント間のルーティング
|
1
|
+
squid+iptables , dante socks等によるプロキシー接続による異なるnic or ネットワークセグメント間のルーティング
|
test
CHANGED
@@ -1,4 +1,8 @@
|
|
1
1
|
### 前提・実現したいこと
|
2
|
+
|
3
|
+
(書いている途中ですが、何個か試したので、随時追加で投稿します。)
|
4
|
+
|
5
|
+
|
2
6
|
|
3
7
|
2つの回線があり、メインの回線とは別に、特定の操作をした時にサブ回線を通るようにしたい。
|
4
8
|
|
@@ -30,7 +34,15 @@
|
|
30
34
|
|
31
35
|
|
32
36
|
|
33
|
-
特定の操作をしたときに、sub gwを経由してwan2を利用
|
37
|
+
特定の操作をしたときに、sub gwを経由してwan2を利用できればよいので、
|
38
|
+
|
39
|
+
どんな方法でも良いが、client pcのip routeの変更はしたくない。
|
40
|
+
|
41
|
+
あくまでも、簡易な特定の操作により、wan2が利用できることが望ましい。
|
42
|
+
|
43
|
+
(プログラムの通信も通すことを考えて)
|
44
|
+
|
45
|
+
|
34
46
|
|
35
47
|
自分が考えている方法は、rpi eth0にプロキシ接続をして、ルーティングされる方法です。
|
36
48
|
|
@@ -42,7 +54,7 @@
|
|
42
54
|
|
43
55
|
|
44
56
|
|
45
|
-
### 発生している問題・エラーメッセージ
|
57
|
+
### 発生している問題・エラーメッセージ(その1)
|
46
58
|
|
47
59
|
danteについて
|
48
60
|
|
@@ -114,7 +126,7 @@
|
|
114
126
|
|
115
127
|
1.1.1.1 (dns無しでhttp/httpsアクセス可能なアドレスで試行) には、
|
116
128
|
|
117
|
-
eth0を経由しています。これらはtcpdumpでも確認済みです。
|
129
|
+
eth0を経由しています。これらはrpi上でのtcpdumpでも確認済みです。
|
118
130
|
|
119
131
|
また、rpiにssh loginしてpingすると、subnet B宛はeth1を通るが、
|
120
132
|
|
@@ -138,6 +150,30 @@
|
|
138
150
|
|
139
151
|
|
140
152
|
|
153
|
+
### 発生している問題・エラーメッセージ(その2)
|
154
|
+
|
155
|
+
squid + iptables
|
156
|
+
|
157
|
+
|
158
|
+
|
159
|
+
|
160
|
+
|
161
|
+
```
|
162
|
+
|
163
|
+
エラーメッセージ
|
164
|
+
|
165
|
+
```
|
166
|
+
|
167
|
+
|
168
|
+
|
169
|
+
### 該当のソースコード
|
170
|
+
|
171
|
+
|
172
|
+
|
173
|
+
|
174
|
+
|
175
|
+
### 試したこと
|
176
|
+
|
141
177
|
### 補足情報(FW/ツールのバージョンなど)
|
142
178
|
|
143
179
|
dante 1.52.10.2
|