web-dev-qa-db-ja.com

イーサネット経由でVPN接続を共有する

別の家にあるVPNへのアクセスポイントとしてLinux(CentOS)を使用して古いPCをセットアップしようとしています。私は2つのイーサネットインターフェイスを持っているので、1つを使用してルーター経由でインターネットに接続し、VPNに接続してから、2番目のイーサネット経由でそのVPN接続を共有したいと思います。 2番目のデバイスのIPは、DHCPによって割り当てられる必要があります。

私はたくさんのチュートリアル/投稿を読んでいて、VPNをダウンさせた状態でプレーンなインターネット接続を共有することができました。ただし、VPNを開始すると、iptables/routersルールが何であれ、2番目のデバイスでインターネットが使用できなくなります。私は自分が間違っていることについて無知です。誰かが助けを提供できますか?

これが私の設定です:-enp2s0:これは私のメインルーターに接続されています。 --enp0s29f7u1:これは2番目のデバイスに接続されます

enp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP                                                                                           group default qlen 1000
    link/ether bc:ee:7b:19:89:68 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.26/24 brd 192.168.1.255 scope global noprefixroute enp2s0
       valid_lft forever preferred_lft forever
    inet6 fe80::c25c:2c9d:4777:79fc/64 scope link noprefixroute
       valid_lft forever preferred_lft forever
enp0s29f7u1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast stat                                                                                          e UP group default qlen 1000
    link/ether 00:e0:4c:69:35:d0 brd ff:ff:ff:ff:ff:ff
    inet 10.8.0.5/24 brd 10.8.0.255 scope global noprefixroute enp0s29f7u1
       valid_lft forever preferred_lft forever
    inet6 fe80::2e0:4cff:fe69:35d0/64 scope link
       valid_lft forever preferred_lft forever

VPNに接続すると、別のインターフェイスtun0があります。

tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 100
    link/none
    inet 10.8.0.2/24 brd 10.8.0.255 scope global tun0
       valid_lft forever preferred_lft forever
    inet6 fe80::2d75:64c0:6c21:c9d9/64 scope link flags 800
       valid_lft forever preferred_lft forever

私の/etc/dhcp/dhcpd.confには次のオプションがあります。

subnet 10.8.0.0 netmask 255.255.255.0 {
  range 10.8.0.10 10.8.0.15;
  option routers 10.8.0.5;
  option domain-name-servers 8.8.8.8, 8.8.4.4;
}

2番目のデバイスはIPとして10.8.0.11を取得しているので、正常に動作していると思います。

Iptablesを使用して次のルールを追加しました。

iptables -t nat -I POSTROUTING 1 -o tun0 -j MASQUERADE
iptables -I FORWARD 1 -i tun0 -o enp0s29f7u1 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -I FORWARD 1 -i enp0s29f7u1 -o tun0 -j ACCEPT

追加情報:

  • Ip4転送を有効にしています:/sbin/sysctl net.ipv4.ip_forwardnet.ipv4.ip_forward = 1を返します

  • 期待通り、別の家にあるVPNサーバーからIPアドレスでインターネットにアクセスできます。ただし、この構成をセットアップしているコンピューターからのみ実行でき、enp0s29f7u1を介して接続されているデバイスからは実行できません。

  • これは、VPNを起動する前後のルートです。

ip route
default via 192.168.1.1 dev enp2s0 proto static metric 101
10.8.0.0/24 dev enp0s29f7u1 proto kernel scope link src 10.8.0.5 metric 100

ipルート

0.0.0.0/1 via 10.8.0.1 dev tun0
default via 192.168.1.1 dev enp2s0 proto static metric 101
10.8.0.0/24 dev tun0 proto kernel scope link src 10.8.0.2
10.8.0.0/24 dev enp0s29f7u1 proto kernel scope link src 10.8.0.5 metric 100
xx.xx.xx.xx via 192.168.1.1 dev enp2s0
128.0.0.0/1 via 10.8.0.1 dev tun0
192.168.1.0/24 dev enp2s0 proto kernel scope link src 192.168.1.26 metric 101

192.168.1.0/24 dev enp2s0 proto kernel scope link src 192.168.1.26 metric 101

VPNサーバーのパブリックIPをxx.xx.xx.xxに置き換えました

ここで何が欠けていますか?

編集:必死になって、それが素晴らしいアイデアではないとわかっていたとしても、私はインターフェースをブリッジしようとしました。それもうまくいきませんでした。

1
Wrykoulaka

あなたは多くのことを正しく理解しているので、これまでに到達したことを祝福します。いくつかのことが私には間違っているように見えます。

Tun0のデフォルトルートが間違っています。0.0.0.0/ 1はインターネットの半分だけをtun0に渡します。残りの半分が必要です。 128.0.0.0/1を追加してみてください。または、「default」または0.0.0.0/0を使用して、両方の半分を一度に取得しますが、「192.168.1.1経由のデフォルト」よりも低いメトリックを使用するようにしてください。これを行った後、私の最後の段落を参照してください。別の問題が発生する可能性があります。

私を悩ませている他のことの1つは、tunサブネットとLANサブネットの両方に10.8.0.0/24を使用していることです。おそらく、これらを異なるサブネットにする必要があります。これは、10.8.0.0/24のルーティングテーブルで2つの重複ルートとしても現れています。 enp0s29f7u1を次のサブネット10.8.1.5/24にバンプし、dhcpサーバーで同じことを実行してみてください。

subnet 10.8.1.0 netmask 255.255.255.0 {
  range 10.8.1.10 10.8.1.15;
  option routers 10.8.1.5;
  option domain-name-servers 8.8.8.8, 8.8.4.4;
}

それ以外は構成は良さそうです。もう1つのサニティチェックがあります。 VPNのインターネットへの接続を窒息させていないことを確認してください。 tunがVPNサーバーに到達するために自分自身を使用しようとしないように、0.0.0.0/0よりも優先されるルートが必要です。テーブルには、0.0.0.0/0よりも具体的なルートが必要です。あなたはすでにこのルートを持っていると思いますが、それはよくある間違いです。

xx.xx.xx.xx via 192.168.1.1 dev enp2s0

これを確認するには、tunインターフェイスの増分のRxカウンターがafterトンネルを確立していることを確認します。

0
Andy