Skip to main content

Ubuntu iptables端口转发

端口转发设置

本地端口转发

//localhost:8080 转发到 localhost:80

sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080

跨机端口转发

//启用ip转发功能

sudo vi /etc/sysctl.conf net.ipv4.ip_forward=1 sudo sysctl –p

//172.16.1.8:80 转发到 localhost:1234

sudo iptables -t nat -A PREROUTING -p tcp --dport 1234 -j DNAT --to-destination 172.16.1.8:80 sudo iptables -t nat -A POSTROUTING -d 172.16.1.8 -p tcp --dport 80 -j MASQUERADE sudo iptables -I FORWARD -d 172.16.1.8 -p tcp –dport 80 -j ACCEPT sudo iptables -I FORWARD -s 172.16.1.8 -p tcp –sport 80 -j ACCEPT

iptables基础知识

Filter表:过滤数据包

  1. INPUT 链:过滤所有目标地址是本机的数据包(对进入本机数据包的过滤)
  2. OUTPUT 链:过滤所有本机产生的数据包(对源地址得数据包的过滤)
  3. FORWARD 链:过滤所有路过本机的数据包(源地址和目标地址都不是本机的数据包。

NAT表:网络地址转换

  1. PREROUTING 链:数据包到达防火墙时改变包的目的地址。
  2. OUTPUT 链:改变本地产生数据包的目标地址。
  3. POSTROUTING 链:在数据包离开防火墙时改变数据包的源地址。

iptables常用命令

//查看iptables链表规则(不指定 –t 默认为Filter表)
sudo iptables -L –n

//清除Filter表某条规则链中所有规则
sudo iptables –F INPUT

//清除Filter表所有规则链的规则
sudo iptables –F

//清除Filter表用户自定链中的规则
sudo iptables –X

//在某个规则链末尾新增一条规则
sudo iptables -A INPUT …

//从某个规则链中删除一条规则
sudo iptables -D INPUT …

//从某个表链插入一条规则,原本该位置上的规则往后顺移
sudo iptables -I INPUT 1 --dport 80 -j ACCEPT

//查看NAT表规则信息
sudo iptables -t nat –L

//清除NAT表所有规则链的规则
sudo iptables -F -t nat
sudo iptables -X -t nat

//在NAT表某个规则链末尾新增一条规则
sudo iptables -t nat -A PREROUTING …

//从NAT表某个规则链中删除一条规则
sudo iptables -t nat -D PREROUTING …

常用匹配参数

  • 参数 -p, –protocol
    指定通讯协议类型,如tcp、udp、icmp 等,使用 all 关键词指定所有类型
  • 参数 -s, --src, --source
    来源 IP地址,可以是单个IP或网络(-s 192.168.1.0/24)
  • 参数 -d, --dst, –destination
    目的 IP地址,同上
  • 参数 --sport, --source-port
    数据包的来源端口号,可以是单个端口或端口范围(--sport 8010:8080)
  • 参数 --dport, --destination-port
    数据包的目的端口号,同上
  • 参数 -i, --in-interface
    指定数据包从哪个网口进入,支持通配字符 +  (-i eth+ 表示所有的 ethernet 网卡)
  • 参数 -o, --out-interface
    指定数据包从哪个网口发出,同上

常用处理参数

参数 –j :用来指定要进行的处理动作

  • ACCEPT 将封包放行,进行完此处理动作后,将不再比对其它规则
  • REJECT 拦阻该封包,并传送封包通知对方
  • DROP 丢弃封包不予处理,进行完此处理动作后,将不再比对其它规则
  • REDIRECT 将封包重新导向到另一个端口(PNAT),进行完此处理动作后,将 会继续比对其它规则
  • MASQUERADE 改写封包来源 IP 为防火墙 NIC IP,可以指定 port 对应的范围,进行完此处理动作后,直接跳往下一个规则炼(mangle:postrouting)
  • SNAT 改写封包来源 IP 为某特定 IP 或 IP 范围,可以指定 port 对应的范围,进行完此处理动作后,将直接跳往下一个规则炼(mangle:postrouting)
  • DNAT 改写封包目的地 IP 为某特定 IP 或 IP 范围,可以指定 port 对应的范围,进行完此处理动作后,将会直接跳往下一个规则炼(filter:input 或 filter:forward)
  • MIRROR 镜射封包,也就是将来源 IP 与目的地 IP 对调后,将封包送回,进行完此处理动作后,将会中断过滤程序
  • QUEUE 中断过滤程序,将封包放入队列,交给其它程序处理

Comments

Popular posts from this blog

关于VMware虚拟网卡网络问题的处理

本篇适用情形: VMware虚机拷贝或移动后网络问题 其它虚机格式转换VMware虚机后网络问题 VMware虚机虚拟网卡设置问题 修改VMware虚机虚拟网卡类型 Ubuntu 16.04虚拟机网卡设置问题 Highlight: /etc/network/interface       //网卡配置文件(ubuntu) lspci -vk lsmod ifconfig –a ethtool resolvconf -u 正文: 【 Step1】 在着手解决问题之前,先查看一下VMware虚机的网卡配置是否正常。打开虚机目录下的 xxx.vmx   文件,找到虚拟网卡的配置信息(第1块网卡通常为ethernet0),例如: VMware虚拟网卡有以下几种设备类型: ethernet0.virtualDev = "vlance"          //AMD PCNet AM79C970A 10/100Mbps ethernet0.virtualDev = "e1000"          //Intel(R) 82545EM PRO/1000 PCI ethernet0.virtualDev = "e1000e"        //Intel(R) 82545L PRO/1000 PCIe ethernet0.virtualDev = "vmxnet"        //VMware PCI Ethernet Adapter VMware Workstation / Player 建的虚机默认“vlance” 是一块比较老的百兆网卡,可以修改为e1000或e1000e(这两者的区别可以看做一块是pci网卡一块是pcie接口网卡);没有正常安装vmware tools的情况下,不建议改为“vmxnet”。 以下...

Bitwarden 配置 Let’s Encrypt 证书

由于在内网环境部署的Bitwarden,不能通过安装脚本自动申请 Let’s Encrypt 的证书。 起初我用了一个自签名证书,发现特别不好使,虽然在firefox 跟 chrome 内核的浏览器上都能通过插件访问,但必须添加信任才行,特别是用Bitwarden Desktop 客户端连的时候,一直报错,可能是不认自签名证书。 于是琢磨了下怎么手动申请Let’s Encrypt的证书用于内网,对过程简单梳理如下。 自签名证书 | Self-Signed Certificate 如果你在内网环境只需要自签名证书,可以参考Bitwarden的帮助文档( Installing and depoying )进行设置: 1、生成自签名证书: //一条命创建私钥和证书: openssl req -x509 -newkey rsa:4096 -sha256 –nodes -days 10950 \    -keyout privite.key -out identity.crt \    -subj "/C= US /ST= New York /L= New York /O= Company Name /OU= CREAST /CN= bw.creast.win " 将生成的文件放到 /ssl 目录下: privite.key     ~/bwdata/ssl/ bw.creast.win/private.key identity.crt      ~/bwdata/ssl/ bw.creast.win/identity.crt 2、生成.pfx格式证书文件: //一条命令将前面生成的私钥和证书打包成需要的pfx格式文件 openssl pkcs12 -export -out ./ identity.pfx -inkey privite.key \    -in identity.crt -certfile identity.crt -passout pass: IDENTITY_CERT_PASSWORD ...

Tor洋葱路由的设置与使用

先说明一下,这里只是利用Tor来访问被GWF屏蔽的优秀服务(如Wikipedia、Blogger、GG App等),并不侧重于如何匿名访问网络。以下Tor设置方法适用于: MS Windows(2000/XP/Vista/Server)系统 第一步:下载并安装Tor 关于Tor(The Onion Router,洋葱路由)的工作原理,可以参考枪旗工作室的说明 ( http://tcno.net/doc/tor/#para1 )。在Windows下安装配置Tor已经非常容易了,直接下载这样一个Tor的Windows 捆绑软件包( Vidalia-Tor-Privoxy Bundle ),其中已经预先配置好这些软件能够一同工作。 安装前可以看到套件捆绑了哪些软件:Tor、Vidalia(Tor 的一个图形用户界面)和 Privoxy(Web 代理软件)、Torbutton(Firefox浏览器插件)全选这些软件进行安装。 安装完成后会自动运行Vidalia,在弹出的控制面板上可以看到当前的状态,Tor已经运行了,此时不需要再进行其它设置了。 第二步:配置浏览器使用Tor 如果使用 Firefox 浏览器,Bundle里已经附带了 Torbutton 插件 ,打开/重启Firefox就会在右下角显示Tor Enabled/Disabled,单击它可以选择是否开启Tor代理功能。 对于 Internet Explorer 没有现成的插件可用,需要手动配置代理设置,也很容易。 菜单位置 工具 - Internet 选项 - 连接 - 局域网设置 - 代理服务器 - 高级 - 服务器 在代理理服务器地址栏里填入 "localhost",端口为 "8118"(Privoxy不支持FTP代理,填不填都无所谓了);注意套接字SOCKS代理的端口为 "9050",如果有其它选项,请选择Socks5,然后"确定"即可。 对于 Maxthon ,如果对IE设置了Tor可以选择“使用IE代理设置”,或者手动添加一个代理列表,内容与上面填写的一样,然后选择应用就可以了。 这里说明一下 Privoxy 的作用,因为当直接使用 SOCKS 代理时,浏览器会泄露...