別のコンピュータのインターフェイスで2番目のIPアドレスをpingできません。

別のコンピュータのインターフェイスで2番目のIPアドレスをpingできません。

OpenVPN クライアントが OpenVPN サーバーに接続されています。

サーバーには次のパスがあります。

default via 10.109.185.65 dev eth0 proto dhcp src 10.109.185.84 metric 100
10.8.0.0/24 dev tun0 proto kernel scope link src 10.8.0.1
10.109.185.64/27 dev eth0 proto kernel scope link src 10.109.185.84
10.109.185.65 dev eth0 proto dhcp scope link src 10.109.185.84 metric 100

tun0クライアントは、OpenVPNによって生成された仮想インターフェイスに次のアドレスを持ちます。

11: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 100
link/none
    inet 10.8.0.3/24 brd 10.8.0.255 scope global tun0
       valid_lft forever preferred_lft forever
    inet6 fe80::3c55:91d1:e8cf:7c55/64 scope link flags 800
      valid_lft forever preferred_lft forever

サーバーからクライアントにpingを送信するとping 10.8.0.3正常に動作します。

tun0次に、次のようにしてクライアントに2番目のIPアドレスを追加しましたip addr add 10.100.1.2/24 dev tun0。インターフェイスには次tun0のように表示されます。

inet 10.100.1.2/24 scope global tun0
   valid_lft forever preferred_lft forever

サーバーで、以下を実行してそのサブネットへのパスを追加しましたip route add 10.100.1.0/24 dev tun0。ルートリストには次のように表示されます。

10.100.1.0/24 dev tun0 scope link

ping 10.100.1.2ただし、サーバーでは試行に失敗しました。

その後、サーバーとクライアントの両方に、次の iptables FORWARD ルールがあることを確認しました。

ACCEPT     all  --  10.8.0.0/24          anywhere

iptables -A FORWARD -s 10.100.1.0/24そのため、サーバーとクライアントの両方でこれを実行して、10.100.1.0サブネットの別のFORWARDルールを追加しました。

ping 10.100.1.2しかし、サーバーで試すことはまだ失敗します。

サーバーから10.100.1.2にpingを送信するために実行する必要がある他のタスクはありますか?

答え1

考慮すべき3つの点:

1. ルーティング

2番目のIP範囲()はインターフェイス10.100.1.0/24に直接接続されます。したがって、コンピュータは静的ルーティングステートメントを挿入せずにネットワークにtun0アクセスする方法を知ります。10.100.1.0/242番目のIPを追加した直後に次のコマンドを実行すると、そのルートがテーブルに動的に追加されたことを確認できます。

$ sudo ip route show

2. P2Pネットワーク

tun0VPNトンネルを作成するときは、VPNサーバーとクライアントの間に仮想ネットワークアダプタ(この場合)を使用してポイントツーポイントネットワークを作成します。このインターフェイスに 2 番目または 3 番目以上の IP アドレスを割り当てると、ポイントツーポイント操作が複雑になります。

3. ソリューション

選択した2番目のIPアドレスを割り当てる新しい仮想ネットワークアダプタを作成します。必要でない限り、パス宣言は必要ありません。また、追加のiptablesルールは必要ありません。 (以前に作成した静的パスを削除し、添付されたiptablesルールを削除する必要があります。タスクを実行するためにこれらのいずれも必要ありません。)

VPNサーバーから:

$ lsmod | grep dummy

上記のコマンドは、「ダミー」ネットワークドライバ(モジュール)がカーネルにロードされていることを確認します。ロードされない場合は、マニュアルを確認してください。ここ

$ sudo ip link add tun99 type dummy
$ sudo ip link set dev tun99 up

上記のコマンドは、次の新しい仮想ネットワークアダプタを作成します。tun99

$ sudo ip address change dev tun99 10.100.1.1

10.100.1.1/32上記のコマンドは、新しく作成されたネットワークアダプタにIPアドレスを割り当てます。tun99

ポイントツーポイントネットワークなので、パス宣言は必要ありません。

VPNクライアントから:

$ sudo ip link add tun99 type dummy
$ sudo ip link set dev tun99 up
$ sudo ip address change dev tun99 10.100.1.2

VPNクライアントからVPNサーバーのIPにping要求を送信して接続をテストします。 10.100.1.1

$ ping 10.100.1.1

答え2

 iptables -A FORWARD -s 10.100.1.0/24

このコマンドが含まれていない場合は、-j ACCEPTトラフィックカウンタを追加して、ルールセットの対応するポイントに到達する10.100.1.0/24ネットワークに一致するパケット+バイト数を測定するだけです。何もしないルールを指定した場合、ルールに一致するパケットのみを計算し、他のアクションは実行しません。

さらに、-Aオプションは追加テーブルの既存のルールセットの末尾に新しいルールを追加します。ルールは順番に処理され、テーブルの最後のルールに「すべて拒否」ルール(通常は推奨)がある場合、それ以降のすべてのルールは作成されません。どのような影響。その場合は、より適切な場所に新しいルールを挿入する必要があります。

関連情報