web-dev-qa-db-ja.com

サーバーAからサーバーBにIPをルーティングします

サーバーAからサーバーB(Ubuntu 16.04)に137.74.9.193をルーティングしようとしています。

サーバーAから137.74.9.193にpingを実行しようとすると、期待どおりに機能しますが、パーソナルコンピューターからpingを実行しようとすると機能しません。

plan

サーバーA:

Public IP (ens3): 213.32.69.16
Public IP: 137.74.9.193
Local Tunnel IP: 10.0.0.1

サーバーB:

Public IP (eth0): 139.59.131.76
Local Tunnel IP: 10.0.0.2

サーバーAの構成:

nano/etc/network/interfaces

auto lo
iface lo inet loopback

auto ens3
iface ens3 inet dhcp

auto tun1
iface tun1 inet static
    address 10.0.0.1
    netmask 255.255.255.252
    pre-up iptunnel add tun1 mode gre local 213.32.69.16 remote 139.59.131.76 ttl 255
    up ifconfig tun1 multicast
    up ifconfig tun1 arp
    up ifconfig tun1 broadcast
    pointopoint 10.0.0.2
    post-up ip route add 137.74.9.193 via 10.0.0.2 dev tun1
    post-down iptunnel del tun1

実行されたコマンド:

# enable ip forward
$ echo 1 > /proc/sys/net/ipv4/ip_forward
$ echo 1 > /proc/sys/net/ipv4/conf/ens3/proxy_arp

# Add ip to arp to complete the loop.
$ arp -s 137.74.9.193 fa:16:3e:76:31:ea -i ens3 pub

結果カーネルIPルーティングテーブル:

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         213.32.64.1     0.0.0.0         UG    0      0        0 ens3
10.0.0.2        *               255.255.255.255 UH    0      0        0 tun1
ip193.ip-137-74 10.0.0.2        255.255.255.255 UGH   0      0        0 tun1
213.32.64.1     *               255.255.255.255 UH    0      0        0 ens3

サーバーBでの構成:

nano/etc/network/interfaces

auto eth0
iface eth0 inet static
        address 139.59.131.76
        netmask 255.255.240.0
        gateway 139.59.128.1
iface eth0:0 inet static
        address 137.74.9.193
        netmask 255.255.255.255
        broadcast 137.74.9.193

auto tun1
iface tun1 inet static
        address 10.0.0.2
        netmask 255.255.255.252
        pre-up iptunnel add tun1 mode gre local 139.59.131.76 remote 213.32.69.16 ttl 255
        up ifconfig tun1 multicast
        up ifconfig tun1 arp
        up ifconfig tun1 broadcast
        pointopoint 10.0.0.1
        post-down iptunnel del tun1

実行されたコマンド:

# enable ip forward
$ echo 1 > /proc/sys/net/ipv4/ip_forward

# Route to tun1
ip route add 10.0.0.1 dev tun1

カーネルIPルーティングテーブル:

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         gateway         0.0.0.0         UG    0      0        0 eth0
10.0.0.1        *               255.255.255.255 UH    0      0        0 tun1
10.19.0.0       *               255.255.0.0     U     0      0        0 eth0
139.59.128.0    *               255.255.240.0   U     0      0        0 eth0

助けてくれてありがとう:)

更新(2016年11月14日):サーバーBにルートコマンドを追加

4
1elf

あなたの質問の情報から私が知る限り、あなたの問題はそれです

arp -s 137.74.9.193 fa:16:3e:76:31:ea -i ens3 pub

あなたが思っていることをしません。このコマンドは、サーバー上に新しいARPテーブルエントリを作成します。これにより、サーバーがens3を介して137.74.9.193にパケットを送信する場合、宛先MACアドレスをすでに指定しているため、ARP要求は実行されません。

ただし、ルーターがパケットをサーバーに送信することを認識していることも確認する必要があります。ルーターは137.74.9.193のARP要求を送信します。ただし、そのIPアドレスはサーバー上のどのインターフェイスにも割り当てられていないため、サーバーはこれらのARP要求に応答しません。

これを機能させるには、プロキシARPを有効にする必要があります。これは次のコマンドで実行できます。

echo 1 > /proc/sys/net/ipv4/conf/ens3/proxy_arp

arpコマンドの代わりにそのコマンドを使用すれば、うまくいくと思います。 (これがポイントツーポイントインターフェイスのピアIPで機能することを知っています。トンネルインターフェイスを介してトラフィックを送信するルーティングテーブルエントリで同じセットアップをテストしたことはなく、確実にわかりません。追加の手順が必要かどうか。)

サーバーBをホストしているISPが送信元IPアドレスに基づいてトラフィックをフィルタリングする場合、送信元アドレスとして137.74.9.193を使用してそこからパケットを送信できない場合があります。外部から137.74.9.193にpingを実行し、サーバーBのeth0でICMPパケットをキャプチャすると、ICMPエコー応答がそのインターフェイスで送信されているかどうかを確認できます。

サーバーBがICMPエコー応答を送信していて、宛先に到達しないことがわかった場合、最も可能性の高い説明は、ISPが送信元IPアドレスに基づいてフィルタリングしていることです。

その場合、2つのオプションがあります。 ISPに連絡して、フィルターを更新できるように、この送信元IPでパケットを発信する必要があることを説明することができます。または、サーバーAを介してリターントラフィックをトンネリングすることもできます。

Aを介してリターントラフィックをトンネリングする最も簡単な方法は、次のようなルーティングテーブルをBに作成することです。

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         *               0.0.0.0         UG    0      0        0 tun1
213.32.69.16    gateway         255.255.255.255 UG    0      0        0 eth0
10.0.0.1        *               255.255.255.255 UH    0      0        0 tun1
10.19.0.0       *               255.255.0.0     U     0      0        0 eth0
139.59.128.0    *               255.255.240.0   U     0      0        0 eth0

ただし、これにより、インターネットの他の部分から139.59.131.76に到達できなくなります。両方のIPアドレスを介してBに同時に到達できるようにする場合は、2つの異なるデフォルトルートとルーティングポリシーを作成して、パケット送信元IPに基づいてどちらかを選択する必要があります。

1
kasperd