- 论坛徽章:
- 12
|
本帖最后由 phanx 于 2014-07-11 23:31 编辑
回复 1# Gallop_hu
Gallop_hu 发表于 2014-07-11 21:41 ![]()
1、sysctl -w net.ipv4.ip_forward=1 //开启转发
2 iptables -I FORWARD -p tcp -s 192.168.1.10 -j ACCEPT //允许转发从电脑A过来的数据
3 iptables -I FORWARD -p tcp -s 192.168.1.12 -j ACCEPT //允许转发从电脑C过来的数据
4 iptables -t nat PREROUTING -p tcp -s 192.168.1.10 -j DNAT --to 192.168.1.12 //将电脑A发送过来的数据转发到电脑C
5 iptables -t nat PREROUTING -p tcp -s 192.168.1.12 -j DNAT --to 192.168.1.10 //将电脑C发送过来的数据转发到电脑A
6 service iptables save //保存配置
7 service iptables restart //重启服务
你的做法在于不应该做第二条PREROUTING的动作,而应该做POSTROUTING,把A发往C的数据改为B发往C。 这样C回包的时候就会回给B。
然后,B的iptables就知道做NAT回包处理了。 B会将C发回的数据包翻译成B发往A的数据包。
FORWARD里面,针对到C的数据包允许三个状态,到A的数据包就只允许两个状态。
iptables -A INPUT -m state --state NEW -m tcp -p tcp -s 192.168.1.10 -d 192.168.1.11 --dport 8000 -j ACCEPT
iptables -t nat -A PREROUTING -p tcp -s 192.168.1.10 -d 192.168.1.12 --dport 8000 -j DNAT --to-destination 192.168.1.12:8000
iptables -t nat -A POSTROUTING -p tcp -s 192.168.1.10 -d 192.168.1.12 --dport 8000 -j SNAT --to-source 192.168.1.11
iptables -A FORWARD -p tcp -d 192.168.1.12 --dport 8000 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -p tcp -d 192.168.1.10 --sport 8000 -m state --state ESTABLISHED,RELATED -j ACCEPT
呵呵,巧了,正好Linux版面也有这么个问题,你们是一个人呢,还是凑巧都遇到这个问题?
http://bbs.chinaunix.net/thread-4145552-1-1.html
|
|