내 서버에는 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#
두 가지 해결책을 찾았습니다. 첫 번째 보기에서는 작동하지만 실제로는 작동하지 않습니다(이유는 모르겠습니다).
route add default metric 10 gw $PPP_REMOTE $PPP_IFNAME
up 스크립트를 추가 하거나defaultroute
pptp 구성에 추가
두 경우 모두 curl --interface ppp0 ifconfig.co
as를 호출 root
하면 VPN 연결의 IP 주소가 반환되지만 루트가 아닌 다른 사용자처럼 명령을 실행할 수는 없습니다. 일반 사용자라면 명령이 curl --interface eth1 ifconfig.co
제대로 작동합니다.root
답변1
내가 이루고 싶은 것을 이루기 위해서는 다음과 같은 일을 해야 합니다.
1단계: 데비안 프로젝트의 PPTP 클라이언트 프로그램 설치
2단계: PPTP 연결 설정
3단계: 연결 테스트
4단계: 라우팅 추가
5단계: 최종 검사
처음 세 단계에서는 주로 다음 단계를 따릅니다.http://pptpclient.sourceforge.net/howto-debian.phtml. 그러다가 이런 좋은 글을 발견했습니다(https://www.thomas-krenn.com/en/wiki/Two_Default_Gateways_on_One_System), 두 개의 기본 게이트웨이를 추가하는 방법을 설명합니다. 두 번째 게이트웨이 접근 방식의 주요 아이디어는두 번째 라우팅 테이블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
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