openwrt에서는 구성 전달을 활성화했습니다 lan
. 내 LAN은 일부 컴퓨터가 다른 네트워크 IP(예: 192.168.1.15)를 ping할 때 tcpdump가 wan에서 일부 로컬 패킷을 가져오며 이로 인해 wan이 종료됩니다. (내 WAN은 3G 모뎀입니다).wan
masq
192.168.100.0/24
openwrt 방화벽 구성:
config defaults
option syn_flood '1'
option input 'DROP'
option output 'DROP'
option forward 'DROP'
config zone
option name 'lan'
list network 'lan'
option input 'ACCEPT'
option forward 'DROP'
option output 'ACCEPT'
config zone
option name 'cellular'
list network 'cellular'
option input 'DROP'
option forward 'DROP'
option output 'ACCEPT'
option masq '1'
option mtu_fix '1'
config forwarding
option src 'lan'
option dest 'cellular'
컴퓨터가 LAN에서 실행 중인 경우:
ping -I 192.168.1.15 114.114.114.114
ppp에서 일부 유효하지 않은 패킷을 캡처할 수 있습니다.
tcpdump -i 3g-cellular -s 0 -w a.pcap
iptables -t nat -L -v
:
Chain POSTROUTING (policy ACCEPT 119 packets, 7439 bytes)
pkts bytes target prot opt in out source destination
337 24011 zone_wan_postrouting all -- any 3g-cellular anywhere anywhere /* !fw3 */
Chain zone_wan_postrouting
pkts bytes target prot opt in out source destination
337 24011 MASQUERADE all -- any any anywhere anywhere /* !fw3 */
답변1
즉, openwrt 방화벽은 자체 LAN에서 들어오는 NAT 패킷만 사용하는 것 같습니다. 따라서 iptables
규칙에는 소스에 대한 추가 제한이 있을 수 있습니다.
iptables
현재 방화벽 구성(등)에서 생성된 모든 규칙을 확인하여 iptables -S
이를 확인할 수 있습니다.
해결 방법으로 iptables
NAT 규칙을 소스 필터를 사용하지 않는 변형으로 직접 수정할 수 있습니다.
iptables
원하는 규칙을 생성하도록 openwrt 방화벽 구성을 변경하는 방법을 모르겠습니다 . 아마도 OpenWRT 커뮤니티가 알게 될 것입니다.
편집하다
zone_wan_postrouting
모든 패킷이 결국 도착하지 않는 기존 OpenWRT 방화벽 구성의 상황 예:
# iptables -S -t nat
...
-A POSTROUTING -j delegate_postrouting
-A delegate_postrouting -m comment --comment "user chain for postrouting" -j postrouting_rule
-A delegate_postrouting -o br-wan -j zone_wan_postrouting
-A delegate_postrouting -o br-client -j zone_client_postrouting
-A delegate_postrouting -o local-node -j zone_local_node_postrouting
...
-A zone_wan_postrouting -m comment --comment "user chain for postrouting" -j postrouting_wan_rule
-A zone_wan_postrouting -j MASQUERADE
...
보시다시피, 체인은 패킷에 해당 패킷이 있는지 확인하는 나가는 인터페이스 로 POSTROUTING
점프( -j
) 하고 , 이 경우 무조건 패킷을 위조하는 곳으로 점프합니다. 다른 나가는 인터페이스( , )는 다른 체인으로 전달됩니다.delegate_postrouting
br-wan
zone_wan_postrouting
br-client
local-node
그래서 조건은아웃바운드 인터페이스br-wan
. 특정 소스 또는 대상 범위와 같은 다른 조건을 쉽게 추가할 수 있습니다.
-A delegate_postrouting -o br-wan -s 192.168.100.0/24 -j zone_wan_postrouting
또는 훨씬 더 복잡한 패킷 태그, 프로토콜, 포트 및 기타 여러 가지가 있습니다.
그래서 실제로는 없어요보고 있다우리는 귀하의 모든 iptables 규칙을 알 수 없습니다. 어쩌면 모든 패킷이 이런 식으로 가고 문제는 다른 곳에 있다는 것이 사실일 수도 있습니다. 에 나타나지 않는 추가 조건이 있을 수도 있습니다 iptables -L
. 아마.