여러 인터페이스 eth0 wlan0을 통해 ssh에서 인터넷으로

여러 인터페이스 eth0 wlan0을 통해 ssh에서 인터넷으로

대체를 위해 다른 인터페이스(Raspbian strech가 있는 라즈베리 파이에서)를 통해 여러 역방향 SSH 터널을 열려고 합니다.

즉, 다른 인터페이스를 통해 나가는 SSH 연결을 여는 데 문제가 있다고 말했습니다. 현재 다음이 있습니다:

  • eth0을 고정 IP(192.168.1.200)로 사용
  • dhcp를 통한 wlan0(192.168.178.100)

SSH를 IP 주소에 바인딩하면 "eth0"에서는 작동하지만 "wlan0"에서는 작동하지 않습니다.

  • ssh -b 192.168.1.200 user@externalip일하고있다
  • ssh -b 192.168.178.100 user@externalip~이다아니다일하고 있는

그 외에도 두 인터페이스를 통해 인터넷으로 경로를 추적할 수 있습니다.

  • ssh -b 192.168.1.200 user@externalip일하고있다

sudo 추적 경로 -i wlan0 google.com

traceroute to google.com (172.217.21.14), 30 hops max, 60 byte packets
 1  192.168.178.1 (192.168.178.1)  12.528 ms  17.229 ms  21.757 ms
 2  192.0.0.1 (192.0.0.1)  26.576 ms  41.445 ms  47.408 ms ...
  ...

sudo 추적 경로 -i eth0 google.com

traceroute to google.com (172.217.21.14), 30 hops max, 60 byte packets
 1  192.168.1.1 (192.168.1.1)  0.537 ms  0.404 ms  0.570 ms
  ...

두 인터페이스 모두에서 SSH를 작동시키는 방법을 아시나요?

경로 -n:

0.0.0.0         192.168.1.1     0.0.0.0         UG    202    0        0 eth0
0.0.0.0         192.168.178.1   0.0.0.0         UG    303    0        0 wlan0
192.168.0.0     0.0.0.0         255.255.252.0   U     202    0        0 eth0
192.168.178.0   0.0.0.0         255.255.255.0   U     303    0        0 wlan0

답변1

기본적으로 (기본) 라우팅 테이블의 첫 번째 일치 항목만 대상까지의 경로를 결정하는 데 사용됩니다. 더욱이 일치하는 항목에서 수신되지 않은 패킷은 다음과 같은 이유로 폐기됩니다.rp_filter.

설정에는 정책 라우팅이 필요합니다. 이제 경로는 여러 라우팅 테이블에 여러 경로를 저장하고 적절한 테이블을 선택하여 소스에 따라 경로를 지정함으로써 대상뿐만 아니라 소스에도 의존해야 합니다. 이전 설명은 그대로 유지됩니다. 테이블에서 일치하는 첫 번째 경로가 선택되지만 다른 테이블에서 선택될 수도 있습니다.

따라서 먼저 추가 라우팅 테이블("임의로" 선택된 테이블 값)을 설정하여 테이블만으로는 작동하지 않는 것을 보완합니다 main.

ip route add table 1921681    default via 192.168.1.1 dev eth0
ip route add table 192168178  default via 192.168.178.1 dev wlan0

그런 다음 올바른 소스 선택기를 사용하여 적절한 테이블을 선택합니다.ip rule. 여기서는 하나의 새로운 규칙만으로 충분하지만 대칭을 위해 둘 다 추가되어 예를 들어 메트릭을 변경할 때(나중에 참조) 기본 라우팅 테이블에 더 많은 유연성을 허용합니다.

ip rule add from 192.168.0.0/22   lookup 1921681
ip rule add from 192.168.178.0/24 lookup 192168178

이제 규칙은 다음과 같습니다.

# ip rule
0:  from all lookup local 
32764:  from 192.168.178.0/24 lookup 192168178 
32765:  from 192.168.0.0/22 lookup 1921681 
32766:  from all lookup main 
32767:  from all lookup default 

일반적인 테이블을 조회하는 항목에 대한 예외로 항목 32764등을 고려하십시오 .3276532766main

이제 이전 명령이 의도한 대로 작동하고 옵션을 사용하여 소스 IP를 지정하면 두 경로가 동시에 작동할 수 있습니다 -b.

소스 IP를 명시하지 않으면 시스템은 추가 규칙 및 라우팅 테이블에서 즉시 일치하지 않으며 기본 테이블을 사용할 때 선택한 항목이 기본값으로 설정됩니다. 첫 번째로 일치하는 경로가 승리하므로 192.168.1.200현재 설정에서 소스가 선택됩니다. .

다시 반복하자면, 일반적으로 그렇듯이 소스 IP를 명시적으로 명시하지 않으면 기본 경로는 여전히기본기본 경로와 해당 기본 소스 IP, 규칙에 따라 32764어떤 32765경우에도 올바르게 작동하도록 보장합니다. 따라서 측정항목을 사용하여 어떤 경로와 IP가 우선할지 선택할 수 있습니다.

예를 들어, wlan0소스 IP를 명시하지 않을 때 이제 선호되도록 하려면 의 기본 경로를 갖도록 202의 메트릭을 늘리십시오 . 따라서 IP가 먼저 선택됩니다. 명시적으로 소스 IP를 명시하면 규칙 이나 에서 직접 일치합니다 . 이전에 설정된 연결은 "소스 IP 명시"로 간주되므로 방해받지 않습니다.eth01000wlan03276432765

ip route add default via 192.168.1.1 dev eth0 metric 1000
ip route del default via 192.168.1.1 dev eth0 metric 202

몇 가지 추가 참고 사항:

  • (일반적인) 테이블 에서 모든 기본 경로를 제거하려고 시도하지 마십시오 main. 그렇지 않으면 애플리케이션이 소스 IP(" Network is unreachable")를 명시하지 않으면 연결이 더 이상 설정되지 않습니다.
  • 두 개의 다른 네트워크에 동일한 IP를 갖는 것을 포함하여 더 복잡한 경우가 가능하지만 이를 위해서는 추가 설정이 필요하며 아마도 netfilter 및 iptables.
  • 다음을 사용하여 해당 경로의 부하를 분산하는 것도 가능합니다.iptables그리고점수에서 해당 표시를 선택기로 사용 ip rule하지만 특히 소스 IP가 명시되어 있고 소스 IP가 시스템에서 선택되도록 남겨져 있는 연결을 혼합하는 경우, 특히 UDP의 경우 모든 경우에 올바르게 작동하도록 하는 것이 더 복잡합니다. 그러면 NAT를 어색하게 사용하고 느슨하게 해야 할 수도 있습니다.rp_filter.

답변2

인터페이스를 활성화했는지 확인하십시오

ip link set dev eth0 up
ip link set dev wlan0 up

관련 정보