
私のサーバーにはeth1
デフォルトゲートウェイとインターフェースするDebian 8.0.0-64が動作しています。eth0
内部ネットワークを指します。
root@server:/home/user# ifconfig
eth0 Link encap:Ethernet HWaddr 06:46:7e:88:72:d7
inet addr:10.168.118.205 Bcast:10.168.118.255 Mask:255.255.255.192
inet6 addr: fe80::446:7eff:fe88:72d7/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:161 errors:0 dropped:0 overruns:0 frame:0
TX packets:203 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:15215 (14.8 KiB) TX bytes:79027 (77.1 KiB)
eth1 Link encap:Ethernet HWaddr 06:70:65:5f:e9:89
inet addr:167.41.133.218 Bcast:167.41.133.223 Mask:255.255.255.240
inet6 addr: fe80::470:65ff:fe5f:e989/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:697 errors:0 dropped:0 overruns:0 frame:0
TX packets:282 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:46420 (45.3 KiB) TX bytes:33486 (32.7 KiB)
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:65536 Metric:1
RX packets:706 errors:0 dropped:0 overruns:0 frame:0
TX packets:706 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:86847 (84.8 KiB) TX bytes:86847 (84.8 KiB)
以下の手順に従ってVPN(TotalVPN)接続を確立しました。 http://pptpclient.sourceforge.net/howto-debian.phtml#configure_by_hand
pon amsterdam
実際にトンネルを開くことができます。
root@server:/home/user# pon amsterdam
root@server:/home/user# ifconfig
ppp0 Link encap:Point-to-Point Protocol
inet addr:10.126.0.29 P-t-P:10.126.0.1 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1496 Metric:1
RX packets:6 errors:0 dropped:0 overruns:0 frame:0
TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:3
RX bytes:60 (60.0 B) TX bytes:66 (66.0 B)
今まではそんなに良くなった。たとえば、トンネルを介してgoogle.com()をネイティブインターフェース()ping -I ppp0 google.com
として使用する可能性を失うことなくpingできます。特別な要件がある場合(使用するインターフェイスを定義するなど)、トラフィック(インターネットに向かう)がトンネルを通過できるようにインターフェイスをどのように設定しますか?eth1
ping google.com
route
ppp0
以下はいくつかの情報です(VPN接続名はですamsterdam
)。
root@server:/home/user# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 167.41.133.209 0.0.0.0 UG 0 0 0 eth1
10.0.0.0 10.168.118.193 255.0.0.0 UG 0 0 0 eth0
10.168.118.192 0.0.0.0 255.255.255.192 U 0 0 0 eth0
161.26.0.0 10.168.118.193 255.255.0.0 UG 0 0 0 eth0
167.41.133.208 0.0.0.0 255.255.255.240 U 0 0 0 eth1
root@server:/home/user# pon amsterdam
root@server:/home/user# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 0.0.0.0 UG 0 0 0 eth1
10.0.0.0 10.168.118.193 255.0.0.0 UG 0 0 0 eth0
10.126.0.1 0.0.0.0 255.255.255.255 UH 0 0 0 ppp0
10.168.118.192 0.0.0.0 255.255.255.192 U 0 0 0 eth0
45.32.239.20 167.41.133.209 255.255.255.255 UGH 0 0 0 eth1
161.26.0.0 10.168.118.193 255.255.0.0 UG 0 0 0 eth0
167.41.133.208 0.0.0.0 255.255.255.240 U 0 0 0 eth1
root@server:/home/user# poff amsterdam
root@server:/home/user# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 167.41.133.209 0.0.0.0 UG 0 0 0 eth1
10.0.0.0 10.168.118.193 255.0.0.0 UG 0 0 0 eth0
10.168.118.192 0.0.0.0 255.255.255.192 U 0 0 0 eth0
45.32.239.20 167.41.133.209 255.255.255.255 UGH 0 0 0 eth1
161.26.0.0 10.168.118.193 255.255.0.0 UG 0 0 0 eth0
167.41.133.208 0.0.0.0 255.255.255.240 U 0 0 0 eth1
root@server:/home/user#
2つの解決策が見つかりました。最初のビューでは動作しますが、実際には動作しません(理由はわかりません)。
route add default metric 10 gw $PPP_REMOTE $PPP_IFNAME
upスクリプトを追加するdefaultroute
pptp設定に追加
どちらの場合もcurl --interface ppp0 ifconfig.co
asを呼び出すroot
と、VPN接続のIPアドレスが返されますが、root以外のユーザーと同じようにコマンドを実行することはできません。一般ユーザーの場合、コマンドはcurl --interface eth1 ifconfig.co
正常に機能します。root
答え1
私が成し遂げたいことを成し遂げるためには、次のようなことをしなければなりません。
ステップ1:DebianプロジェクトのPPTPクライアントプログラムをインストールする
ステップ2:PPTP接続を設定する
ステップ3:接続テスト
ステップ4:ルーティングを追加する
ステップ5:最終検査
最初の3つのステップでは、主に次のステップに従います。http://pptpclient.sourceforge.net/howto-debian.phtml。それからこのような良い記事を見つけました(https://www.thomas-krenn.com/en/wiki/Two_Default_Gateways_on_One_System)では、2つのデフォルトゲートウェイを追加する方法について説明します。 2番目のゲートウェイアプローチの主なアイデアは、2番目のルーティングテーブルin /etc/iproute2/rt_tables
(私の場合は名前をppp
)と指定しました。これが完了すると、この新しいテーブルにパスが追加され、ルールが定義されます。
ip route add 10.10.0.0/24 dev eth1 src 10.10.0.10 table ppp
ip route add default via 10.10.0.1 dev eth1 table ppp
ip rule add from 10.10.0.10/32 table ppp
ip rule add to 10.10.0.10/32 table ppp
テスト後、VPN接続が確立されるたびにパスが追加および削除されるようにスクリプトを追加しました。
IPアップスクリプト
#!/bin/sh
if [ "$PPP_IPPARAM" = "amsterdam" ] ; then
/sbin/ip route add $PPP_LOCAL/24 dev $PPP_IFACE src $PPP_LOCAL table ppp
/sbin/ip route add default via $PPP_REMOTE dev $PPP_IFACE table ppp
/sbin/ip rule add from $PPP_LOCAL/32 table ppp
/sbin/ip rule add to $PPP_LOCAL/32 table ppp
fi
IPダウンスクリプト
#!/bin/sh
if [ "$PPP_IPPARAM" = "amsterdam" ] ; then
/sbin/ip route del $PPP_LOCAL/24 dev $PPP_IFACE src $PPP_LOCAL table ppp
/sbin/ip route del default via $PPP_REMOTE dev $PPP_IFACE table ppp
/sbin/ip rule del from $PPP_LOCAL/32 table ppp
/sbin/ip rule del to $PPP_LOCAL/32 table ppp
fi
これはうまく機能し、必要に応じて2番目のゲートウェイを選択できます。
答え2
route
最新バージョンを使用してip route
パスを設定できます。
ip route
既存のルートを表示し、
ip route del default via 167.41.133.218
ip route add default via 10.126.0.29
デフォルトパスを介してeth1
パスに置き換えるppp0
「特別に要請した場合」が質問です。プログラムを介さずに宛先アドレスを介してルートを設定します。したがって、経由で連絡するアドレスを知っている場合は、ppp0
そのアドレスをデフォルト以外のパスに設定できます。
または、次のものを使用できます。ネットワークネームスペース一部のプログラムでは他のネットワーク構成を使用できますが、設定が簡単ではなく問題があります(たとえば、他の解決.confが必要です)。
答え3
ppp0-vpnからインターネットにアクセスする単純なbashスクリプト
## Instruction to Use
- Once you are connected to ppp0-VPN
- Run this bash script. Command shared below
> chmod +x router-ppp0toint.sh
> ./router-ppp0toint.sh
ルーター-ppp0toint.sh
#!/bin/bash
IP=$(ifconfig ppp0 | grep inet | cut -d: -f2 |awk '{print $2}') #IP assigned post connected to ppp0 VPN
echo $IP #echos ppp0 IP
route del -net 0.0.0.0 gw $IP dev ppp0
route add -net 172.16.0.0 gw $IP netmask 255.255.0.0 dev ppp0 #add static route
route add -net 192.168.0.0 gw $IP netmask 255.255.0.0 dev ppp0