先打开IP转发功能:
  1. echo "1">/proc/sys/net/ipv4/ip_forward
  2. echo "net.ipv4.ip_forward = 1">>/etc/sysctl.conf

通过以下命令可以查到返回值为1,表示打开成功

  1. cat /proc/sys/net/ipv4/ip_forward

有两台服务器:

A:172.16.xxx.yyy。这是一个内网地址,外网无法访问。
B:202.201.aaa.bbb。这是一个公网地址,它和xxx.lzu.edu.cn这个域名绑定。
两台服务器上都跑了一个HTTP的服务,他们之间可以互相访问。现在希望访问mmm.lzu.edu.cn时,能自动跳转到172.16.xxx.yyy上,因此可以做IP转发,或叫IP映射。来使所有发到202.201.aaa.bbb的请求包都通过它转发到219.246.xxx.yyy上。而所有应答的数据包,又能从172.16.xxx.yyy通过202.201.aaa.bbb回到请求者的地方。

# iptables -t nat -A PREROUTING -d 202.201.aaa.bbb -j DNAT --to-destination 172.16.xxx.yyy
# iptables -t nat -A POSTROUTING -d 172.16.xxx.yyy -j SNAT --to 202.201.aaa.bbb
另外,查看非默认表的规则需要指定表明:

# iptables -t nat -L

需要删除某条规则:
# iptables -t nat -L --line-number //列出规则的编号
# iptables -t nat -D PREROUTING 1 //删除PREROUTING中的第2条规则

iptables -t nat -D POSTROUTING 1

仅端口转发:

iptables -t nat -A PREROUTING -p tcp --dport 10027 -j DNAT --to-destination 10.36.5.27:10050
iptables -t nat -A POSTROUTING -p tcp -d 10.36.5.27 --dport 10050 -j SNAT --to-source 10.0.120.226

 

iptables 命令大全:

#用于防止GFW的RST拦截。
iptables -A INPUT -p tcp --tcp-flags RST RST -j DROP

 

iptables 转发保留源IP地址

以示例说明:

A主机外网IP为:100.1.1.1

B主机外网IP为:100.1.1.2

他们通过隧道 tunnel 进行连接(注意如果为wireguard,请在client和server端放行0.0.0.0/0,另外注个小技巧,在wg-quick进行启动的时候,会自动写默认路由,如果需要禁用他,你可以在配置文件的Interface进行设置参数Table = off即可)。

A主机tunnel分配的IP为:10.0.0.1

B主机tunnel分配的IP为:10.0.0.2

目的: 使用B主机转发A主机的端口,并且A主机可以接受到源IP,如(1.1.1.1)访问 100.1.1.2:80->10.0.0.1:80 并且10.0.0.1 可以看到源IP 1.1.1.1

我们仅需在B主机配置iptables转发规则如:

iptables -t nat -A PREROUTING -d 172.16.0.212 -j DNAT --to-destination 10.8.0.6

A主机配置静态路由如:

ip ru add from 10.8.0.0/24 lookup 101 && ip ro add default via 10.0.0.1 table 101

另外记的配置相关内核参数

DNAT 规则
iptables -t nat -A PREROUTING -d 172.16.0.212 -j DNAT --to-destination 10.8.0.6

#入带宽限制2M
iptables -A FORWARD -d 10.8.0.6 -m limit --limit 176/s --limit-burst 140 -j ACCEPT
iptables -A FORWARD -d 10.8.0.6 -j DROP

#出带宽限制2M+100M流量
iptables -A FORWARD -s 10.8.0.6 -m limit --limit 176/s --limit-burst 140 -m quota --quota 102400000 -j ACCEPT
iptables -A FORWARD -s 10.8.0.6 -j DROP

 

#入带宽限制4M
iptables -A FORWARD -d 10.8.0.6 -m limit --limit 352/s --limit-burst 281 -j ACCEPT
iptables -A FORWARD -d 10.8.0.6 -j DROP

#出带宽限制4M+100M流量
iptables -A FORWARD -s 10.8.0.6 -m limit --limit 352/s --limit-burst 281 -m quota --quota 102400000 -j ACCEPT
iptables -A FORWARD -s 10.8.0.6 -j DROP

发表评论

邮箱地址不会被公开。 必填项已用*标注