서비스로 구성된 DD-WRT
라우터가 있습니다 OpenVPN
. VPN 연결을 통해 특정 소스 IP만 보내고 싶습니다.
내 현재 라우팅 테이블(그림 참조
netstat -rn
)은 인터페이스의 VPN을 통해 모든 트래픽을 전송한다고 생각합니다 tun1
. 내가 이해한 바로는 라우팅 테이블은 "실패" 테이블이므로 이 경우 모든 트래픽은 첫 번째 항목으로 인해 인터페이스를 0.0.0.0
통과하게 됩니다 tun1
.
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 10.182.1.5 128.0.0.0 UG 0 0 0 tun1
0.0.0.0 10.0.1.1 0.0.0.0 UG 0 0 0 br0
10.0.1.0 0.0.0.0 255.255.255.0 U 0 0 0 br0
10.182.1.1 10.182.1.5 255.255.255.255 UGH 0 0 0 tun1
10.182.1.5 0.0.0.0 255.255.255.255 UH 0 0 0 tun1
46.23.68.178 10.0.1.1 255.255.255.255 UGH 0 0 0 br0
127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo
128.0.0.0 10.182.1.5 128.0.0.0 UG 0 0 0 tun1
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br0
내 목표는 특히 다음 IP 매핑을 a1505.g2.akamai.net
기반으로 웹사이트를 통해 1~2개의 웹사이트만 라우팅하는 것입니다.NSLookup
- 주소: 195.59.150.43
- 주소: 195.59.150.26
나는 3단계가 필요하다고 믿는다.
1) iptables
첫 번째 라우팅 항목을 삭제하는 명령을 실행합니다. 그렇게 하면 VPN을 통한 트래픽 전송이 중단됩니다. tun1
2) 목적지 195.59.150.43
와 195.59.150.26
경로를 알려주는 두 개의 명령을 실행합니다.tun1
하지만 솔직히 말해서 iptables는 꽤 혼란스럽습니다.
이것이 올바른 접근 방식입니까? 그렇다면 누군가 나에게 샘플 명령을 한두 개 줄 수 있습니까?
감사해요!
답변1
라우팅 테이블이 "실패" 테이블이라는 것을 이해합니다.
설마. 라우팅 테이블은 "가장 구체적인 경로"부터 "가장 덜 구체적인 경로"까지 정렬됩니다. 기본 경로는 경유이며 넷마스크( 즉 ) br0
가 없기 때문에 최후의 수단 경로로 정의됩니다 .genmask
0.0.0.0
첫 번째 항목이 0.0.0.0이므로 모든 트래픽은 tun1 인터페이스를 통과합니다.
이는 올바른 결론이지만 불행하게도 잘못된 추론입니다. 다음은 라우팅에 사용되는 순서를 나타내기 위해 시각적으로 정렬된 라우팅 테이블입니다(위쪽이 가장 일치함).
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
10.182.1.1 10.182.1.5 255.255.255.255 UGH 0 0 0 tun1
10.182.1.5 0.0.0.0 255.255.255.255 UH 0 0 0 tun1
46.23.68.178 10.0.1.1 255.255.255.255 UGH 0 0 0 br0
10.0.1.0 0.0.0.0 255.255.255.0 U 0 0 0 br0
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br0
127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo
0.0.0.0 10.182.1.5 128.0.0.0 UG 0 0 0 tun1
128.0.0.0 10.182.1.5 128.0.0.0 UG 0 0 0 tun1
0.0.0.0 10.0.1.1 0.0.0.0 UG 0 0 0 br0
기본 경로는 여전히 를 통해 이루어집니다 br0
. 그러나 두 개의 구체적인 경로(넷마스크 포함)가 더 있으며 128.0.0.0
, 각 경로는 사용 가능한 IPv4 주소 공간의 절반과 일치하므로 로컬이 아닌 모든 트래픽과 일치합니다.
nslookup
내 목표는 다음 IP에 대한 매핑을 기반으로 1~2개의 웹사이트, 특히 a1505.g2.akamai.net만 라우팅하는 것195.59.150.43
입니다195.59.150.26
.
"웹사이트"가 무슨 뜻인지 잘 모르겠습니다. tun1
해당 방향으로 가는 모든 트래픽을 차단하고 싶다고 가정하겠습니다.
route-gateway def1
OpenVPN으로 이 작업을 수행하려면 구성 파일에서 지시어를 제거하기만 하면 됩니다. (NetworkManager와 같은 것을 사용하는 경우 연결을 기본 경로로 표시하는 선택을 취소하는 옵션이 있어야 합니다.)
이 작업을 완료한 후에는 게이트웨이를 통해 각 호스트에 대해 하나씩 두 개의 경로를 추가하기만 하면 됩니다 tun1
.
route add -host 195.59.150.43 gw 10.182.1.5
route add -host 195.59.150.26 gw 10.182.1.5
이는 호스트 경로이므로 넷마스크가 암시적 /32
(예: 255.255.255.255
)이므로 모든 것보다 우선합니다. 시각적 정렬 테이블에서는 이 세 항목이 목록의 맨 위에 표시됩니다.
실제로 OpenVPN 구성 파일에서도 이 작업을 수행할 수 있습니다. 이렇게 하면 VPN 자체가 자동으로 경로를 시작하고 제거할 수 있습니다. 설정에 따라 구성은 경로가 클라이언트에 "푸시"되는 서버에 있거나 클라이언트의 OpenVPN 구성 파일에 있는 지시어로 이루어집니다.
route 195.59.150.43
route 195.59.150.26
답변2
route
대신 명령을 사용할 수 있다고 생각합니다 iptables
.
route 111.112.113.114 gw 10.182.1.5
openvpn
또는 서버 측에서 경로를 푸시할 수 있습니다.