1. 平台介绍
-
Ubuntu 20.04 LTS
-
Armv7
2. 端口管理
进行端口转发之前,要先对端口进行一系列设置
2.1 安装ufw
sudo apt install ufw
2.2 开启22端口
开启ufw之后,默认的22端口不会自动打开,使用SSH的话需要手动打开
sudo ufw allow 22
如果需要关闭端口
sudo ufw delete allow 22
查看端口开启状态
sudo ufw status
2.3 开启ufw
sudo ufw enable
sudo ufw default deny # 默认关闭所有访问
3. 端口转发
3.1 开启Linux内核转发功能
编辑/etc/sysctl.conf
文件
将net.ipv4.ip_forward = 0
修改为:net.ipv4.ip_forward = 1 #开启内核转发功能
下面的命令使得配置修改生效
sudo sysctl -p
3.2 添加iptables规则
此处使用iptables
进行转发
这里以8899
端口为例,将192.168.0.108的数据转发到192.168.3.51,反之从192.168.5.1转发到192.168.0.108
sudo iptables -t nat -A PREROUTING -p udp --dport 8899 -j DNAT --to-destination 192.168.3.53:8899
sudo iptables -t nat -A POSTROUTING -p udp -d 192.168.3.53 --dport 8899 -j SNAT --to-source 192.168.0.108
如果需要删除iptables规则
首先列出已添加的规则
sudo iptables -t nat -L -n
示例:
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
DNAT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 to:192.168.3.53:80
DNAT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:8899 to:192.168.3.53:8899
DNAT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:8899 to:192.168.3.53:8899
DNAT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:554 to:192.168.3.53:554
DNAT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:554 to:192.168.3.53:554
DNAT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:3702 to:192.168.3.53:3702
DNAT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:3702 to:192.168.3.53:3702
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
MASQUERADE all -- 0.0.0.0/0 0.0.0.0/0
SNAT tcp -- 0.0.0.0/0 192.168.3.53 tcp dpt:80 to:192.168.0.108
MASQUERADE all -- 0.0.0.0/0 0.0.0.0/0
SNAT tcp -- 0.0.0.0/0 192.168.3.53 tcp dpt:8899 to:192.168.0.108
SNAT udp -- 0.0.0.0/0 192.168.3.53 udp dpt:8899 to:192.168.0.108
SNAT udp -- 0.0.0.0/0 192.168.3.53 udp dpt:554 to:192.168.0.108
SNAT udp -- 0.0.0.0/0 192.168.3.53 udp dpt:3702 to:192.168.0.108
SNAT tcp -- 0.0.0.0/0 192.168.3.53 tcp dpt:3702 to:192.168.0.108
SNAT tcp -- 0.0.0.0/0 192.168.3.53 tcp dpt:554 to:192.168.0.108
比如我要删除这条规则
DNAT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:3702 to:192.168.3.53:3702
因为其在PREROUTING
链里,然后其位于第7个,所以执行
iptables -t nat -D PREROUTING 7
如果我要删除这条规则
SNAT tcp -- 0.0.0.0/0 192.168.3.53 tcp dpt:554 to:192.168.0.108
因为其在POSTROUTING
链里,然后其位于第7个,所以执行
iptables -t nat -D POSTROUTING 7
3.3 放行转发命令(重要)
此处因为使用无线网卡进行转发,所以其网卡名为wlan0
# 放行Forward的数据包
iptables -I FORWARD -i wlan0 -j ACCEPT
# 开启网卡混杂模式(允许任意流向的数据包)
iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
3.4 开启端口
使用上面配置的ufw进行端口管理
由于我转发了8899端口,因此将8899端口打开
sudo ufw allow 8899
4. 查看状态
4.1 查看端口开启状态
sudo ufw status
3.6 列出转发规则
sudo iptables -t nat -L -n
执行命令后列出的和添加iptables中删除iptables规则
里面的示例一样。