![2개의 WAN에서 동일한 LAN으로 라우팅](https://linux55.com/image/126172/2%EA%B0%9C%EC%9D%98%20WAN%EC%97%90%EC%84%9C%20%EB%8F%99%EC%9D%BC%ED%95%9C%20LAN%EC%9C%BC%EB%A1%9C%20%EB%9D%BC%EC%9A%B0%ED%8C%85.png)
저는 Linux 기반 라우터 장치(Zeroshell이라는 이름)를 사용하고 있지만 이는 일반적인 Linux 라우팅 관련 문제여야 합니다.
라우터 컴퓨터에는 각각 ETH0부터 ETH3까지 이름이 지정된 4개의 네트워크 카드가 있습니다.
- ETH0은 실제 LAN(서브넷 192.168.241.0/24) IP 192.168.241.254에 있습니다.
- ETH1은 WAN 연결 라우터(서브넷 192.168.1.0/24) IP 192.168.1.1, GW 192.168.1.254에 있습니다.
- ETH2는 다른 WAN 연결 라우터(서브넷 192.168.2.0/24) IP 192.168.2.1, GW 192.168.2.254에 있습니다.
- ETH3은 게스트 전용 LAN(서브넷 192.168.230.0/24) IP 192.168.230.254에 있습니다.
라우터의 기본 게이트웨이는 192.168.2.254로 설정되어 있으므로 나가는 모든 트래픽은 두 번째 WAN 연결(파이버)을 사용하고 NAT는 ETH1과 ETH2 모두에서 활성화됩니다.
첫 번째 WAN 라우터에서는 192.168.1.1이 DMZ로 설정됩니다. 두 번째 WAN 라우터에서는 192.168.2.1이 DMZ로 설정됩니다.
ETH1 및 ETH2의 포트 80에서 ETH0 서브넷에 있는 컴퓨터로의 일부 포트 전달을 설정했습니다.
브라우저를 사용하여 두 번째 WAN의 공용 IP에 연결하면 웹 사이트가 내부 컴퓨터에 호스팅됩니다.
브라우저를 사용하여 첫 번째 WAN의 공용 IP에 연결하면 연결이 계속 중단됩니다.
나는 이것이 첫 번째 WAN 라우터에서 발생하더라도 모든 트래픽이 두 번째 WAN 라우터로 전달되도록 두 번째 WAN 라우터의 기본 게이트웨이를 설정하는 것과 관련이 있다고 확신합니다.
그래서 내 질문은: 두 WAN에서 들어오는 연결을 처리하고 이를 관련 LAN 컴퓨터로 전달하고 응답을 올바른 WAN으로 라우팅할 수 있도록 라우터의 라우팅 테이블을 어떻게 구성해야 합니까?
편집하다:
웹 서버에서 라우팅 테이블을 추가합니다.
root@webserver:/# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:15:5d:f1:03:10 brd ff:ff:ff:ff:ff:ff
inet 192.168.241.23/24 brd 192.168.241.255 scope global eth0
valid_lft forever preferred_lft forever
root@webserver:/# ip route show
default via 192.168.241.254 dev eth0
10.8.0.0/24 via 192.168.241.21 dev eth0
192.168.240.0/24 via 192.168.241.21 dev eth0
192.168.241.0/24 dev eth0 proto kernel scope link src 192.168.241.23
라우터에서 라우팅 테이블을 추가합니다.
root@rtr ~> ip addr show
1: lo: <LOOPBACK,UP,10000> mtu 65536 qdisc noqueue
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: sit0@NONE: <NOARP> mtu 1480 qdisc noop
link/sit 0.0.0.0 brd 0.0.0.0
3: ETH00: <BROADCAST,MULTICAST,UP,10000> mtu 1500 qdisc mq qlen 1000
link/ether 00:15:5d:f1:05:08 brd ff:ff:ff:ff:ff:ff
inet 192.168.230.254/24 brd 192.168.230.255 scope global ETH00:00
valid_lft forever preferred_lft forever
inet6 fe80::215:5dff:fef1:508/64 scope link
valid_lft forever preferred_lft forever
4: ETH01: <BROADCAST,MULTICAST,UP,10000> mtu 1500 qdisc mq qlen 1000
link/ether 00:15:5d:f1:05:09 brd ff:ff:ff:ff:ff:ff
inet 192.168.2.1/24 brd 192.168.2.255 scope global ETH01:00
valid_lft forever preferred_lft forever
inet6 2a01:e35:2e74:9560:215:5dff:fef1:509/64 scope global dynamic
valid_lft 86156sec preferred_lft 86156sec
inet6 fe80::215:5dff:fef1:509/64 scope link
valid_lft forever preferred_lft forever
5: ETH02: <BROADCAST,MULTICAST,UP,10000> mtu 1500 qdisc mq qlen 1000
link/ether 00:15:5d:f1:05:0b brd ff:ff:ff:ff:ff:ff
inet 192.168.1.1/24 brd 192.168.1.255 scope global ETH02:00
valid_lft forever preferred_lft forever
inet6 fe80::215:5dff:fef1:50b/64 scope link
valid_lft forever preferred_lft forever
6: ETH03: <BROADCAST,MULTICAST,UP,10000> mtu 1500 qdisc mq qlen 1000
link/ether 00:15:5d:f1:05:0c brd ff:ff:ff:ff:ff:ff
inet 192.168.241.254/24 brd 192.168.241.255 scope global ETH03:00
valid_lft forever preferred_lft forever
inet6 fe80::215:5dff:fef1:50c/64 scope link
valid_lft forever preferred_lft forever
7: dummy0: <BROADCAST,NOARP> mtu 1500 qdisc noqueue
link/ether 9e:3d:6a:0e:65:39 brd ff:ff:ff:ff:ff:ff
inet 192.168.141.142/24 brd 192.168.141.255 scope global dummy0
valid_lft forever preferred_lft forever
8: dummy1: <BROADCAST,NOARP,UP,10000> mtu 1500 qdisc noqueue
link/ether ee:6e:6f:33:32:34 brd ff:ff:ff:ff:ff:ff
inet 192.168.142.142/32 brd 192.168.142.255 scope global dummy1
valid_lft forever preferred_lft forever
inet6 fe80::ec6e:6fff:fe33:3234/64 scope link
valid_lft forever preferred_lft forever
9: DEFAULTBR: <BROADCAST,MULTICAST> mtu 1500 qdisc noop
link/ether 0a:61:ef:f2:09:80 brd ff:ff:ff:ff:ff:ff
10: VPN99: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 10 0
link/ether 1a:e8:0e:ee:78:aa brd ff:ff:ff:ff:ff:ff
inet 192.168.250.254/24 brd 192.168.250.255 scope global VPN99:00
valid_lft forever preferred_lft forever
11: bond0: <BROADCAST,MULTICAST,MASTER> mtu 1500 qdisc noop
link/ether 8e:65:6c:3d:76:e5 brd ff:ff:ff:ff:ff:ff
12: bond1: <BROADCAST,MULTICAST,MASTER> mtu 1500 qdisc noop
link/ether 1e:34:34:54:8d:48 brd ff:ff:ff:ff:ff:ff
13: bond2: <BROADCAST,MULTICAST,MASTER> mtu 1500 qdisc noop
link/ether 5a:bc:4c:86:83:dc brd ff:ff:ff:ff:ff:ff
14: bond3: <BROADCAST,MULTICAST,MASTER> mtu 1500 qdisc noop
link/ether 6e:81:53:3e:0a:ff brd ff:ff:ff:ff:ff:ff
15: bond4: <BROADCAST,MULTICAST,MASTER> mtu 1500 qdisc noop
link/ether 6a:35:c8:45:d1:ff brd ff:ff:ff:ff:ff:ff
16: bond5: <BROADCAST,MULTICAST,MASTER> mtu 1500 qdisc noop
link/ether ca:5d:10:21:02:30 brd ff:ff:ff:ff:ff:ff
17: bond6: <BROADCAST,MULTICAST,MASTER> mtu 1500 qdisc noop
link/ether 82:60:85:97:d4:90 brd ff:ff:ff:ff:ff:ff
18: bond7: <BROADCAST,MULTICAST,MASTER> mtu 1500 qdisc noop
link/ether b6:fc:c9:a5:06:73 brd ff:ff:ff:ff:ff:ff
19: bond8: <BROADCAST,MULTICAST,MASTER> mtu 1500 qdisc noop
link/ether ce:75:5d:e5:7d:69 brd ff:ff:ff:ff:ff:ff
20: bond9: <BROADCAST,MULTICAST,MASTER> mtu 1500 qdisc noop
link/ether 2e:ef:1e:89:26:1b brd ff:ff:ff:ff:ff:ff
root@rtr ~> ip route show
default via 192.168.1.254 dev ETH02
192.168.1.0/24 dev ETH02 proto kernel scope link src 192.168.1.1
192.168.2.0/24 dev ETH01 proto kernel scope link src 192.168.2.1
192.168.230.0/24 dev ETH00 proto kernel scope link src 192.168.230.254
192.168.240.0/24 via 192.168.241.21 dev ETH03
192.168.241.0/24 dev ETH03 proto kernel scope link src 192.168.241.254
192.168.250.0/24 dev VPN99 proto kernel scope link src 192.168.250.254
답변1
이 이중 홈 설정의 문제점은 ETH0 네트워크의 웹 서버에서 반환되는 패킷이 해당 인터페이스를 통해 들어오는 연결에만 적용되는 기본 게이트웨이를 따른다는 것입니다. 나는 이것을 직접 겪었습니다.
내가 사용한 솔루션은 ETH0 네트워크(192.168.241.24로 가정)의 웹 서버에 추가 IP 주소를 추가하고 이를 두 번째 WAN 인터페이스를 통해 들어오는 연결의 DNAT 대상으로 사용하는 것이었습니다. 그런 다음 두 번째 WAN 인터페이스를 통해 두 번째 IP 주소를 라우팅하는 라우팅 규칙을 추가합니다.
Linux 정책 기반 라우팅에 대해 몇 가지 사항을 알아야 합니다. 하다 ip rule show
:
0: from all lookup local
32766: from all lookup main
32767: from all lookup default
이렇게 하면 ip route show
기본적으로 "기본" 테이블이 표시됩니다. table $name
예를 들어 다음을 추가하여 다른 테이블 중 하나를 표시할 수 있습니다 .
$ ip route show table local
broadcast 127.0.0.0 dev lo proto kernel scope link src 127.0.0.1
local 127.0.0.0/8 dev lo proto kernel scope host src 127.0.0.1
local 127.0.0.1 dev lo proto kernel scope host src 127.0.0.1
broadcast 127.255.255.255 dev lo proto kernel scope link src 127.0.0.1
broadcast 192.168.0.0 dev eth0 proto kernel scope link src 192.168.1.27
local 192.168.1.27 dev eth0 proto kernel scope host src 192.168.1.27
broadcast 192.168.1.255 dev eth0 proto kernel scope link src 192.168.1.27
자신만의 테이블을 추가하고 /etc/iproute2/rt_tables
두 개의 행을 편집하고 추가할 수 있습니다.
11 WAN1
12 WAN2
이제 ETH01 및 ETH02의 기본 경로를 해당 테이블에 추가할 수 있습니다.
# ip route add default via 192.168.2.254 table WAN1
# ip route add default via 192.168.1.254 table WAN2
(처음에는 ETH01의 게이트웨이가 192.168.1.254이고 ETH02의 게이트웨이가 192.168.2.254라고 설명했지만 출력 ip route show
이 일관되지 않았기 때문에 ETH1/ETH01 차이를 제외하고는 후자를 선택했습니다.)
이제 WAN1 테이블을 사용하여 두 번째 웹 서버 IP 주소의 트래픽을 처리하는 규칙을 추가해야 합니다.
# ip rule add from 192.168.241.24 lookup WAN1 prio 1000
이제 트래픽이 ETH01에서 들어와 DNAT를 통해 웹 서버의 두 번째 IP 주소로 전송되면 웹 서버는 해당 주소에서 패킷을 반환하고 규칙은 해당 주소와 일치하여 ETH01을 통해 반환 트래픽을 보냅니다.
이 경우 실제로 WAN2 테이블은 필요하지 않지만 라우터 시스템 자체가 두 WAN 인터페이스 모두에서 액세스해야 하는 경우 또는 어떤 목적으로 사용할 WAN 인터페이스를 선택할 수 있는지를 원하는 경우 유용할 수 있습니다. .