{ 2012.4.14 }

iptablesを利用してVPN接続を共有(?)してみる話

    はてなブックマーク - iptablesを利用してVPN接続を共有(?)してみる話
    このエントリーをはてなブックマークに追加

    Fusic 平田です。

    前提

    VPN越しでサーバに接続することがままあるのですが。
    接続先VPNルータの設定の問題で、Windows7での接続がどうにも失敗するという事態に。
    VPNルータの設定を変えたいものの、設置先が遠方なのですぐには対応できず。

    で、Linux(確認したのはUbuntu)だったら接続できるようなので、このLinuxのVPN接続を間借り共有すればいいんじゃないかなという話に。
    図で書くと↓のような想定ビフォーアフター。



    というわけで、iptablesを使ってさくっとやってみます。

    ネットワーク情報

    Linux(VPN接続済)
    eth0: 192.168.11.100
    ppp0: 192.168.100.200
    ※LinuxでのVPN接続方法については、今回は割愛。
    サーバ
    eth0: 192.168.100.100
    クライアント(Windows7)
    eth0: 192.168.11.101

    いろいろ設定

    まずはLinuxの設定をいくつか。

    $ cat /etc/sysctl.conf | grep net\.ipv4\.ip_forward
    net.ipv4.ip_forward=1

    net.ipv4.ip_forward=1にすることで、IPv4転送が有効になります。
    書き換えた後は

    $ sudo sysctl -p
    net.ipv4.ip_forward = 1

    として設定を反映。

    あとはiptablesでIPマスカレードを設定。

    $ sudo iptables -t nat -A POSTROUTING -s 192.168.11.0/24 -j MASQUERADE

    これでLinux側は準備完了。

    Windows7側にはルーティングを追加。

    C:\Windows\System32>route add 192.168.100.0 mask 255.255.255.0 192.168.11.100
    OK!

    ※ルーティングを永続的にしたい場合は、-pを加えると再起動後も有効になります。

    で、Windows7側からpingで確認してみると

    C:\Windows\System32>ping 192.168.100.100
     
    192.168.100.100 に ping を送信しています 32 バイトのデータ:
    192.168.100.100 からの応答: バイト数 =32 時間 =34ms TTL=62
    192.168.100.100 からの応答: バイト数 =32 時間 =34ms TTL=62
    192.168.100.100 からの応答: バイト数 =32 時間 =36ms TTL=62
    192.168.100.100 からの応答: バイト数 =32 時間 =38ms TTL=62
     
    192.168.100.100 の ping 統計:
        パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
    ラウンド トリップの概算時間 (ミリ秒):
        最小 = 34ms、最大 = 38ms、平均 = 35ms

    無事見えるようになりました。:-)

    内容としては単なるIPマスカレードの話なのですが、こんな使い方もあるよってことで。

    Comments are closed.