自宅にいるときに電話をオフィスネットワークに接続する必要があります。電話にVPNクライアントをインストールすることはオプションではありません。私はこのチュートリアルに従って、rpiで動作するアクセスポイントを取得しました。
アクセスポイントとして機能するようにRaspberryPiを構成します: https://www.raspberrypi.org/documentation/configuration/wireless/access-point.md
チュートリアルの指示に従ってブリッジ(wlan0とeth0の間のbr0)を作成する代わりに、iptablesを使用して転送を行いました。
Sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
これはかなりうまく機能しますが、VPNに接続すると機能しません。 iptablesコマンドのさまざまな組み合わせを試しましたが、完全に機能しているものはないようです。これが私が試したいくつかの組み合わせです:
私が達成したいのは:
$ルート
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default * 0.0.0.0 U 0 0 0 tun0
default ralink.dlink.co 0.0.0.0 UG 202 0 0 eth0
10.20.30.40 * 255.255.255.255 UH 0 0 0 tun0
192.168.0.0 * 255.255.255.0 U 202 0 0 eth0
192.168.1.0 * 255.255.255.0 U 303 0 0 wlan0
as-40816.abc ralink.dlink.co 255.255.255.255 UGH 0 0 0 eth0
これは、VPNサーバーを別のホストに変更したときです
$ route -n(Host2)
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default 192.168.0.1 0.0.0.0 UG 202 0 0 eth0
10.0.0.0 * 255.0.0.0 U 0 0 0 tun0
10.104.26.116 * 255.255.255.255 UH 0 0 0 tun0
150.11.0.101 * 255.255.255.255 UH 0 0 0 tun0
150.11.0.102 * 255.255.255.255 UH 0 0 0 tun0
102.191.24.21 192.168.0.1 255.255.255.255 UGH 0 0 0 eth0
192.168.0.0 * 255.255.255.0 U 202 0 0 eth0
192.168.1.0 * 255.255.255.0 U 303 0 0 wlan0
あなたの例はtun
デバイスを示しているので、ルーティングのみを使用する必要があります。 Raspbian Stretch Lite 2018-04-18 を使用します。アイデアは、余分なものなしで静的な最小構成をセットアップすることです。 dhcp server
かそこら。ルーティングが機能する場合は、段階的に拡張できます。
Raspbianのデフォルトのネットワークは、特に複雑なセットアップと混同されることがよくあります[1]。そのため、サーバーのセットアップ用に設計されたsystemd-networkd
を使用します。インターフェイスのすべてのIPアドレスを推測するのは難しいため、次のIPアドレスを使用してテストを設定しました。
10.10.10.2 +----------+ 10.10.10.1
/ vpn-tunnel | | \
(tun0) =============\\ //======================> VPN-SERVER
PHONE ~.~.~.~.~.~> (wlan0)RPI(eth0) ------------> ROUTER ---> | INTERNET |
\ wifi / \ ethernet / wan | |
192.168.1.2 192.168.1.1 192.168.0.2 192.168.0.1 +----------+
私にとってのもう1つの問題は、Cisco3000 VPNコンセントレータがないため、vpnc
を使用できないことです。代わりにopenvpn
を使用しましたが、ルーティングでも同じことを行う必要があります。ただし、openvpn
インフラストラクチャの設定はここでは範囲外です。
ネットワーキングからsystemd-networkdに移行する方法 を使用したいが、このファイルでステップ1からステップ3を使用するだけでよい場合は、
rpi ~$ Sudo cat >/etc/systemd/network/04-eth.network <<EOF
[Match]
Name=e*
[Network]
Address=192.168.0.2/24
Gateway=192.168.0.1
EOF
rpi ~$ Sudo cat >/etc/systemd/network/08-wifi.network <<EOF
[Match]
Name=wl*
[Network]
Address=192.168.1.1/24
IPForward=yes
EOF
ip forwarding
は必須です。
wpa_supplicant
を設定しないでください。代わりにhostapd
[2]をインストールしてください。
rpi ~$ Sudo -Es
rpi ~# systemctl disable wpa_supplicant.service
rpi ~# apt update
rpi ~# apt full-upgrade
rpi ~# apt install hostapd
rpi ~# systemctl stop hostapd.service
次のファイルを使用して、アクセスポイントのホストソフトウェア(hostapd)を構成します。
rpi ~# cat >/etc/hostapd/hostapd.conf <<EOF
interface=wlan0
driver=nl80211
ssid=MyTestAP
hw_mode=g
channel=6
wmm_enabled=0
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=VerySecretPw
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
EOF
rpi ~# chmod 600 /etc/hostapd/hostapd.conf
/ etc/default/hostapdのDAEMON_CONF = "/ etc/hostapd /hostapd.conf"を次のように設定します。
rpi ~# sed -i 's/^#DAEMON_CONF=.*$/DAEMON_CONF="\/etc\/hostapd\/hostapd.conf"/' /etc/default/hostapd
rpi ~# systemctl reboot
次に、インターネットルーターに静的ルートを設定して、raspi経由で携帯電話までのルートを見つけられるようにする必要があります。ほとんどのインターネットルーターでは静的ルートを設定できますが、その方法はモデルごとに異なります。それを見つけるのはあなた次第です。 Raspberry Piでは、次のようになります(Raspiルーターに設定しないでください!)
rpi ~$ Sudo ip route add 192.168.1.0/24 via 192.168.0.2 dev ethX
つまり、インターネットルーターの場合:「サブネット192.168.1.0/24
(宛先ネットワーク)に属するすべてのパケットを、サブネット上の次のルーターであるraspi-router 192.168.0.2
(ゲートウェイ)に送信します。どこに進むかがわかります。 。」
インターネットルーターにアクセスできない場合は、nat
を使用して偽造し、すべてのパケットがraspiから送信されていることを嘘で伝えることができます。これをRaspberryPiに設定します。
rpi ~$ Sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
ただし、これはクリーンなルーティングではなく、制限があり、混乱を招く可能性があるため、2番目の選択肢にすぎません。
ここで携帯電話をMyTestAPに接続する場合は、静的IPアドレス192.168.1.2、ゲートウェイ192.168.1.1で構成します。その後、インターネットに接続できるようになります。
設定は次のとおりです。
rpi ~$ ip addr # stripped to relevant information
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
inet 127.0.0.1/8 scope Host lo
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
inet 192.168.0.2/24 brd 192.168.0.255 scope global eth0
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
inet 192.168.1.1/24 brd 192.168.1.255 scope global wlan0
rpi ~$ ip route
default via 192.168.0.1 dev eth0 proto static
192.168.0.0/24 dev eth0 proto kernel scope link src 192.168.0.2
192.168.1.0/24 dev wlan0 proto kernel scope link src 192.168.1.1
今私はVPN接続を確立します。と:
rpi ~$ Sudo openvpn myVpn.conf
その場合の設定は次のとおりです。
rpi ~$ ip addr # stripped to relevant information
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
inet 127.0.0.1/8 scope Host lo
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
inet 192.168.0.2/24 brd 192.168.0.255 scope global eth0
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
inet 192.168.1.1/24 brd 192.168.1.255 scope global wlan0
11: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 100
link/none
inet 10.10.10.2 peer 10.10.10.1/32 scope global tun0
rpi ~$ ip route
default via 192.168.0.1 dev eth0 proto static
10.0.0.0/8 via 10.10.10.1 dev tun0
10.10.10.1 dev tun0 proto kernel scope link src 10.10.10.2
192.168.0.0/24 dev eth0 proto kernel scope link src 192.168.0.2
192.168.1.0/24 dev wlan0 proto kernel scope link src 192.168.1.1
ここでは、リモートVPNサーバーにも静的ルートを設定する必要がありますが、それを行う機会はないと思います。したがって、サーバーを偽造できるのはnat
だけです。 raspiセットの場合:
rpi ~$ Sudo iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE
今では、wifiを介して携帯電話で常にインターネットにアクセスできましたが、接続が確立されている場合はVPNネットワークにのみアクセスできました。
参照:
[1] dhcpcd vs/etc/network/interfaces
[2] アクセスポイントとしてのRaspberry Piの設定