質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.36%

  • ネットワーク

    592questions

    ネットワークとは、複数のコンピューター間を接続する技術です。インターネットが最も主流なネットワークの形態で、TCP/IP・HTTP・DNSなどの様々なプロトコルや、ルータやサーバーなどの様々な機器の上に成り立っています。

  • ルーティング

    49questions

    ルーティングとは、TCP/IPネットワークにおいて、目的のホストまでパケットを送る為のパス選定のプロセスを言います。

  • firewalld

    27questions

  • Squid

    24questions

プロキシー接続による異なるネットワーク間のルーティングができない。(その2)

受付中

回答 0

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 230

minsuke54

score 0

 注意点

以前の投稿の字数制限のため、
こちらに追加の質問をします。実現したい事等は、以前の投稿を参照して下さい。
(teratailの投稿字数のカウント方法はマルチバイト=2,空白=1としているのでしょうか?)

 発生している問題・エラーメッセージ)(その4)

以前の投稿からの続きなので、その4にしました。

rpiを再起動すると、iptablesの設定が消えるため、firewalldを利用する事にしました。また、firewalldの設定ミスでどのnicからもrpiにアクセス不能になるので、
回復nicを設けました。それに伴い、物理nic名を以下のように変更しました。
eth0 -> main-eth
eth1 -> proxy-eth
回復nic : rescue-eth

また、このリンクのownerモジュール一覧にある、「--cmd-owner」により、squidコマンド自体をルーティング対象にしました。しかし、ルート変更以前にproxy接続ができません。

firewalldの設定は、proxynet,rescuenetという2つのzoneを利用し、以下の結果が得られています。

root@raspberrypi:/etc/firewalld# firewall-cmd --get-active-zone
proxynet
  interfaces: main-eth
  sources: 192.168.0.0/24
rescuenet
  interfaces: rescue-eth


squidコマンドに対するルートテーブル変更

main_eth_ip=$(ip addr show main-eth|grep -v inet6|awk '/inet/ {print $2}'|cut -d/ -f1) &&
proxy_eth_ip=$(ip addr show proxy-eth|grep -v inet6|awk '/inet/ {print $2}'|cut -d/ -f1) &&
proxy_route_tbl=proxygw &&
proxy_route_tbl_number=201 &&
echo 1 > /proc/sys/net/ipv4/ip_forward &&
##ipコマンドによる一連の設定 &&
RT_TBL_FILE=/etc/iproute2/rt_tables
RT_TBL_STR="$proxy_route_tbl_number $proxy_route_tbl"
if [ -z "$(cat $RT_TBL_FILE|grep -a $RT_TBL_STR)"  ]; then
   echo $RT_TBL_STR >> $RT_TBL_FILE 
fi
main_eth_met=203 &&
proxy_eth_met=202 &&
ip rule  add fwmark 1 table $proxy_route_tbl &&
ip route add table $proxy_route_tbl default via 192.168.0.1 dev main-eth src $main_eth_ip metric $main_eth_met &&
ip route add table $proxy_route_tbl default via 192.168.1.1 dev proxy-eth src $proxy_eth_ip metric $proxy_eth_met &&
ip route add table $proxy_route_tbl 192.168.0.0/24 dev main-eth proto kernel scope link src $main_eth_ip metric $main_eth_met &&
ip route add table $proxy_route_tbl 192.168.1.0/24 dev proxy-eth proto kernel scope link src $proxy_eth_ip metric $proxy_eth_met &&
##firewalldの設定 &&
firewall-cmd --zone=proxynet --add-rich-rule='rule family="ipv4" source address="192.168.0.0/24" accept' --permanent &&
firewall-cmd --zone=proxynet --add-rich-rule='rule family="ipv4" source address="192.168.0.0/24" service name="squid" mark set="1"' --permanent
# ipコマンド,firewalld 初期化用
ip rule  del fwmark 1 table $proxy_route_tbl &&
ip route del table $proxy_route_tbl default via 192.168.0.1 dev main-eth src $main_eth_ip metric $main_eth_met &&
ip route del table $proxy_route_tbl default via 192.168.1.1 dev proxy-eth src $proxy_eth_ip metric $proxy_eth_met &&
ip route del table $proxy_route_tbl 192.168.0.0/24 dev main-eth proto kernel scope link src $main_eth_ip metric $main_eth_met &&
ip route del table $proxy_route_tbl 192.168.1.0/24 dev proxy-eth proto kernel scope link src $proxy_eth_ip metric $proxy_eth_met &&
firewall-cmd --zone=proxynet --remove-rich-rule='rule family="ipv4" source address="192.168.0.0/24" accept' --permanent &&
firewall-cmd --zone=proxynet --remove-rich-rule='rule family="ipv4" source address="192.168.0.0/24" service name="squid" mark set="1"' --permanent

また、変更後のip route,iptables(firewalldは内部的にはiptablesを利用)の設定は、

ip routeの変更後の設定

root@raspberrypi:/# ip route show table main
default via 192.168.0.1 dev main-eth src 192.168.0.4 metric 202 
default via 192.168.0.1 dev rescue-eth src 192.168.0.8 metric 203 
default via 192.168.1.1 dev proxy-eth src 192.168.1.2 metric 204 
192.168.0.0/24 dev main-eth proto kernel scope link src 192.168.0.4 metric 202 
192.168.0.0/24 dev rescue-eth proto kernel scope link src 192.168.0.8 metric 203 
192.168.1.0/24 dev proxy-eth proto kernel scope link src 192.168.1.2 metric 204 

root@raspberrypi:/# ip route show table proxygw
default via 192.168.1.1 dev proxy-eth src 192.168.1.2 metric 202 
default via 192.168.0.1 dev main-eth src 192.168.0.4 metric 203 
192.168.0.0/24 dev main-eth proto kernel scope link src 192.168.0.4 metric 203 
192.168.1.0/24 dev proxy-eth proto kernel scope link src 192.168.1.2 metric 202 

firewalldの設定変更後のiptablesの設定について
字数制限のため、明らかに無関係な「public」ゾーンの非表記や、
(AAA=allow,deny,log)というまとめた表記をしました。

iptables -Lの実行結果

root@raspberrypi:/# iptables -L
Chain INPUT (policy ACCEPT)
target  prot opt source destination
ACCEPT  all -- anywhere anywhere  ctstate RELATED,ESTABLISHED
ACCEPT  all -- anywhere anywhere
INPUT_direct all -- anywhere anywhere
INPUT_ZONES_SOURCE all -- anywhere anywhere
INPUT_ZONES all -- anywhere anywhere
DROP    all -- anywhere anywhere ctstate INVALID
REJECT  all -- anywhere anywhere reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT)
target  prot opt source    destination
ACCEPT  all  --  anywhere  anywhere     ctstate RELATED,ESTABLISHED
ACCEPT  all  --  anywhere   anywhere
FORWARD_direct  all --  anywhere   anywhere
FORWARD_IN_ZONES_SOURCE all  --  anywhere    anywhere
FORWARD_IN_ZONES  all  --  anywhere   anywhere
FORWARD_OUT_ZONES_SOURCE  all  --  anywhere  anywhere
FORWARD_OUT_ZONES  all  --  anywhere  anywhere
DROP    all  --  anywhere   anywhere   ctstate INVALID
REJECT  all  --  anywhere   anywhere    reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT)
target     prot opt source    destination
OUTPUT_direct  all  --  anywhere   anywhere

Chain FORWARD_IN_ZONES (1 references)
target  prot opt source  destination
FWDI_proxynet all -- anywhere  anywhere [goto]

Chain FORWARD_IN_ZONES_SOURCE (1 references)
target prot opt source  destination
FWDI_proxynet  all -- 192.168.0.0/24  anywhere  [goto]

Chain FORWARD_OUT_ZONES (1 references)
target prot opt source  destination
FWDO_proxynet all -- anywhere  anywhere  [goto]

Chain FORWARD_OUT_ZONES_SOURCE (1 references)
target prot opt source   destination
FWDO_proxynet  all  --  anywhere   192.168.0.0/24  [goto]

Chain FORWARD_direct (1 references)
target    prot opt source     destination

Chain FWDI_proxynet (2 references)(AAA=allow,deny,log)
target prot opt source destination    
FWDI_proxynet_AAA all -- anywhere anywhere    
ACCEPT icmp -- anywhere anywhere            

Chain FWDI_proxynet_AAA (1 references) (AAA=allow,deny,log)
target  prot opt source destination         

Chain FWDO_proxynet (2 references) (AAA=allow,deny,log)
target  prot opt source          destination         
FWDO_proxynet_AAA all -- anywhere anywhere      

Chain FWDO_proxynet_AAA (1 references) (AAA=allow,deny,log)
target prot opt source destination   

Chain INPUT_ZONES (1 references)
target   prot opt source       destination         
IN_proxynet  all  --  anywhere anywhere [goto] 

Chain INPUT_ZONES_SOURCE (1 references)
target  prot opt source          destination         
IN_proxynet all -- 192.168.0.0/24 anywhere [goto] 

Chain INPUT_direct (1 references)
target prot opt source   destination         
ACCEPT icmp --  anywhere anywhere            

Chain IN_proxynet (2 references) (AAA=allow,deny,log)
target     prot opt source        destination         
IN_proxynet_AAA all -- anywhere   anywhere
ACCEPT    icmp -- anywhere        anywhere            

Chain IN_proxynet_allow (1 references)
target     prot opt source          destination         
ACCEPT     tcp  --  anywhere        anywhere     tcp dpt:3128 ctstate NEW
ACCEPT     tcp  --  anywhere        anywhere     tcp dpt:ftps ctstate NEW
ACCEPT     udp  --  anywhere        224.0.0.251  udp dpt:mdns ctstate NEW
ACCEPT     tcp  --  anywhere        anywhere     tcp dpt:ssh ctstate NEW
ACCEPT     all  --  192.168.0.0/24  anywhere              

Chain IN_proxynet_AAA (1 references) (AAA=deny,log)
target     prot opt source    destination                  

Chain OUTPUT_direct (1 references)
target     prot opt source    destination         


iptables -L -t mangleの実行結果

root@raspberrypi:/# iptables -L -t mangle
Chain PREROUTING (policy ACCEPT)
target     prot opt source              destination
PREROUTING_direct all -- anywhere       anywhere
PREROUTING_ZONES_SOURCE all -- anywhere anywhere
PREROUTING_ZONES all --  anywhere       anywhere

Chain AAA (policy ACCEPT) (AAA=FORWARD,INPUT,OUTPUT,POSTROUTING)
target   prot opt source   destination
AAA_direct all -- anywhere anywhere

Chain AAA_direct (1 references) (AAA=FORWARD,INPUT,OUTPUT,POSTROUTING)
target prot opt source destination 

Chain PREROUTING_ZONES (1 references)
target     prot opt source     destination 
PRE_proxynet  all  --  anywhere             anywhere  [goto] 

Chain PREROUTING_ZONES_SOURCE (1 references)
target     prot opt source    destination
PRE_proxynet  all  --  192.168.0.0/24       anywhere  [goto] 

Chain PREROUTING_direct (1 references)
target     prot opt source     destination 

Chain PRE_proxynet (2 references) (AAA=allow,deny,log)
target prot opt source destination
PRE_proxynet_AAA all -- anywhere anywhere 

Chain PRE_proxynet_allow (1 references)
target     prot opt source    destination
MARK       tcp  --  192.168.0.0/24       anywhere   tcp dpt:3128 MARK set 0x1

Chain PRE_proxynet_AAA (1 references) (AAA=deny,log)
target prot opt source destination

具体的な症状

・squid proxyから503のhttpレスポンス
・1.1.1.1宛へのproxy接続を試行すると、src ipがeth1であるリクエストが物理nicがeth0であるインターフェースから送出をtsharkにより確認

 補足情報(FW/ツールのバージョンなど)

iptables v1.6.0
squid3-3.5.23
firewalld(確認方法不明)

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

まだ回答がついていません

同じタグがついた質問を見る

  • ネットワーク

    592questions

    ネットワークとは、複数のコンピューター間を接続する技術です。インターネットが最も主流なネットワークの形態で、TCP/IP・HTTP・DNSなどの様々なプロトコルや、ルータやサーバーなどの様々な機器の上に成り立っています。

  • ルーティング

    49questions

    ルーティングとは、TCP/IPネットワークにおいて、目的のホストまでパケットを送る為のパス選定のプロセスを言います。

  • firewalld

    27questions

  • Squid

    24questions