개방형 VPN 라우팅

개방형 VPN 라우팅

지금까지 암호화되지 않은 openvpn 터널을 사용하여 서버 A와 서버 B 간의 가상 링크를 성공적으로 만들었습니다. 서버 B의 트래픽 중 일부를 서버 A를 통해 라우팅하려고 합니다. 서버 B에는 5개의 외부 IP가 있고 5개의 로컬 VPN IP를 추가하여 서버 A의 5개 IP로 트래픽을 리디렉션하려고 합니다. 이렇게 하면 서버 B에게 전 세계 10개의 다른 발신 IP가 제공됩니다. 분명히 두 서버 모두에서 일부 라우팅을 수행해야 하지만 하루 동안 검색하고 읽은 후에도 결과가 나오지 않습니다.

내가 해냈어

ip route add default via 10.0.0.2 dev tun0 table vpn_table
ip rule add from 10.0.0.1/32 table vpn_table
ip rule add to 10.0.0.2/32 table vpn_table
ip route flush cache

서버 B에서는 서버 A와 동일한 상황이지만 IP가 교체되었습니다. 그러나 서버 B에서 이 작업을 수행하면 wget --bind-address=10.0.0.1 somewebsite작동하지 않습니다. 서버 A가 요청을 처리하는 방법을 모르기 때문인 것 같습니다.

누구든지 올바른 방향으로 나를 가리킬 수 있습니까?

편집하다

누군가 서버 A에는 IP 규칙이 필요하지 않다고 제안했기 때문에 현재 상황은 다음과 같습니다.

  1. openvpn 링크 설정
  2. 서버 BI에서 위에 언급된 4개의 ip 명령을 실행합니다.

서버 A의 일부 라우팅 정보가 아직 누락된 것 같습니다. wget --bind-address=10.0.0.1 http://www.cnn.com서버 B에서 실행할 때 서버 A의 tcpdump가 출력하는 내용은 다음과 같습니다 .

tcpdump: WARNING: arptype 65534 not supported by libpcap - falling back to cooked socket
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on tun0, link-type LINUX_SLL (Linux cooked), capture size 96 bytes
07:11:58.787908 IP 10.0.0.1.42802 > 157.166.248.10.80: S 2416144580:2416144580(0) win 14600 <mss 1410,sackOK,timestamp 858359606 0,nop,wscale 7>
07:11:59.786129 IP 10.0.0.1.42802 > 157.166.248.10.80: S 2416144580:2416144580(0) win 14600 <mss 1410,sackOK,timestamp 858359856 0,nop,wscale 7>
07:12:01.788535 IP 10.0.0.2 > 10.0.0.1: ICMP host 157.166.248.10 unreachable, length 68
07:12:01.788545 IP 10.0.0.2 > 10.0.0.1: ICMP host 157.166.248.10 unreachable, length 68

서버 B의 Wget은 다음과 같이 말합니다.

Connecting to www.cnn.com (www.cnn.com)|157.166.248.11|:80... failed: No route to host.

2014년 5월 19일에 편집됨

서버 A에 SNAT를 추가했고 이제 서버 A의 tcpdump가 나에게 제공합니다(93.184.216.119 = www.example.com, 1.2.3.4 = 서버 A의 외부 IP, 이제 10.0.0.1 원본의 패킷)

09:29:44.114475 IP 10.0.0.1.54691 > 93.184.216.119.80: S 717252699:717252699(0) win 14600 <mss 1410,sackOK,timestamp 903625938 0,nop,wscale 7>
09:29:45.113546 IP 10.0.0.1.54691 > 93.184.216.119.80: S 717252699:717252699(0) win 14600 <mss 1410,sackOK,timestamp 903626188 0,nop,wscale 7>
09:29:47.116587 IP 1.2.3.4 > 10.0.0.1: ICMP host 93.184.216.119 unreachable, length 68
09:29:47.116668 IP 1.2.3.4 > 10.0.0.1: ICMP host 93.184.216.119 unreachable, length 68
09:29:47.119289 IP 10.0.0.1.54691 > 93.184.216.119.80: S 717252699:717252699(0) win 14600 <mss 1410,sackOK,timestamp 903626689 0,nop,wscale 7>
09:29:50.120591 IP 1.2.3.4 > 10.0.0.1: ICMP host 93.184.216.119 unreachable, length 68

따라서 서버 A의 SNAT가 작동하는 것으로 보이지만 요청한 웹 사이트에 연결할 수 없습니다. 서버 A iptables 목록:

SNAT       all  --  10.0.0.1             anywhere            to:1.2.3.4

서버 A IP 규칙 목록:

0:      from all lookup local
32766:  from all lookup main
32767:  from all lookup default

서버 'route -n'의 일부:

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.0.0.1        0.0.0.0         255.255.255.255 UH    0      0        0 tun0

게이트웨이는 0.0.0.0입니다. 이것이 관련될 수 있습니까?

답변1

몇 가지 질문이 있습니다:

  1. 패킷을 원래 위치로 라우팅하는 것은 의미가 없습니다. 지금 바로

    ip rule add from 10.0.0.1/32 table vpn_table
    

    서버 A에서는 생략되어야 합니다( ip rule add to...필요하지 않음) . 서버 A에는 "정상" 라우팅이 있습니다. 그러나 서버 B(B의 IP 주소용)에 이러한 규칙을 설정해야 합니다.

  2. 서버 A에서 SNAT를 수행해야 합니다. 비슷하다

    iptables -t nat -A POSTROUTING -s 10.0.0.1 -j SNAT --to-source 1.2.3.4
    

관련 정보