이것은 Debian 6.0을 사용한 설정입니다. 6. 8개의 3G 모뎀을 사용하여 프록시 서버 및 로드 밸런서 역할을 합니다.
ppp가 전화 접속에 연결할 때마다 기본 게이트웨이를 차지하는데 이는 문제가 되지 않지만 문제를 일으키기도 합니다. 이것이 괜찮은 이유는 우분투에서는 기본적으로 이 작업을 수행하지 않는다는 것을 알았기 때문입니다. 기본적으로 ethX 게이트웨이는 변경되지 않은 상태로 유지됩니다. ppp 옵션 파일에 추가할 수도 있었지만 replacedefaultroute
Ubuntu의 iptables 문제로 인해 대신 Debian을 사용하게 되었습니다.
이제 LAN의 다른 호스트에는 ping을 보낼 수 없지만 다른 호스트에서는 나에게 ping을 보낼 수 있습니다. 또한 외부와의 연결이 끊어졌습니다. 액세스할 수 있는 유일한 방법은 LAN 내부의 다른 컴퓨터를 통해서였습니다. 그리고 LAN의 모든 호스트는 프록시를 사용할 수 있습니다.
나는 다음과 같은 파일을 추가하면e1그리고 복사
192.168.2.0/24 dev eth0 proto kernel scope link src 192.168.2.126
default via 192.168.2.3 dev eth0
기본 테이블에서 테이블 e1을 입력하고 다음을 실행합니다.
ip rule add table e1
작동하지만 이제 모든 연결이 eth0 인터페이스를 통해 흐르기 때문에 내가 원하는 것은 아닙니다.
외부에서 연결을 복원하고 로컬 시스템과 통신하려면 어떻게 해야 합니까? 그러나 LAN의 모든 트래픽은 여전히 ppp 링크를 거쳐야 합니다.
root@proxy:~# iptables -L OUTPUT -t mangle -v
Chain OUTPUT (policy ACCEPT 433K packets, 217M bytes)
pkts bytes target prot opt in out source destination
433K 217M CONNMARK all -- any any anywhere anywhere CONNMARK restore
929 61011 MARK all -- any any anywhere anywhere state NEW statistic mode nth every 8 MARK set 0x1
929 61721 MARK all -- any any anywhere anywhere state NEW statistic mode nth every 8 packet 1 MARK set 0x2
929 61461 MARK all -- any any anywhere anywhere state NEW statistic mode nth every 8 packet 2 MARK set 0x3
929 61438 MARK all -- any any anywhere anywhere state NEW statistic mode nth every 8 packet 3 MARK set 0x4
929 61530 MARK all -- any any anywhere anywhere state NEW statistic mode nth every 8 packet 4 MARK set 0x5
929 61022 MARK all -- any any anywhere anywhere state NEW statistic mode nth every 8 packet 5 MARK set 0x6
929 61738 MARK all -- any any anywhere anywhere state NEW statistic mode nth every 8 packet 6 MARK set 0x7
928 61224 MARK all -- any any anywhere anywhere state NEW statistic mode nth every 8 packet 7 MARK set 0x8
433K 217M CONNMARK all -- any any anywhere anywhere CONNMARK save
root@proxy:~# iptables -L POSTROUTING -t nat -v
Chain POSTROUTING (policy ACCEPT 285 packets, 18881 bytes)
pkts bytes target prot opt in out source destination
743 49005 MASQUERADE all -- any ppp0 anywhere anywhere
705 47291 MASQUERADE all -- any ppp1 anywhere anywhere
679 45581 MASQUERADE all -- any ppp2 anywhere anywhere
679 45598 MASQUERADE all -- any ppp3 anywhere anywhere
670 45177 MASQUERADE all -- any ppp4 anywhere anywhere
638 42447 MASQUERADE all -- any ppp5 anywhere anywhere
724 48671 MASQUERADE all -- any ppp6 anywhere anywhere
679 45182 MASQUERADE all -- any ppp7 anywhere anywhere
root@proxy:~#
root@proxy:~# ip rule
0: from all lookup local
32758: from all fwmark 0x8 lookup d8
32759: from all fwmark 0x7 lookup d7
32760: from all fwmark 0x6 lookup d6
32761: from all fwmark 0x5 lookup d5
32762: from all fwmark 0x4 lookup d4
32763: from all fwmark 0x3 lookup d3
32764: from all fwmark 0x2 lookup d2
32765: from all fwmark 0x1 lookup d1
32766: from all lookup main
32767: from all lookup default
root@proxy:~# ip ro sh t d1
default via 10.64.64.64 dev ppp0
root@proxy:~# ip ro sh t d2
default via 10.64.64.65 dev ppp1
root@proxy:~# ip ro sh t d3
default via 10.64.64.66 dev ppp2
root@proxy:~# ip ro sh t d4
default via 10.64.64.67 dev ppp3
root@proxy:~# ip ro sh t d5
default via 10.64.64.68 dev ppp4
root@proxy:~# ip ro sh t d6
default via 10.64.64.69 dev ppp5
root@proxy:~# ip ro sh t d7
default via 10.64.64.70 dev ppp6
root@proxy:~# ip ro sh t d8
default via 10.64.64.71 dev ppp7
root@proxy:~# ip ro
10.64.64.67 dev ppp3 proto kernel scope link src 10.90.33.221
10.64.64.66 dev ppp2 proto kernel scope link src 10.18.11.90
10.64.64.65 dev ppp1 proto kernel scope link src 10.90.14.235
10.64.64.64 dev ppp0 proto kernel scope link src 10.18.27.226
10.64.64.71 dev ppp7 proto kernel scope link src 172.22.201.81
10.64.64.70 dev ppp6 proto kernel scope link src 10.80.131.6
10.64.64.69 dev ppp5 proto kernel scope link src 172.20.17.183
10.64.64.68 dev ppp4 proto kernel scope link src 10.80.61.34
192.168.2.0/24 dev eth0 proto kernel scope link src 192.168.2.126
default via 192.168.2.3 dev eth0
root@proxy:~#
당신이 나에게 몇 가지 아이디어를 줄 수 있다면 매우 감사하겠습니다.
.
답변1
- 빌어먹을 SSH 포트를 라우터에 전달하면 외부에서의 액세스는 괜찮습니다.
iptables에서 이 명령을 실행한 후에만 192.168.2.0/24 네트워크의 다른 컴퓨터와 통신할 수 있습니다. 이 경우에는 .253(로컬 DNS)만 나와 대화하기를 원합니다(.126).
iptables -A OUTPUT -t mangle -s 192.168.2.126 -d 192.168.2.253 -j MARK --set-mark 16
iptables 목록에는 기본적으로 모든 새로운 연결을 표시하고 라우팅 결정을 내린 다음 POSTROUTING 체인을 통과해야 한다는 몇 가지 규칙이 있습니다. 이제 특정 기준(태그 표시 16)으로 패킷을 표시하므로 IP 규칙은 fwmark와 일치하지 않으므로 IP 규칙의 기본 기본 테이블에서 유일한 경로를 찾을 수 있습니다.
192.168.2.0/24 dev eth0 proto kernel scope link src 192.168.2.126 metric 1
답변2
OUTPUT에서는 대상 주소가 LAN 내에 있더라도 각각의 새 패킷을 표시합니다.
ppp 라우팅 테이블에는 기본 항목이 하나만 있습니다. 이는 이 테이블 중 하나에 들어가는 모든 패킷이 항상 ppp*의 게이트웨이를 통해 라우팅된다는 의미입니다. 패킷의 대상 주소가 LAN에 있더라도 마찬가지입니다. 이는 규칙이 우선 순위가 높아지는 순서대로 평가되고 d[0-8] 테이블이 이전에 시도되기 때문입니다 main
.
그래서 당신의 LAN에 대한 핑은 당신의 ppp 장치로 라우팅되고 NAT됩니다...그래서 그것이 작동한다면 그것은 선택된 ppp 게이트웨이가 라우팅 테이블 호스트에 동일한 IP 주소를 가진 또 다른 게이트웨이를 가지고 있기 때문입니다.
LAN으로 이동해야 하는 트래픽이 LAN으로 이동하도록 d[0-8] 테이블 이전에 시도되는 별도의 테이블에 각 LAN 규칙을 넣을 것입니다.