NAT를 구성하고 Linux 시스템에 연결된 두 게이트웨이 간에 인터넷 트래픽을 수동으로 분할해야 했습니다.
각 게이트웨이에 특정 IP 주소가 있으면 문제가 없습니다. 다음을 통해 이 작업을 수행할 수 있습니다 iproute2
.
ip route add default via 192.168.1.1 dev eth1
ip route add 2.3.4.5 via 192.168.0.1 dev eth0
ip route add 8.9.4.5 via 192.168.0.1 dev eth0
하지만 내 문제는 너무 간단합니다! 게이트웨이 주소와 네트워크 ID를 변경할 수 있는 권한이 없습니다. 커널 버전 3.2.0 이상이 설치된 Linux 시스템에서 동일한 주소를 가진 두 개의 인터넷 게이트웨이를 사용해야 합니다.
+-----------+
| Gateway A |
+-----------------------+ |192.168.0.1|
| eth0+---->+-----------+
+--------------+eth2 Linux Box |
| | eth1+---->+-----------+
| +-----------------------+ | Gateway A |
| |192.168.0.1|
| +-----------+
+--------+-----------+
| Private Network |--------> Workstation A
| |
| 10.0.0.0/24 |--------> Workstation B
+--------------------+
Linux의 놀라운 네트워킹 도구(또는 기타 도구)를 사용하여 이 mangling
문제를 어떻게 해결할 수 있습니까 snat
?
답변1
마침내 나는 그것을 얻었다. 몇 번 시도한 끝에 이 경우에는 Linux 커널에 아무런 문제가 없다는 것을 알았습니다. 그것이 작동하는 방식은 매력적입니다! 이 iproute2 규칙 및 라우팅을 통해:
eth0: 192.168.0.231/24 --> 게이트웨이 A: dwl2100ap
eth1: 192.168.0.230/24 --> 게이트웨이 B: dwlg132
구성 인터페이스:
ip addr add 192.168.0.231/24 dev eth0
ip addr add 192.168.0.230/24 dev eth1
두 개의 라우팅 테이블을 추가합니다.
echo "1 dwl2100ap" >> /etc/iproute2/rt_tables
echo "2 dwlg132" >> /etc/iproute2/rt_tables
테이블에 경로를 추가합니다.
ip route add 192.168.0.0/24 dev eth0 src 192.168.0.231 table dwl2100ap
ip route add default via 192.168.0.1 dev eth0 table dwl2100ap
ip route add 192.168.0.0/24 dev eth1 src 192.168.0.230 table dwlg132
ip route add default via 192.168.0.1 dev eth1 table dwlg132
다음으로 라우팅 규칙을 설정합니다. 이는 실제로 라우팅에 사용할 라우팅 테이블을 선택합니다. 해당 소스 주소가 이미 있는 경우 지정된 인터페이스에서 라우팅되는지 확인해야 합니다.
ip rule add from 192.168.0.231 table dwl2100ap
ip rule add from 192.168.0.230 table dwlg132
나가는 모든 패킷을 위장합니다.
iptables -tnat -APOSTROUTING -s10.0.0.0/24 -j MASQUERADE
커널이 대역폭을 분할할 수 있도록 다음 경로를 실행할 수 있습니다.
ip route add default scope global nexthop via 192.168.0.1 dev eth0 weight 2 nexthop via 192.168.0.1 dev eth1 weight 1
수동 라우팅:
ip route add default via 192.168.0.1 dev eth0
ip route add 8.8.8.8 via 192.168.0.1 dev eth0
ip route add 8.8.4.4 via 192.168.0.1 dev eth1
편집 1:
또한 iptables를 통해 일부 패킷을 표시할 수 있습니다.
iptables -tmangle -APREROUTING -i eth2 -s 10.0.0.4 -jMARK --set-mark 4
그런 다음 라우팅 정책을 통해 라우팅합니다.
ip rule add fwmark 4 table dwl2100ap
동일한 IP 주소를 가진 두 개의 게이트웨이에서 작동하는지 알고 싶습니다. 커널 3.2.0-53에서.