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/24
2番目のIPを追加した直後に次のコマンドを実行すると、そのルートがテーブルに動的に追加されたことを確認できます。
$ sudo ip route show
2. P2Pネットワーク
tun0
VPNトンネルを作成するときは、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
オプションは追加テーブルの既存のルールセットの末尾に新しいルールを追加します。ルールは順番に処理され、テーブルの最後のルールに「すべて拒否」ルール(通常は推奨)がある場合、それ以降のすべてのルールは作成されません。どのような影響。その場合は、より適切な場所に新しいルールを挿入する必要があります。