ip_forwarding=1 VPNが失敗するのはなぜですか?

ip_forwarding=1 VPNが失敗するのはなぜですか?

マイコンピュータは、ethインターネット接続を共有するためのWi-Fi APを提供しています。痛みなく働きます。

ethVPN経由でトンネリングした後、「WifiAPクライアント」がオンラインに接続できるように、コンピュータをVPNサーバー(私の<=> VPNリモートサーバー)に接続することにしました。そしてそれは正しく動作しません。

効果は何ですか?:マイコンピュータがインターネットに接続してipecho.net/plainリモートVPNサーバーIPをレンダリングできます。いいね、WifiAPクライアントはリモートVPNサーバーのIPをpingできます。

何が失敗したのか:WiFiAPクライアントは他のものをpingすることはできず、ドメインもまったくありません(8.8.8.8 GDNS IPに到達できません...ドメインチェックなし)。

つまり、誰でもVPNなしでWi-Fiに接続し、インターネットをサーフィンできます。 VPNを使用すると、マイコンピュータでのみ可能です。

ip_forwardingトンネルを掘るのではありませんか?

何が問題なの?どうすれば解決できますか?

____VPNを使用する場合のルーティング存在する:

Destination     Passerelle      Genmask         Indic Metric Ref    Use Iface
default         10.8.0.77       128.0.0.0       UG    0      0        0 tun0
default         192.168.0.1     0.0.0.0         UG    0      0        0 eth0
10.8.0.1        10.8.0.77       255.255.255.255 UGH   0      0        0 tun0
10.8.0.77       *               255.255.255.255 UH    0      0        0 tun0
13.37.42.0      *               255.255.255.0   U     0      0        0 wlan0
ns350510.ip-3-1  192.168.0.1     255.255.255.255 UGH   0      0        0 eth0
128.0.0.0       10.8.0.77       128.0.0.0       UG    0      0        0 tun0
link-local      *               255.255.0.0     U     1000   0        0 eth0
192.168.0.0     *               255.255.254.0   U     0      0        0 eth0

___ルーティング(VPN使用時)去る

Destination     Passerelle      Genmask         Indic Metric Ref    Use Iface
default         192.168.0.1     0.0.0.0         UG    0      0        0 eth0
13.37.42.0      *               255.255.255.0   U     0      0        0 wlan0
link-local      *               255.255.0.0     U     1000   0        0 eth0
192.168.0.0     *               255.255.254.0   U     0      0        0 eth0

__コンピュータのIPtables(WIFI APおよびVPNサーバーへのリンクを提供):

 # Generated by iptables-save v1.4.21 
    *mangle
    :PREROUTING ACCEPT [7471:1066114]
    :INPUT ACCEPT [5960:830272]
    :FORWARD ACCEPT [1339:216774]
    :OUTPUT ACCEPT [717:92366]
    :POSTROUTING ACCEPT [2116:318321]
    :internet - [0:0]
    -A PREROUTING -j internet
    -A internet -m mac --mac-source 60:F8:4D:BE:43:AE -j RETURN
    -A internet -j MARK --set-xmark 0x3e7/0xffffffff
    COMMIT
    # Completed 
    # Generated by iptables-save v1.4.21 
    *nat
    :PREROUTING ACCEPT [1710:298954]
    :INPUT ACCEPT [1480:280336]
    :OUTPUT ACCEPT [28:4162]
    :POSTROUTING ACCEPT [86:6162]
    -A PREROUTING -i wlan0 -p tcp -m mark --mark 0x3e7 -m tcp --dport 80 -j DNAT --to-destination 13.37.42.1:80
    -A PREROUTING -i wlan0 -p tcp -m mark --mark 0x3e7 -m tcp --dport 443 -m conntrack --ctstate NEW -j DNAT --to-destination 13.37.42.1:80
    -A POSTROUTING -o eth0 -j MASQUERADE
    -A POSTROUTING -o wlan0 -j MASQUERADE
    COMMIT
    # Completed 
    # Generated by iptables-save v1.4.21 
    *filter
    :INPUT ACCEPT [6041:840617]
    :FORWARD ACCEPT [380:110945]
    :OUTPUT ACCEPT [753:102159]
    -A FORWARD -i wlan0 -j ACCEPT
    COMMIT
    # Completed 

____ サーバー OpenVPN の構成

port 1194
proto udp
dev tun

ca ca.crt
cert server.crt
key server.key

dh dh2048.pem

server 10.8.0.0 255.255.255.0

ifconfig-pool-persist ipp.txt
push "redirect-gateway def1 bypass-dhcp bypass-dns"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
keepalive 10 120
comp-lzo
max-clients 100
user nobody
group nobody
persist-key
persist-tun
status /etc/openvpn/logs/openvpn-status.log
log-append /etc/openvpn/logs/openvpn.log
verb 3

___ クライアント OpenVPN 会議

client
ns-cert-type server
remote www.example.com 1194
#route-nopull
ca ca.crt
cert client_1337.crt
key client_1337.key
dev tun
proto udp
resolv-retry infinite
nobind
persist-key
persist-tun
comp-lzo
verb 3

____ServerIptables

*filter
    :INPUT ACCEPT [1623:213921]
    :FORWARD ACCEPT [0:0]
    :OUTPUT ACCEPT [911:146048]
    :acctboth - [0:0]
    :cphulk - [0:0]
    -A INPUT -j cphulk 
    -A INPUT -j acctboth 
    -A INPUT -i eth0 -p udp -m state --state NEW -m udp --dport 1194 -j ACCEPT 
    -A INPUT -i tun+ -j ACCEPT 
    -A FORWARD -i tun+ -j ACCEPT 
    -A FORWARD -i tun+ -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT 
    -A FORWARD -i eth0 -o tun+ -m state --state RELATED,ESTABLISHED -j ACCEPT 
    -A OUTPUT -j acctboth 
    -A OUTPUT -o tun+ -j ACCEPT 
    -A acctboth -s 3.1.170.110/32 ! -i lo -p tcp -m tcp --dport 80 
    -A acctboth -d 3.1.170.110/32 ! -i lo -p tcp -m tcp --sport 80 
    -A acctboth -s 3.1.170.110/32 ! -i lo -p tcp -m tcp --dport 25 
    -A acctboth -d 3.1.170.110/32 ! -i lo -p tcp -m tcp --sport 25 
    -A acctboth -s 3.1.170.110/32 ! -i lo -p tcp -m tcp --dport 110 
    -A acctboth -d 3.1.170.110/32 ! -i lo -p tcp -m tcp --sport 110 
    -A acctboth -s 3.1.170.110/32 ! -i lo -p icmp 
    -A acctboth -d 3.1.170.110/32 ! -i lo -p icmp 
    -A acctboth -s 3.1.170.110/32 ! -i lo -p tcp 
    -A acctboth -d 3.1.170.110/32 ! -i lo -p tcp 
    -A acctboth -s 3.1.170.110/32 ! -i lo -p udp 
    -A acctboth -d 3.1.170.110/32 ! -i lo -p udp 
    -A acctboth -s 3.1.170.110/32 ! -i lo 
    -A acctboth -d 3.1.170.110/32 ! -i lo 
    -A acctboth -s 10.8.0.1/32 ! -i lo -p tcp -m tcp --dport 80 
    -A acctboth -d 10.8.0.1/32 ! -i lo -p tcp -m tcp --sport 80 
    -A acctboth -s 10.8.0.1/32 ! -i lo -p tcp -m tcp --dport 25 
    -A acctboth -d 10.8.0.1/32 ! -i lo -p tcp -m tcp --sport 25 
    -A acctboth -s 10.8.0.1/32 ! -i lo -p tcp -m tcp --dport 110 
    -A acctboth -d 10.8.0.1/32 ! -i lo -p tcp -m tcp --sport 110 
    -A acctboth -s 10.8.0.1/32 ! -i lo -p icmp 
    -A acctboth -d 10.8.0.1/32 ! -i lo -p icmp 
    -A acctboth -s 10.8.0.1/32 ! -i lo -p tcp 
    -A acctboth -d 10.8.0.1/32 ! -i lo -p tcp 
    -A acctboth -s 10.8.0.1/32 ! -i lo -p udp 
    -A acctboth -d 10.8.0.1/32 ! -i lo -p udp 

答え1

問題は何ですか?

したがって、NAT(ネットワークアドレス送信)が必要です。私は専門家であるふりをしませんがiptables、あなたの次の部分を見るとわかりますiptables-save

*nat
:PREROUTING ACCEPT [1710:298954]
:INPUT ACCEPT [1480:280336]
:OUTPUT ACCEPT [28:4162]
:POSTROUTING ACCEPT [86:6162]
-A PREROUTING -i wlan0 -p tcp -m mark --mark 0x3e7 -m tcp --dport 80 -j DNAT --to-destination 13.37.42.1:80
-A PREROUTING -i wlan0 -p tcp -m mark --mark 0x3e7 -m tcp --dport 443 -m conntrack --ctstate NEW -j DNAT --to-destination 13.37.42.1:80
-A POSTROUTING -o eth0 -j MASQUERADE #####this line
-A POSTROUTING -o wlan0 -j MASQUERADE

...この部分:

*filter
:INPUT ACCEPT [6041:840617]
:FORWARD ACCEPT [380:110945]
:OUTPUT ACCEPT [753:102159]
-A FORWARD -i wlan0 -j ACCEPT  #####this line
COMMIT

...入ってくる内容を伝えるようですがwlan0、これはMASQUERADE許可されますeth0。ただし、ルート テーブルは、tun02 つの行のいずれかがGENMASK 128.0.0.0常にdefault宛先の前に一致するため、インターフェイスを介してすべての一般的なトラフィックを転送します。つまり、着信パケットは転送されますが、通常のトラフィックはそのインターフェイスを通過します。パケットを転送しようとしています。eth0GENMASK 0.0.0.0wlan0eth0tun0wlan0tun0

考えられる解決策

次のコマンドを実行すると、既存のコマンドを変更せずにこの問題を解決できます。iptables (言い換えれば、私はiptables専門家ではなく、あなたの命令はiptables私よりはるかに複雑です。)

sudo iptables --table nat --append POSTROUTING --out-interface tun0 -j MASQUERADE

NATはどのように行いますか?

私はコマンドを全く覚えていないので、私のコンピュータにNATを設定するためにこの短いスクリプトを書いています。だから、他の人がいないときに直接実行してインターネット接続をに転送iptablesできます。nat tun0 wlan0tun0wlan0

#!/bin/bash
# I named this script "nat"
if [ $# -lt 2 ]
        then
        echo usage: nat \<internet connection iface\> \<recieving iface\>
        exit 0
fi

internetiface=$1;
receivingiface=$2;

sudo iptables --table nat --append POSTROUTING --out-interface $internetiface -j MASQUERADE
sudo iptables --append FORWARD --in-interface $receivingiface -j ACCEPT


echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward

答え2

VPNとファイアウォールルールの設定には問題はありません。欠けているのは、ゲートウェイ192.168.0.1が1つだけで、eth0を介してのみアクセスでき、もちろんwlan0からはアクセスできないことです。ルーティングテーブルを確認してください。

この行動はノーマル:カーネルがパケットをルーティングする方法を明示的に知る必要があるため、すべてのオペレーティングシステムにゲートウェイに接続されたインターフェイスが1つしかない場合があります。

Linuxを除くすべてのオペレーティングシステムで2番目(および3番目、4番目...)ルーティングテーブルを追加できます。ただし、各パステーブルルールを明示的に使用するタイミングをカーネルに通知するコマンドも追加できます。実行する必要がある作業は次のとおりです。第二ルーティングテーブルを追加し、tun0サブネット内のすべてのパケットを2番目のルーティングテーブルを介してルーティングする必要があるというルールを追加します。

これをポリシールーティングと呼びます。次のように実行できます。新しいテーブルの名前を選択してから

     echo 200 <NAME1> >> /etc/iproute2/rt_tables
     ip route add <NET1> dev <DEV1> src <SRC1> table <NAME1>

(ここでDEV1はwlan0で、NET1とSRC1はwlan0の既存のネットワークとIPアドレスです。)

     ip route add default via <IP1> table <NAME1>

(IP1はLANのゲートウェイです)そして最後に

     ip rule add from <IP1> table <NAME1>

ここで、IP1 はインターフェイス tun0 のサブネットです。

これだ。

関連情報