
이를 위해 iptables로 Linux 서버를 구성할 수 있습니까?
PC (192.168.1.11) ===> (192.168.1.1) Linux Server (192.168.0.100) ===> Router1 (192.168.0.1)
PC (192.168.1.12) ===> (192.168.1.1) Linux Server (192.168.0.100) ===> Router1 (192.168.0.1)
PC (192.168.1.13) ===> (192.168.1.1) Linux Server (192.168.0.100) ===> Router1 (192.168.0.1)
...
PC (192.168.1.21) ===> (192.168.1.1) Linux Server (192.168.0.100) ===> Router2 (192.168.0.2)
PC (192.168.1.22) ===> (192.168.1.1) Linux Server (192.168.0.100) ===> Router2 (192.168.0.2)
PC (192.168.1.23) ===> (192.168.1.1) Linux Server (192.168.0.100) ===> Router2 (192.168.0.2)
...
PC (192.168.1.31) ===> (192.168.1.1) Linux Server (192.168.0.100) ===> Router3 (192.168.0.3)
PC (192.168.1.32) ===> (192.168.1.1) Linux Server (192.168.0.100) ===> Router3 (192.168.0.3)
PC (192.168.1.33) ===> (192.168.1.1) Linux Server (192.168.0.100) ===> Router3 (192.168.0.3)
...
답변1
iptables라우팅을 위한 도구가 아닙니다. 때때로 패킷을 표시하여 라우팅 구성을 보완하는 데 사용될 수 있지만 여기서는 필요하지 않습니다.
요구되는 것은정책 기반 라우팅: 경로를 선택하기 위해 목적지 주소 이외의 다른 것, 즉 소스 주소를 사용합니다.
다음과 같이 가정하거나 진술합니다.
- Linux 서버가 호출됩니다.섬기는 사람
- PC 9대 모두,섬기는 사람OP의 회로도에 따라 3개의 라우터가 이미 구성되어 있습니다.
- 특히 PC에는 특별한 설정이 필요하지 않습니다. 그들은 단지 가지고 있으면 된다섬기는 사람기본 게이트웨이로.
- OP 회로도의 모든 주소는 /24를 사용합니다.CIDR/넷마스크.
- 섬기는 사람용도:
- eth0주소 192.168.1.1/24
- eth1주소 192.168.0.100/24
- 섬기는 사람기본 게이트웨이가 있을 수도 있고 없을 수도 있지만 그것은 중요하지 않습니다. 정책 라우팅은 전달된 트래픽에 대해 별도의 자체 설정을 사용하므로 기본 라우팅 테이블의 기본 게이트웨이(있는 경우)에 의존하지 않습니다.
아직 완료하지 않은 경우 3개의 라우터에 192.168.1.0/24에 도달하려면 추가 경로가 필요합니다.섬기는 사람게이트웨이로. LAN 192.168.0.0/24에 연결하려면 시스템에도 동일한 작업이 필요합니다. Linux를 실행 중인 경우 이 작업은 3개의 라우터 또는 다음을 갖춘 다른 시스템에서 수행됩니다.
ip route add 192.168.1.0/24 via 192.168.0.100
편집하다: 처럼나중에 물었다, 192.168.0.0/24 LAN에서 다른 시스템을 재구성하는 것이 허용되지 않는 경우,섬기는 사람서버에서 NAT를 사용하여 3개의 라우터를 포함한 해당 시스템에 192.168.1.0/24의 존재를 숨길 수 있습니다. 이는 라우팅 단계 외부에서 수행되므로 아래의 나머지 라우팅 구성과 독립적입니다.
따라서 라우터(또는 다른 시스템)에서 위의 작업을 수행하는 대신 다음을 사용할 수 있습니다.iptables MASQUERADE
목표로 삼다섬기는 사람:
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth1 -j MASQUERADE
지금섬기는 사람, 3개의 추가 라우팅 테이블에 도달하기 위해 3개의 대체 규칙 그룹이 생성됩니다. 즉, 선택한 라우터당 하나씩, 이 라우터를 기본 게이트웨이로 사용합니다. 기본 게이트웨이는 하나만 있을 수 있지만 라우팅 테이블당 하나씩만 있을 수 있습니다.
PC의 IP 주소는 블록 단위로 정렬되지 않으므로 3x3 규칙이 사용됩니다(올바르게 정렬된 IP 블록의 경우 적절한 CIDR/넷마스크에는 3개의 규칙이면 충분합니다).
에 설명되어 있음ip rule(8)
:
어떤 상황에서는 대상 주소뿐만 아니라 다른 패킷 필드(소스 주소, IP 프로토콜, 전송 프로토콜 포트 또는 패킷 페이로드)에 따라 패킷을 다르게 라우팅하려고 합니다. 이 작업을 '정책 라우팅'이라고 합니다.
[...]
각 정책 라우팅 규칙은 선택기와 작업 조건자로 구성됩니다.
이 경우 선택기는 PC의 소스 주소를 선택하고 작업은 추가 라우팅 테이블을 조회하여 일반적인 조회를 재정의하는 것입니다.기본전용 게이트웨이를 선택하는 테이블입니다.
라우팅 규칙(PC의 IP 주소가 적절한 블록으로 정렬된 경우 최대 3개의 규칙까지만 단순화할 수 있음):
ip rule add from 192.168.1.11 lookup 10
ip rule add from 192.168.1.12 lookup 10
ip rule add from 192.168.1.13 lookup 10
ip rule add from 192.168.1.21 lookup 20
ip rule add from 192.168.1.22 lookup 20
ip rule add from 192.168.1.23 lookup 20
ip rule add from 192.168.1.31 lookup 30
ip rule add from 192.168.1.32 lookup 30
ip rule add from 192.168.1.33 lookup 30
에 설명되어 있음ip route(8)
:
라우팅 테이블: Linux-2.x는 1에서 2^32-1 범위의 숫자나 /etc/iproute2/rt_tables 파일의 이름으로 식별되는 여러 라우팅 테이블에 경로를 묶을 수 있습니다. 기본적으로 모든 일반 경로는 기본 경로에 삽입됩니다. 테이블(ID 254)이며 커널은 경로를 계산할 때만 이 테이블을 사용합니다. [...]
임의의 값 10 20 및 30으로 추가 라우팅 테이블을 채웁니다. 각 라우팅 테이블은 해결해야 할 문제에 적합한 라우팅에 대한 하나의 부분 보기를 처리합니다. 여기서는 다른 게이트웨이를 선택하는 방법에 대해 설명합니다.
ip route add default via 192.168.0.1 dev eth1 table 10
ip route add default via 192.168.0.2 dev eth1 table 20
ip route add default via 192.168.0.3 dev eth1 table 30
PC가 192.168.0.0/24의 다른 시스템에 액세스해야 하는 경우 다음 LAN 경로를 추가해야 합니다(라우터를 통한 부분적인 헤어핀을 방지하는 것은 결코 좋은 생각이 아닙니다).
ip route add 192.168.0.0/24 dev eth1 table 10
ip route add 192.168.0.0/24 dev eth1 table 20
ip route add 192.168.0.0/24 dev eth1 table 30
고양이의 결과를 확인하세요섬기는 사람와 함께 ip route get
:
root@server:~# ip route get from 192.168.1.11 iif eth0 to 8.8.8.8
8.8.8.8 from 192.168.1.11 via 192.168.0.1 dev eth1 table 10
cache iif eth0
root@server:~# ip route get from 192.168.1.21 iif eth0 to 8.8.8.8
8.8.8.8 from 192.168.1.21 via 192.168.0.2 dev eth1 table 20
cache iif eth0
root@server:~# ip route get from 192.168.1.31 iif eth0 to 8.8.8.8
8.8.8.8 from 192.168.1.31 via 192.168.0.3 dev eth1 table 30
cache iif eth0
192.168.1.0/24 LAN의 다른 시스템은 다음을 따릅니다.기본정책 기반 라우팅이 없는 라우팅 테이블. 예를 들어섬기는 사람에 기본 경로가 없습니다기본테이블에 두 개의 LAN 경로만 있는 경우 192.168.0.0/24 LAN을 넘어 다른 경로는 라우팅되지 않습니다.
root@server:~# ip route get from 192.168.1.41 iif eth0 to 8.8.8.8
RTNETLINK answers: Network is unreachable
노트
3개의 라우터는 예를 들어 NAT를 수행하고 각각의 다른 공용 IP 주소(아마도 다른 ISP 사용)를 사용하여 저렴한 설정으로 인터넷에 연결하는 인터넷 게이트웨이일 수 있으며, 3개의 다른 공용 IP 주소를 사용하여 인터넷에서 3개의 PC 그룹을 볼 수 있습니다.
위의 설정은 네트워크를 구성하는 도구와 통합되어야 합니다.섬기는 사람. 배포판에 따라 다음과 같은 도구가 많이 있습니다.ifupdown,네트워크매니저,시스템 네트워크,넷플랜그리고 아마도 각각 특정 구성 방법을 가진 다른 많은 것들이 있을 것입니다. 대신 위에 주어진 명령과 함께 스크립트를 사용하는 것도 가능합니다.