iptables를 사용하여 한 컴퓨터에서 다른 컴퓨터로 네트워크 트래픽 전달 B에서 다음 iptable 규칙을

같은 LAN에 두 대의 컴퓨터가 있습니다

Comp A: 192.1681.151.15
Comp B: 192.1681.151.19

설정은 다음과 같습니다

Internet <---->  Computer B
      ^-------->  Computer A

두 컴퓨터에는 하나의 네트워크 카드가 있습니다.

Wireshark를 열면 comp A에서 검색된 모든 트래픽에 대해 Wireshark가 comp A 및 대상 주소의 트래픽을 연결중인 서버의 트래픽으로 캡처하고 싶습니다.

iptables 및 기타 관련 질문을 이해하려고 시도했지만 어떻게 든 여전히 잘못 구성했습니다.

comp B에서 다음 iptable 규칙을 사용합니다.

   iptables -t nat -A PREROUTING -p tcp --dport 443 -j DNAT --to-destination 192.168.151.19:443
   iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.151.19:80
   iptables -t nat -A POSTROUTING -j MASQUERADE

그러나 comp B에서 트래픽을 탐색 할 때 wireshark (comp A에서 실행)에서 트래픽이 표시되지 않습니다. 누군가 이것을 올바르게 구성하는 방법을 안내해 줄 수 있습니까?



답변

이들은 실제로 두 가지 질문이며 관련이 있는지 확실하지 않습니다.

1) 컴퓨터가 WLAN이 아닌 스위치를 통해 이더넷 LAN으로 연결된 경우 LAN의 모든 트래픽은 원칙적으로 연결된 모든 장치에서 볼 수 있습니다. 가장하거나 전달하거나 iptable 규칙을 사용할 필요가 없습니다. 따라서 컴퓨터 B와 같은 컴퓨터에서 Wireshark를 실행하면 컴퓨터 A에서 라우터로의 트래픽이 표시됩니다.

그래도 문제가 해결되지 않으면 컴퓨터 A에서 컴퓨터 B를 핑 (Ping)하십시오. 그런 다음 컴퓨터 A에서 라우터를 핑 (Ping)하십시오. 첫 번째 핑에서 패킷이 보이지 않으면 Wireshark 설정이있는 것이 제대로 작동하지 않는 것입니다. 첫 번째 핑의 패킷 만보고 두 번째 핑의 패킷이 아닌 경우 인터페이스는 어떤 이유로 해당 컴퓨터에 적합하지 않은 패킷을 삭제하거나 패킷을 필터링하는 경우 컴퓨터 B의 iptables 등을 확인합니다.

편집 : 발생할 수있는 일은 라우터가 스위치로 작동하지 않는 것입니다. 비트를 테스트 한 결과 실제로 4 개의 LAN 포트가 모두 고유 한 장치로 표시되고 Linux 커널 브리지를 사용하여 브리지 (WLAN 포함)되는 하나의 라우터가있는 것으로 나타났습니다. 이러한 종류의 브리지는 본 MAC 주소를 추적하고 대상 MAC 주소를 본 포트로만 전달합니다. 이 경우 두 컴퓨터의 패킷을 다른 컴퓨터에서 볼 수 없습니다.

해결책 : (a) 다른 이더넷 스위치를 찾아서 모든 것을 연결하거나 (b) 게이트웨이 방법을 사용하십시오.

2) 컴퓨터 B를 컴퓨터 A의 게이트웨이로 사용하려면 (이더넷 LAN의 트래픽을 감시 할 필요는 없지만 WLAN과 같이 필요할 수 있음) 컴퓨터 B를 게이트웨이로 사용하도록 컴퓨터 A를 구성해야합니다. . 설정의 “인터넷”은 DHCP 서버 역할을하고 컴퓨터 A와 컴퓨터 B에 IP 주소를 할당하고 라우터를 게이트웨이로 사용하도록 지시하는 홈 라우터 일 가능성이 큽니다. 따라서 컴퓨터 A에서 route또는 ip route을 사용하여 올바른 경로를 설정하십시오. 다른 경로가 없는지 확인하십시오.

다음 스크립트는 전달을 설정하는 데 효과적입니다 (아마 최적은 아니지만).

#!/bin/bash

# forward traffic on the same $IF for one particular $ADDR, acting as gateway

modprobe nf_conntrack
modprobe nf_conntrack_ipv4
modprobe nf_nat
modprobe iptable_nat

IF="eth0"
ADDR="192.168.178.25"

echo "1" > /proc/sys/net/ipv4/ip_forward
echo "1" > /proc/sys/net/ipv4/ip_dynaddr

iptables -P INPUT ACCEPT
iptables -F INPUT
iptables -P OUTPUT ACCEPT
iptables -F OUTPUT
iptables -P FORWARD DROP
iptables -F FORWARD
iptables -t nat -F
iptables -A FORWARD -i $IF -o $IF -d $ADDR -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i $IF -o $IF -s $ADDR -j ACCEPT
iptables -t nat -A POSTROUTING -s $ADDR -j MASQUERADE