web-dev-qa-db-ja.com

eth0からtun0(OpenVPN)Ubuntu 12.04へのトラフィックのトンネリング

説明されている手順に従って ここ VPNサーバーとクライアントの両方を構成できました(両方の方法でpingを実行できます)。それぞれの構成ファイルは次のとおりです。

サーバー:

;local a.b.c.d

port 1194

;proto tcp
proto udp

Push "redirect-gateway def1"

;dev tap

dev tun

ca ca.crt

cert certificate_server.crt

key certificate_server.key  

dh dh1024.pem

server 10.8.0.0 255.255.255.0

ifconfig-pool-persist ipp.txt

;server-bridge 10.8.0.4 255.255.255.0 10.8.0.50 10.8.0.100

;server-bridge

;Push "route 192.168.10.0 255.255.255.0"

;Push "route 192.168.20.0 255.255.255.0"

;client-config-dir ccd

;route 192.168.40.128 255.255.255.248

;client-config-dir ccd
;route 10.9.0.0 255.255.255.252

;learn-address ./script

;Push "redirect-gateway def1 bypass-dhcp"

;Push "dhcp-option DNS 208.67.222.222"

;Push "dhcp-option DNS 208.67.220.220"


;client-to-client
;duplicate-cn

keepalive 10 120

comp-lzo

persist-key
persist-tun

status openvpn-status.log

;log         openvpn.log
;log-append  openvpn.log

クライアント:

client

;dev tap

dev tun

;dev-node MyTap

;proto tcp
proto udp

remote <external_server_ip> 1194

;remote my-server-2 1194

Push "dhcp-option DNS 10.8.0.1"

;remote-random

resolv-retry infinite

nobind

persist-key
persist-tun

ca ca.crt
cert certificate_client.crt
key certificate_client.key


ns-cert-type server

;tls-auth ta.key 1

comp-lzo

ネットワークレイアウトは次のとおりです。NATの背後にあるサーバーに接続するためにクライアントを使用しています。 NAT=デバイスのポート1194を転送し、サーバーを正常にpingすることに成功しました。ここで、すべてのトラフィックをクライアントのeth0インターフェイスからtun0インターフェイスにルーティングしたいと思います。クライアントでifconfigを実行すると、 :

eth0      Link encap:Ethernet  HWaddr 01:02:03:04:05:06  
          inet addr:172.26.0.206  Bcast:172.26.255.255  Mask:255.255.0.0
          inet6 addr: fe80::3285:a9ff:fe0b:fee8/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:15579878 errors:0 dropped:2 overruns:0 frame:0
          TX packets:3774742 errors:0 dropped:0 overruns:0 carrier:4
          collisions:0 txqueuelen:1000 
          RX bytes:7365014496 (7.3 GB)  TX bytes:349016660 (349.0 MB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:132571 errors:0 dropped:0 overruns:0 frame:0
          TX packets:132571 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:6718530 (6.7 MB)  TX bytes:6718530 (6.7 MB)

tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          inet addr:10.8.0.6  P-t-P:10.8.0.5  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1296 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100 
          RX bytes:0 (0.0 B)  TX bytes:102968 (102.9 KB)

wlan0     Link encap:Ethernet  HWaddr 01:01:01:01:01:01  
          inet addr:192.168.0.103  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::de85:deff:fe32:241f/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:284664 errors:0 dropped:0 overruns:0 frame:0
          TX packets:99157 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:177617284 (177.6 MB)  TX bytes:32064393 (32.0 MB)

サーバー出力でコマンドを実行している間:

eth0      Link encap:Ethernet  HWaddr 06:05:04:03:02:01 
          inet addr:192.168.2.7  Bcast:192.168.2.255  Mask:255.255.255.0
          inet6 addr: fe80::219:d1ff:fefe:de8a/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:44596 errors:0 dropped:0 overruns:0 frame:0
          TX packets:22418 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:9082333 (9.0 MB)  TX bytes:5007949 (5.0 MB)
          Interrupt:20 Memory:e3200000-e3220000 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:394157 errors:0 dropped:0 overruns:0 frame:0
          TX packets:394157 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:19763027 (19.7 MB)  TX bytes:19763027 (19.7 MB)

tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          inet addr:10.8.0.1  P-t-P:10.8.0.2  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:7615 errors:0 dropped:0 overruns:0 frame:0
          TX packets:7 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100 
          RX bytes:463861 (463.8 KB)  TX bytes:588 (588.0 B)

私のクライアントではIPv4パケット転送が有効になっています。クライアントマシンのルーティングテーブルは次のとおりです:client:

$ netstat -nr
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         10.8.0.5        128.0.0.0       UG        0 0          0 tun0
0.0.0.0         172.26.0.1      0.0.0.0         UG        0 0          0 eth0
10.8.0.1        10.8.0.5        255.255.255.255 UGH       0 0          0 tun0
10.8.0.5        0.0.0.0         255.255.255.255 UH        0 0          0 tun0
<server_external_ip>  172.26.0.1      255.255.255.255 UGH       0 0          0 eth0
128.0.0.0       10.8.0.5        128.0.0.0       UG        0 0          0 tun0
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth0
172.26.0.0      0.0.0.0         255.255.0.0     U         0 0          0 eth0
192.168.0.0     0.0.0.0         255.255.255.0   U         0 0          0 wlan0

サーバー上で:

サーバー:

0.0.0.0         192.168.2.1     0.0.0.0         UG        0 0          0 eth0
10.8.0.0        10.8.0.2        255.255.255.0   UG        0 0          0 tun0
10.8.0.2        0.0.0.0         255.255.255.255 UH        0 0          0 tun0
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth0
192.168.2.0     0.0.0.0         255.255.255.0   U         0 0          0 eth0

すべてのトラフィックをeth0からクライアントマシンのtun0にルーティングするにはどうすればよいですか?ルーティングテーブルにエントリを追加してみました。

Sudo route add default gw 10.8.0.1 

出力は次のとおりです。

SIOCADDRT: No such process

また、この手順の後、接続が機能しなくなったため、クライアントからサーバーにpingできなくなりました。 eth0のトラフィックは転送できなくなりました。

3
Sebi

OpenVPNインスタンスはポイントツーポイントモードで動作しているため、デフォルトゲートウェイは10.8.0.1ではありません。

クライアントのルーティングテーブルを見ると、OpenVPNクライアントがルートを正しく設定しているようです。これにより、VPNサーバーがデフォルトゲートウェイになりました(これはredirect-gateway def1 in server config):

Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         10.8.0.5        128.0.0.0       UG        0 0          0 tun0
128.0.0.0       10.8.0.5        128.0.0.0       UG        0 0          0 tun0

これで、基本的には希望どおりの結果が得られました。最初にeth0を通過したすべてのトラフィックを今すぐtun0に移動させます。

VPNにダイヤルしてもインターネットにアクセスできない(他のWebサイトにアクセスできない)理由がわからない場合は、@ Billの発言に従ってください。NATおよびサーバーでのIP転送を設定します。

これも簡単です:

# sysctl -w net.ipv4.ip_forward=1
# iptables -t nat -A POSTROUTING ! -o lo -j MASQUERADE

偏執狂の場合は、@ Billの回答に従って2行目を変更してください。

4
hexchain

ローカルサブネットからtun0インターフェイスにトラフィックを再ルーティングします。

iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -o tun0 -j MASQUERADE
2
Bill

あなたはこれを試すことができます:

route add -net 172.26.0.0 netmask 255.255.0.0 gw 10.0.8.5
0
Randy