web-dev-qa-db-ja.com

ppp0を介したインターネットルートの有効化

サーバー上でDebian8.0.0-64を実行しています。サーバーには、デフォルトゲートウェイとのインターフェースとしてeth1があります。 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)

ここまでは順調ですね。ここで、デフォルトのインターフェース(ping -I ppp0 google.com)としてeth1を使用する可能性を失うことなく、トンネルを介してgoogle.com(ping google.com)などのpingを実行できるようになりたいです。 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つの解決策を見つけましたが、実際には機能しません(理由はわかりません)。

  1. アップスクリプトにroute add default metric 10 gw $PPP_REMOTE $PPP_IFNAMEを追加する、または
  2. defaultrouteをpptp設定に追加します

どちらの場合でも、curl --interface ppp0 ifconfig.corootとして呼び出すと、VPN接続のIPアドレスが返されますが、他の非rootユーザーとしてコマンドを実行できません。コマンドcurl --interface eth1 ifconfig.coは、rootまたは通常のユーザーとして正常に動作します。

1
Philipp

私が達成したかったことを達成するために、私は次のことをしなければなりませんでした:

ステップ1:DebianプロジェクトのPPTPクライアントプログラムをインストールする

ステップ2:PPTP接続を設定する

ステップ3:接続のテスト

ステップ4:ルートを追加する

ステップ5:最終チェック

最初の3つのステップでは、主に http://pptpclient.sourceforge.net/howto-debian.phtml に従いました。その後、2つのデフォルトゲートウェイを追加する方法を説明するこの素晴らしい記事( https://www.thomas-krenn.com/en/wiki/Two_Default_Gateways_on_One_System )を見つけました。 2番目のゲートウェイアプローチの背後にある主なアイデアは、/etc/iproute2/rt_tablesSecond Routing Tableを作成することです(私の場合は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番目のゲートウェイを選択できます。

1
Philipp

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を介して連絡するアドレスがわかっている場合は、これらのアドレスをデフォルト以外のルートとして設定できます。

または、 network namespaces を使用して、一部のプログラムに異なるネットワーク構成を使用させることもできますが、これはセットアップがそれほど簡単ではなく、いくつかの落とし穴があります(たとえば、異なるresolve.confが必要です)。

1
dirkt

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

router-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

Github-ppp0-vpnのインターネット用Bashスクリプト

0
Rishu Ranjan