저는 Linux이고 iptables
내 PC에는 2개의 네트워크 인터페이스( eth0
및 eth1
. 나 또한 두 대의 노트북을 가지고 있는데, 하나는 연결되어 eth0
있고 다른 하나는 연결되어 있다 eth1
.
노트북 1 ipconfig: 172.16.221.120 - 255.255.252.0 노트북 2 ipconfig: 192.168.222.250 - 255.255.255.0
laptop1에서 laptop2로 성공적으로 ping하고 싶습니다.
INPUT
만들고 규칙을 만들어야 합니까 OUTPUT
? 아니면 FORWARD
규정이 있나요?
나는 성공하지 않고 이것을 시도했습니다.
iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT
답변1
다음 명령을 사용하여 tcpdump
핑 값을 확인할 수 있습니다.
tcpdump -i eth0 -n icmp
tcpdump -i eth1 -n icmp
또한 단순히 서버에서 ping을 허용하는 것만으로는 충분하지 않습니다. 랩톱은 서버를 통해 다른 랩톱에 연결할 수 있도록 구성해야 합니다(라우팅).
방화벽에 패킷을 응답으로 허용하는 규칙이 있을 수 있습니다. 그렇지 않다면 여전히 필요합니다.
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
두 노트북 모두 다른 노트북에 ping을 보낼 수 있기를 원할 것이므로 이는 어쨌든 의미가 있습니다. 그러나 ping과 pong으로 제한할 수 있습니다.
iptables -A FORWARD -i eth1 -o eth0 -p icmp --icmp-type echo-request -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -p icmp --icmp-type echo-reply -j ACCEPT
마지막 문제는 랩톱 자체입니다. 랩톱 중 적어도 하나에 자체 방화벽이 있는 경우 핑을 차단할 수 있습니다(일반적으로 또는 인터페이스 네트워크 외부의 소스 주소로 인해).
답변2
ACCEPT
기본적으로 기본 정책이 포함된 netfilter 체인이 비어 있으므로 규칙이 필요하지 않습니다 . 이미 규칙을 추가한 경우 핑이 통과되도록 하려면 규칙을 FORWARD
체인에 추가해야 합니다.
또한 서버를 라우터로 설정하고 각 랩톱에 서버가 기본 경로로 있는지 확인해야 합니다(또는 최소한 다른 랩톱의 서브넷에 대한 경로가 있는지).
/proc/sys/net/ipv4/ip_forward
라우팅(IP 전달)을 활성화하려면 로 설정해야 합니다 1
. Ubuntu에는 /etc/sysctl.conf
프로젝트를 자동으로 설정할 수 있는 장소가 있어야 합니다 /proc/sys
.
# Uncomment the next line to enable packet forwarding for IPv4
#net.ipv4.ip_forward=1
이 설정을 변경하는 경우 변경 사항을 커널에 로드해야 합니다.
sudo sysctl -p /etc/sysctl.conf
변경 사항은 다음 시작 시 자동으로 로드되므로 변경 후 이 명령을 수동으로 한 번만 실행하면 됩니다 /etc/sysctl.conf
.