VPN 서버를 통해 인터넷의 일부 호스트로 트래픽 라우팅

VPN 서버를 통해 인터넷의 일부 호스트로 트래픽 라우팅

VPN 서버를 통해 인터넷의 일부 호스트로 트래픽을 라우팅해야 합니다.

구성:

컴퓨터: ubuntu-12.04

eth0 - xxxx/24

tun0 - inet 주소:10.8.0.6 PtP:10.8.0.5 마스크:255.255.255.255

OpenVPN 서버(Amazon)가 있습니다:

우분투-12.04

eth0 - yyyy/24

tun0 - inet 주소:10.8.0.1 PtP:10.8.0.2 마스크:255.255.255.255

인터넷 IP에 호스트가 있습니다: qqqq

qqqq로 트래픽을 보내려고 OpenVPN 서버를 던졌습니다. 이를 위해 나는 다음을 수행합니다.

IP테이블:

테이블 mangle에 패킷을 표시합니다.

sudo iptables -t mangle -A OUTPUT -d q.q.q.q -j MARK --set-mark 2

qqqq throw tun0에 트래픽을 보냅니다.

sudo iptables -t nat -A POSTROUTING -d q.q.q.q -j SNAT --to-source 10.8.0.6

iproute2:

/etc/iproute2/rt_tables에 테이블 "100"을 만듭니다.

sudo ip rule add fwmark 2 table 100
sudo ip route add default via 10.8.0.5 table 100

첫 번째 컴퓨터의 tcpdump:

14:22:04.554399 IP 10.8.0.6 > qqqq.clodo.ru : ICMP 에코 요청, ID 11717, 시퀀스 1, 길이 64

14:22:04.681918 IP qqqq.clodo.ru > 10.8.0.6 : ICMP 에코 응답, ID 11717, 시퀀스 1, 길이 64

14:22:05.562577 IP 10.8.0.6 > qqqq.clodo.ru : ICMP 에코 요청, ID 11717, seq 2, 길이 64

14:22:05.690240 IP qqqq.clodo.ru > 10.8.0.6 : ICMP 에코 응답, ID 11717, seq 2, 길이 64

그런데 핑이 안 나오네요. 2개의 패킷 전송, 0개의 패킷 수신, 100% 패킷 손실..

답변1

패킷을 표시할 필요는 없습니다. 계획 중인 작업을 수행하려면 다음이 필요합니다.

서버 구성 파일에 다음을 추가하십시오.

"push route q.q.q.q 255.255.255.255"

위의 내용은 경로를 클라이언트 측으로 푸시하므로 클라이언트에서 해당 IP로 전송되는 모든 트래픽이 openvpn 터널을 통해 전송됩니다.

또한 서버 측에서는 클라이언트로부터 들어오는 트래픽을 수락해야 하며, 다음과 같이 클라이언트 서브넷에서 들어오는 모든 트래픽을 수락할 수 있습니다.

iptables -A INPUT -s 10.8.0.0/24 -j ACCEPT

확실하지 않은 내용이 필요할 수도 있습니다.

iptables -A FORWARD -s 10.8.0.0/24 -j ACCEPT

클라이언트에서 서버 측으로 들어오는 트래픽을 파악해야 합니다.[서버 측에서 수행]

iptables -t nat -A POSTROUTING -d q.q.q.q -j SNAT --to-source PUBLIC_IP_OR_YOUR_VPN_SERVER

그리고 iproute2나 mangle 테이블이 필요하지 않습니다.

규칙의 순서가 중요하므로 일치하는 삭제 규칙보다 먼저 규칙을 따르세요.

관련 정보