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マスカレードの話なのですが、こんな使い方もあるよってことで。