아파치와 두 개의 네트워크 - 하나만 연결을 허용합니다.


0

두 개의 네트워크가 구성된 라즈베리 파이 3가 있습니다 (하나는 이더넷을 통해, 다른 하나는 무선 랜을 통해).

eth0      Link encap:Ethernet  HWaddr b8:27:eb:82:ca:0c
          inet addr:192.168.1.200  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::57ac:b6e:33c1:8bbb/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:797 errors:0 dropped:0 overruns:0 frame:0
          TX packets:797 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:219915 (214.7 KiB)  TX bytes:117516 (114.7 KiB)

wlan0     Link encap:Ethernet  HWaddr b8:27:eb:d7:9f:59
          inet addr:192.168.2.200  Bcast:192.168.2.255  Mask:255.255.255.0
          inet6 addr: fe80::6463:5ba:3b28:6d39/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1532 errors:0 dropped:1215 overruns:0 frame:0
          TX packets:201 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:364160 (355.6 KiB)  TX bytes:29417 (28.7 KiB)

sigma@sigma:~ $ ip route show table main
default via 192.168.1.1 dev eth0  metric 202
default via 192.168.2.1 dev wlan0  metric 303
192.168.1.0/24 dev eth0  proto kernel  scope link  src 192.168.1.200  metric 202
192.168.2.0/24 dev wlan0  proto kernel  scope link  src 192.168.2.200  metric 303

포트 80이 전달되므로 장치는 네트워크 공개 ips에서 사용할 수 있습니다.

하지만 문제는 아파치가 연결이 첫 번째 네트워크에서 오는 경우에만 응답하는 것 같습니다 ... 두 번째 네트워크에서 오류가 발생했습니다 (브라우저에서), 해당 사이트를 사용할 수 없습니다.

처음에는 포트 포워딩 문제 일 수 있다고 생각했지만 iftop 두 네트워크에서 브라우저가 연결을 시도하고 있음을 알 수 있습니다 (두 네트워크를 통해 연결할 때 연결이 끊어짐을 볼 수 있습니다).

내가 뭘 잘못하고 있죠? 한 번에 두 네트워크에서 어떻게 작동하게합니까?

추신. 보시다시피 wlan0에는 삭제 된 패킷이 많이 있습니다 ( dropped:1215 ).


아파치 설정이 이름 기반 가상 호스트 - 대부분의 Apache 설정이 사용하는 - 웹 서버를 명시 적으로 바인드합니다. 192.168.1.1. 설치 프로그램에서 어떤 버전의 Apache를 사용하고 있는지 명확하지 않지만 증상이 그 문제를 지적하고 있습니다. 장치의 쉘에 로그인하여 실행 해보십시오. apachectl -S 또는 httpd -S Apache 서버가 바인드 된 인터페이스 / 호스트 이름을 확인하십시오.
JakeGould

나는 그렇게 생각하지 않는다. SSH가 작동하지 않기 때문에 라우팅 문제가되어야한다. 서버 버전 : Apache/2.4.10 (Raspbian) ... Listen 80 ... <VirtualHost *:80>
Flash Thunder

@ JakeGould : 이름 기반 가상 호스트는 일반적으로 특정 IP 바인딩의 정확한 반대를 의미하는 경향이 있습니다.
grawity

@grawity 내가 아는 한 익명의 호스트는 단지 베어 IP 주소 일 것이고 명시 적으로 다른 것을 설정하지 않는다면 IP 주소는 그것이 가져온 첫 번째 인터페이스에 연결될 것인가?
JakeGould

@ JakeGould : 아파치가 내 지식으로 결코 "첫 번째"IP 주소를 임의로 선택하지 않았다. 수동으로 주소를 지정하면 0.0.0.0 "와일드 카드"에 바인딩됩니다. 그것은 또한 무엇인가? <VirtualHost *:80> 방법.
grawity

답변:


1

기본적으로 리눅스는 순수하게 각 패킷의 경로를 선택한다. 목적지 . 두 인터페이스가 모두 기본 경로를 제공하면 기술적으로 잘못된 네트워크 일지라도 초기 패킷이 다른 인터페이스를 통해 도착하더라도 가장 낮은 메트릭을 가진 라우터가 항상 선택됩니다.

현재이 문제를 해결하려면 추가의 라우팅 테이블 :

ip route add default via 192.168.1.1 dev eth0 table 100
ip route add default via 192.168.2.1 dev wlan0 table 200

ip rule add from all lookup main suppress_prefixlength 0
ip rule add from 192.168.1.0/24 lookup 100
ip rule add from 192.168.2.0/24 lookup 200

(이것은 아마도 완벽하지는 않지만, DHCP를 사용하는 경우 수동으로 수행해야합니다. fwmark를 사용하는 것이 더 효과적 일 수 있습니다.)

다음을 사용하여 테스트 :

ip route get 8.8.8.8
ip route get 8.8.8.8 from 192.168.1.200
ip route get 8.8.8.8 from 192.168.2.200

콘솔에 복사 붙여 넣기 후 SSH에서 연결이 끊어지고 다시 부팅 할 때까지 다시 연결할 수 없습니다 ... eth0에 고정 IP가 설정되어 있습니다 (dhcp.conf 사용). wlan0은 DHCP IP 주소로 고정 IP를 가져옵니다. eth0을 통해 연결되었습니다. .
Flash Thunder

하지만 그것이 작동하는 것 같아요 ... 유적 shh 로컬 연결 그쪽으로 '... 나는 로컬 주소를 통해 SSH에 연결할 수 없습니다,하지만 아파치는 두 공용 주소에서 작동하는 것 ... 당신은 저를 고칠 수 있도록 도와 주시겠습니까 ? 이것은 네트워크에 2 개의 다른 라스베리가있어 더 이상 서로 통신 할 수 없기 때문에 좋지 않습니다.
Flash Thunder

도와주세요? ...
Flash Thunder
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.