web-dev-qa-db-ja.com

OpenVPNトンネルをパブリックインターフェイス経由でルーティングし、NATインターフェイス経由で(インターネットに)ルーティングします

誰かが助けてくれることを願っています...

VPSで動作するようにOpenVPN-AS(つまり、OpenVPNではなくOpenVPNアクセスサーバー)を構成したい。 VPSはKVM Ubunto 10.04 LTSを実行し、非常にバニラ構成です。OpenVPN-ASも同様に、最小限の「フレーバー」でインストールされます。

サーバーには2つのインターフェイスがあります(両方ともDHCP、eth1にはデフォルトゲートウェイが構成されていませんが、使用可能なものが1つあります):-eth0(IS米国では地理的に配置されていない)パブリックIPアドレス)、および--eth1(NATルーター経由でIS米国内に地理的に配置されている)

OpenVPNトンネル(UDP/1194)を含むほとんどのトラフィックは、eth0経由で着信しますが、米国ベースのIPアドレスを利用するには、トンネリングされたクライアントはeth1経由で「発信」する必要があります。 2つの別々の問題があると思います:1)トンネル化されたクライアントがNATルーターを介して離れるゲートウェイがあるようにIPを構成する2)クライアントがインターネットアクセスにそのゲートウェイを使用するようにOpenVPN-ASを構成する

ファイル/ etc/network/interfacesは次のとおりです。

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet dhcp

# The internal (private) network interface
auto eth1
iface eth1 inet dhcp
  up   ip route add default via 172.16.0.254  dev eth1  table 100
  down ip route del default via 172.16.0.254  dev eth1  table 100
  up   ip rule  add        from 172.16.0.0/16 iif eth1 lookup 100
  down ip rule  del        from 172.16.0.0/16 iif eth1 lookup 100
  up   iptables -t nat -A POSTROUTING -s 5.5.0.0/20 -j SNAT --to-source 172.16.191.125
  down iptables -t nat -D POSTROUTING -s 5.5.0.0/20 -j SNAT --to-source 172.16.191.125

ネットワークは次のとおりです。

root@us-tunnel:~# ifconfig | grep -A 1 encap
as0t0     Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
          inet addr:5.5.0.1  P-t-P:5.5.0.1  Mask:255.255.248.0
--
as0t1     Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
          inet addr:5.5.8.1  P-t-P:5.5.8.1  Mask:255.255.248.0
--
eth0      Link encap:Ethernet  HWaddr 00:16:3c:34:01:20
          inet addr:209.141.60.114  Bcast:209.141.60.255  Mask:255.255.255.0
--
eth1      Link encap:Ethernet  HWaddr 00:16:3c:55:84:81
          inet addr:172.16.191.125  Bcast:172.16.255.255  Mask:255.255.0.0
--
lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0

ルートテーブルは次のとおりです。

root@us-tunnel:~# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
209.141.60.0    *               255.255.255.0   U     0      0        0 eth0
5.5.0.0         *               255.255.248.0   U     0      0        0 as0t0
5.5.8.0         *               255.255.248.0   U     0      0        0 as0t1
172.16.0.0      *               255.255.0.0     U     0      0        0 eth1
default         209.141.60.1    0.0.0.0         UG    100    0        0 eth0
3
zxdavb

これを機能させるには、いくつかの手順を実行する必要があります。

まず、クライアントアダプターを介してクライアントトラフィックを転送するように、構成ファイルにルートを設定する必要があります。

これを行うには、クライアント構成ファイルに「ルート」行を追加するか、追加します。

"--pull" 

クライアント構成に追加してから、サーバー構成にルートを追加します。

"Push route 0.0.0.0 5.5.0.1"
"Push route 0.0.0.0 5.5.8.1"

次に、VPNネットワークからの着信パケットを許可するようにiptablesを構成し、サーバー側でmasquradeおよびnat転送を有効にする必要があります。

パケット転送とNATを有効にするには

  1. カーネルでパケット転送を有効にする

    echo 1 > /proc/sys/net/ipv4/ip_forward
    
  2. iptablesでNAT

    Sudo iptables --table nat --append POSTROUTING --out-interface eth1 -j MASQUERADE
    
  3. vPNインターフェースの転送を有効にする

    Sudo iptables --append FORWARD --in-interface as0t0 -j ACCEPT
    Sudo iptables --append FORWARD --in-interface as0t1 -j ACCEPT
    

これはルーティング側の基本構成です。より詳細なヘルプが必要な場合は、コメントしてください。

2
eldorel