특정 IP와의 UDP 트래픽을 가짜 인터페이스로 전달하려고 합니다.
iptables -I FORWARD -s [WAN-IP] -p udp -j ifb0
나는 또한 (성공하지 못한 채) 다음을 시도했습니다.
iptables -A OUTPUT -d [WAN-IP] -p udp -j ifb0
트래픽을 리디렉션하고 트래픽에 지연을 적용하려고 합니다.
ip link set dev ifb0 up
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -A FORWARD -p udp -i eth0 -o ifb0 -j ACCEPT
iptables -A FORWARD -p udp -i eth0 -o ifb0 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A POSTROUTING -o ifb0 -j MASQUERADE
tc qdisc add dev ifb0 root netem delay 100ms
인터넷 정보:
ip route
default via 195.***.***.*** dev pppoe-wan proto static
192.168.1.0/24 dev br-lan proto kernel scope link src 192.168.1.1
[195.***.***.***] dev pppoe-wan proto kernel scope link src **.***.***.***
route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 195.***.***.*** 0.0.0.0 UG 0 0 0 pppoe-wan
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 br-lan
195.***.***.*** 0.0.0.0 255.255.255.255 UH 0 0 0 pppoe-wan
ifconfig
br-lan Link encap:Ethernet HWaddr 30:B5:C2:D7:**:**
inet addr:192.168.1.1 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fda5:a926:****::1/60 Scope:Global
inet6 addr: fe80::32b5:c2ff:fed7:****/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:3924668 errors:0 dropped:5 overruns:0 frame:0
TX packets:6856064 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:285489896 (272.2 MiB) TX bytes:9801376990 (9.1 GiB)
eth0 Link encap:Ethernet HWaddr 30:B5:C2:D7:**:**
inet6 addr: fe80::32b5:c2ff:fed7:****/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:6817769 errors:0 dropped:0 overruns:0 frame:0
TX packets:3926298 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1243564002 (1.1 GiB) TX bytes:353441588 (337.0 MiB)
Interrupt:4
eth1 Link encap:Ethernet HWaddr 30:B5:C2:D7:**:**
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:3922867 errors:0 dropped:68 overruns:0 frame:0
TX packets:6805869 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:340296313 (324.5 MiB) TX bytes:1166540824 (1.0 GiB)
Interrupt:5
ifb0 Link encap:Ethernet HWaddr 2E:13:67:**:**:**
inet6 addr: fe80::2c13:67ff:****:9593/64 Scope:Link
UP BROADCAST RUNNING NOARP MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:32
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:292 errors:0 dropped:0 overruns:0 frame:0
TX packets:292 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:21661 (21.1 KiB) TX bytes:21661 (21.1 KiB)
pppoe-wan Link encap:Point-to-Point Protocol
inet addr:**.***.***.*** P-t-P:195.***.***.*** Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1492 Metric:1
RX packets:6801543 errors:0 dropped:0 overruns:0 frame:0
TX packets:3909873 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:3
RX bytes:9682888295 (9.0 GiB) TX bytes:266900462 (254.5 MiB)
아무 일도하지.
답변1
이 질문은 ServerFault에서 이미 답변되었습니다.
적응하다거기에 제시된 해결책귀하의 경우 다음 결과가 생성됩니다(참고: 여기서는 인터페이스에서 인터페이스 eth0
로 전달됩니다 ifb0
).
전달 활성화:
echo 1 > /proc/sys/net/ipv4/ip_forward
방화벽을 통한 트래픽 허용(있는 경우):
iptables -A FORWARD -p udp -i eth0 -o ifb0 -j ACCEPT
설정된 연결에 대한 트래픽을 허용합니다.
iptables -A FORWARD -p udp -i eth0 -o ifb0 -m state --state ESTABLISHED,RELATED -j ACCEPT
인터넷으로 전송된 패킷의 소스 주소를 변경합니다.
iptables -t nat -A POSTROUTING -o ifb0 -j MASQUERADE
답변2
커널에서 전달이 활성화되어 있는지 확인하십시오. 다음과 같이 전달을 활성화할 수 있습니다.
sudo echo 1 > /proc/sys/net/ipv4/ip_forwar
그런 다음 루트 사용자로 다음을 시도하십시오.
iptables -I FORWARD -s [WAN-IP] -p udp -i source_interface -o ifb0 -j ACCEPT
iptables -A FORWARD -d [WAN-IP] -i ifb0 -o source_interface -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A POSTROUTING -o ifb0 -j MASQUERADE
설명: 먼저 소스 인터페이스의 트래픽을 ifb0으로 전달합니다. 반환 트래픽을 소스 인터페이스로 다시 전달합니다. 규칙을 사용하여 source IP
나가는 패킷의 주소를 다시 쓰십시오 POSTROUTING
.
이 포스팅을 참고하셔도 됩니다https://serverfault.com/questions/431593/iptables-forwarding-Between-two-interface