Debian Jessie의 두 가지 기본 게이트웨이

Debian Jessie의 두 가지 기본 게이트웨이

이것은 중복되었지만 이전에 제공된 솔루션이 나에게 효과가 없었습니다. 모든 것이 아래에 설명되어 있습니다.

인터넷이 연결된 두 개의 네트워크가 있습니다. 둘 다 작동하기를 바랍니다... 요청이 네트워크 #1로 전송되면 네트워크 #2는 게이트웨이를 통해 요청에 응답해야 합니다... 네트워크 #2와 동일합니다. 게이트웨이가 응답해야 합니다. 그것을 통해 요청합니다.

ifconfig

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)

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

부분적으로 작동하는 솔루션을 얻었습니다.

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

예를 들어, 이렇게 하면 Apache(라우터에서 포트 리디렉션 후)가 두 네트워크의 요청에 모두 응답하지만 외부에서만 응답하게 됩니다. 로컬 연결이 통과되거나 192.168.1.200작동 192.168.2.200이 중지됩니다... 내 말은... 더 이상 로컬 네트워크에서 Apache에 연결할 수 없습니다.

누구든지 나를 도와줄 수 있나요?

나도 시도했다이것해결했지만 작동하지 않습니다...공용 IP를 통해 Apache 서버에 연결할 수 없습니다 LINKs2...아마 제가 뭔가 잘못하고 있는 것일까요? 포트 포워딩이 작동하는 것 같습니다 iftop. 그래도 답변을 얻지 못했습니다.

rt_tables

200 LINK1
201 LINK2

route.sh

ip route add 192.168.1.0/24 dev eth0 src 192.168.1.200 table LINK1
ip route add 192.168.2.0/24 dev wlan0 src 192.168.2.200 table LINK2
ip route add default via 192.168.1.1 table LINK1
ip route add default via 192.168.2.1 table LINK2
ip rule add from 192.168.1.1 table LINK1
ip rule add from 192.168.2.1 table LINK2

이후:

sigma@sigma:~/temp $ ip route show table LINK1
default via 192.168.1.1 dev eth0
192.168.1.0/24 dev eth0  scope link  src 192.168.1.200

sigma@sigma:~/temp $ ip route show table LINK2
default via 192.168.2.1 dev wlan0
192.168.2.0/24 dev wlan0  scope link  src 192.168.2.200

sigma@sigma:~/temp $ 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

sigma@sigma:~/temp $ route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         192.168.1.1     0.0.0.0         UG    202    0        0 eth0
default         fiber.home     0.0.0.0         UG    303    0        0 wlan0
192.168.1.0     *               255.255.255.0   U     202    0        0 eth0
192.168.2.0     *               255.255.255.0   U     303    0        0 wlan0

sigma@sigma:~/temp $ ip route show table all
default via 192.168.1.1 dev eth0  table LINK1
192.168.1.0/24 dev eth0  table LINK1  scope link  src 192.168.1.200
default via 192.168.2.1 dev wlan0  table LINK2
192.168.2.0/24 dev wlan0  table LINK2  scope link  src 192.168.2.200
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
broadcast 127.0.0.0 dev lo  table local  proto kernel  scope link  src 127.0.0.1
local 127.0.0.0/8 dev lo  table local  proto kernel  scope host  src 127.0.0.1
local 127.0.0.1 dev lo  table local  proto kernel  scope host  src 127.0.0.1
broadcast 127.255.255.255 dev lo  table local  proto kernel  scope link  src 127.0.0.1
broadcast 192.168.1.0 dev eth0  table local  proto kernel  scope link  src 192.168.1.200
local 192.168.1.200 dev eth0  table local  proto kernel  scope host  src 192.168.1.200
broadcast 192.168.1.255 dev eth0  table local  proto kernel  scope link  src 192.168.1.200
broadcast 192.168.2.0 dev wlan0  table local  proto kernel  scope link  src 192.168.2.200
local 192.168.2.200 dev wlan0  table local  proto kernel  scope host  src 192.168.2.200
broadcast 192.168.2.255 dev wlan0  table local  proto kernel  scope link  src 192.168.2.200
local ::1 dev lo  proto kernel  metric 256
fe80::/64 dev eth0  proto kernel  metric 256
fe80::/64 dev wlan0  proto kernel  metric 256
unreachable default dev lo  table unspec  proto kernel  metric 4294967295  error -101
local ::1 dev lo  table local  proto none  metric 0
local fe80::57ac:b6e:33c1:8bbb dev lo  table local  proto none  metric 0
local fe80::e94f:8405:bbc7:20f5 dev lo  table local  proto none  metric 0
ff00::/8 dev eth0  table local  metric 256
ff00::/8 dev wlan0  table local  metric 256
unreachable default dev lo  table unspec  proto kernel  metric 4294967295  error -101

답변1

질문을 올바르게 이해한다고 가정하면 두 개의 로컬 인터페이스를 통해 두 개의 "인터넷" 연결이 있고 이를 통해 동일한 경로를 통해 응답을 받기를 원합니다.

두 가지 깨끗한 솔루션을 생각할 수 있습니다.

1) Source IP를 기준으로 Policy Routing을 한다. 소스 IP가 eth0의 IP인 경우 하나의 게이트웨이를 사용해야 하고, 그렇지 않으면 다른 게이트웨이를 사용해야 합니다. 이것은 당신이 한 일과 비슷합니다. 내 머리 꼭대기에서 보면:

ip route add default via GW1 table gw1
ip route add default via GW2 table gw2
ip rule from IP1 table gw1
ip rule from IP2 table gw2

2) iptables, 연결 추적 및 CONNMARK 대상을 사용하여 들어오는 패킷을 표시합니다. 이 태그는 나가는 모든 패킷에서 복원되며 정책 라우팅은 이 태그를 기반으로 수행됩니다. 다시 한 번, 내 머리 꼭대기에서:

iptables -A INPUT -i wlan0 -t mangle -j MARK --set-mark 1
iptables -A INPUT -i eth0 -t mangle -j MARK --set-mark 2
iptables -A INPUT -j CONNMARK --save-mark
iptables -A OUTPUT -j CONNMARK --restore-mark
ip route add default via GW1 table gw1
ip route add default via GW2 table gw2
ip rule fwmark 1 table gw1
ip rule fwmark 2 table gw2

위 내용에는 약간의 수정이 필요할 수 있지만 이것이 일반적인 생각입니다.

관련 정보