修正済み:BatchyXが言ったこと(リモートエンドで172.16.101.0/24ルートが欠落している)とリモート側のtincが-upスクリプトの実行に失敗した(スクリプトが実行可能ではなかった)ことの組み合わせであることが判明しました。
だから今、すべてがうまく機能しています、みんなの助けに感謝します:)
================================================== ===========================
私の問題は驚くほど説明が難しいので、細かく分割します。長いテキストで事前に申し訳ありません:)
ホスティングプロバイダーにパブリックIPを持つサーバーがあり、このサーバーはtinc(vpnソフトウェア)を実行しています。
自宅には、VLAN1(PCなどの通常のサブネットでNATの背後にある)と、vmwareラボ用のVLAN20の2つのVLANがあります。環境。
私が設定したいのは、VLAN20ネットワークが、自宅にある外部ゲートウェイではなく、ホスティングプロバイダーのサーバーをゲートウェイ(外部IP)として使用できるようにすることです。
そのために、自宅にサーバーがあり、2つのネットワークインターフェイスがあります。1つはVLAN1にNIC、もう1つはVLAN20にNICです。
私が次のipsを持っているとしましょう:
Server at hosting provider:
Public IP: 123.123.123.123 (eth0)
Private IP: 10.1.0.1/24 (tun0)
Network at home:
VLAN1 - 192.168.1.0/24 (.1 is the gateway)
VLAN20 - 172.16.101.0/24
Network on server at home:
NIC1 (VLAN1) - 192.168.1.50/24 (eth0)
NIC2 (VLAN20) - 172.16.101.1/24 (eth1)
Tunnel - 10.1.0.2/24 (tun0)
自宅のサーバーがトンネルを介して動作するようにtincを設定しました。自宅のサーバーから10.1.0.1に、ホスティングプロバイダーのサーバーから10.1.0.2にpingを実行できます。
これに加えて、自宅のサーバーがデフォルトゲートウェイにトンネルを使用するように設定しました。これはすべて自宅の実際のサーバーから機能します。私の問題は、VLAN20ネットワーク上のクライアントにインターネットへのアクセスを許可できないことです。
したがって、私が抱えている問題は、172.16.101.0/24ネットワークがトンネルのデフォルトゲートウェイを使用するようにルーティングを設定する方法がわからないことです。
自宅のサーバー上のルートは次のとおりです。
root@home:/etc/tinc/vpn/hosts# ip route
0.0.0.0/1 dev tun0 scope link
default via 192.168.1.1 dev eth0
10.1.0.0/24 dev tun0 proto kernel scope link src 10.1.0.2
123.123.132.123 via 192.168.1.1 dev eth0
128.0.0.0/1 dev tun0 scope link
172.16.101.0/24 dev eth1 proto kernel scope link src 172.16.101.1
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.50
/ 1は、トンネルが稼働しているときに追加されます。
ip route add 0.0.0.0/1 dev $INTERFACE
ip route add 128.0.0.0/1 dev $INTERFACE
自宅のサーバーから8.8.8.8へのtracerouteの実行:
root@home:/etc/tinc/vpn/hosts# traceroute -s 10.1.0.2 8.8.8.8 -n
traceroute to 8.8.8.8 (8.8.8.8), 30 Hops max, 60 byte packets
1 10.1.0.1 33.681 ms 33.698 ms 33.658 ms
2 Router_At_Hosting_Provider 34.930 ms 34.907 ms 34.875 ms
したがって、「トンネル」サブネット(10.1.0.0)は、トンネル上のデフォルトゲートウェイで正常に機能します。
これも正常に機能します。
root@home:/etc/tinc/vpn/hosts# traceroute -s 172.16.101.1 10.1.0.2 -n
traceroute to 10.1.0.2 (10.1.0.2), 30 Hops max, 60 byte packets
1 10.1.0.2 0.032 ms 0.003 ms 0.005 ms
しかし、私の問題はこれです:
root@home:/etc/tinc/vpn/hosts# traceroute -s 172.16.101.1 8.8.8.8 -n
traceroute to 8.8.8.8 (8.8.8.8), 30 Hops max, 60 byte packets
1 * * *
2 * * *
3 * * *
私がどこを見るべきかについて誰かが何か指針を持っているなら、それは本当に大いにありがたいです。
(プレーンなDebianインストール後に両方のサーバーに加えられた変更の完全なリストはここにあります http://Pastebin.com/r3Vsvycq )
編集私はVisioにひどく嫌いですが、これが私が設定しようとしているものを示すための私の試みです: http://i.stack.imgur.com/ff2R6.png (まだインラインにできないので私の担当者は十分に高くありません)。
この構成にはいくつかのWTFがあります。
ip route add 0.0.0.0/1 dev $INTERFACE
ip route add 128.0.0.0/1 dev $INTERFACE
自分を助けて、それをip route change default dev $INTERFACE
に置き換えてください。これにより、eth1のデフォルトゲートウェイが削除され、独自のゲートウェイに置き換えられます。最後にsrc 10.1.0.2
を追加して、そのルートで優先送信元アドレスを設定することもできます。
代わりに、デフォルトルートを維持したいが、独自のルートを追加したい場合は、元のデフォルトルートのメトリックを1以上に変更するだけです。デフォルトルートを追加すると、元のデフォルトルートが上書きされます(ただし、破棄はされません)。
また、VPNが稼働しているときの10.1.0.0/24へのルートは、デフォルトルートですでにカバーされているため、少し冗長です。
ルーティングテーブルとして必要なものは、次のようになります。
default dev tun0 scope link src 10.1.0.2
default via 192.168.1.1 dev eth0 metric 1
123.123.132.123 via 192.168.1.1 dev eth0
172.16.101.0/24 dev eth1 proto kernel scope link src 172.16.101.1
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.50
これで、このルーティングテーブルは正しいです。現在の唯一の問題は、サーバーに172.16.101.0/24へのルートがないため、パブリックインターフェイスを介してルーティングしようとすることです。リターンパスは基本的に壊れているため、tracerouteは機能しますが、pingは機能しません。
リモートサイトのルートをtun0経由で172.16.101.0/24に追加するだけで、問題ありません。